Acceder à un boolean - Java - Programmation
Marsh Posté le 24-11-2009 à 02:41:39
Je n'ai pas compris ce que Formula1 vient faire là dedans et à quoi peuvent bien servir ces booléens.
Ca sent le mauvais design! Essaye de faire une belle modélisation qui ne demande pas à faire de la réflection.
Marsh Posté le 24-11-2009 à 09:18:59
M Orthographe a écrit : Bonjour, |
y a comme une contradiction là.
Marsh Posté le 24-11-2009 à 09:37:53
Je crois qu'il a des classes qui portent le même nom que des booléens stockés dans une autre classe et en fonction du type de la classe passée en paramètre à une méthode implémentée on se sait où, il veut accéder à tel ou tel booléen. Bref, un truc tordu.
M Orthographe, pour qu'on puisse t'aider en te conseillant un meilleur design, explique-nous le rôle et fonctionnement de ton application et sa structure globale.
Marsh Posté le 24-11-2009 à 15:06:54
Tout d'abord merci pour vos réponses, je vais simplifer les choses.
En fait j'ai un boolean dont le nom est un nom de classe.
Ainsi j'aimerai acceder à ce boolean via une string (en fait via monObj.getClass().getNom()
en gros si l'objet est une instance de la classe Cuisine
je dois regarder le boolean dont le nom est Cuisine...
merci
Marsh Posté le 24-11-2009 à 15:25:23
M Orthographe a écrit : Tout d'abord merci pour vos réponses, je vais simplifer les choses. |
comme dit plus haut, ca sent très fort le problème de modélisation...
Marsh Posté le 24-11-2009 à 15:41:04
J'ai une classe Salle
Soit c'est une Cuisine, soit une Chambre
En fonction du type de contrat du client,
Dans la classe type1 j'ai Cuisine=false; par exemple
Comment savoir si il peut utiliser la Cuisine ?
le fait est que mon appli est extensible donc je ne connais pas toutes les classes
donc en fait je voudrais verifier si
mon objet Salle (qui prend donc différents type (Cuisine chambre salledebains ect...) est autorisé pour un client avec un type de contrat
Me suivez-vous ?
Marsh Posté le 24-11-2009 à 15:45:13
a quoi sert ton boolean? a dire si la salle est occupée par exemple? dans ce cas la, tu crée un boolean occupe dans la classe Salle, et tu pourras checker le contenu de masalle.occupe, que cette salle soit une cuisine ou une chambre...
ce sont les principes basique de l'héritage en programmation. je t'invite à les revoir.
Marsh Posté le 24-11-2009 à 15:55:24
non le boolean sert à dire si dans ce type précis de contrat, l'utilisateur à le droit d'utiliser la salle particuliere
Marsh Posté le 24-11-2009 à 15:56:31
c'est pas le problème. j'ai considéré que le boolean servait à l'occupation de la salle pour l'exemple, mais qu'il serve à n'importe quoi le principe est le même.
Marsh Posté le 24-11-2009 à 16:00:52
bien non. comment savoir si le boolean cuisine dans la classe typeAbonnement est a true ou false en n'ayant que le nom de l'objet à prendre en compte ?
Marsh Posté le 24-11-2009 à 16:02:20
ou si mes problèmes te choquent je veux juste savoir la synthaxe pour ecrire
boolean b = true
String mastring = "b"
if(mastring)
evidemment if(mastring) ne fonctionne pas
Marsh Posté le 24-11-2009 à 16:08:52
M Orthographe a écrit : ou si mes problèmes te choquent je veux juste savoir la synthaxe pour ecrire |
Marsh Posté le 24-11-2009 à 16:09:27
tu faisait du PHP avant
Marsh Posté le 24-11-2009 à 16:18:24
oui
mais ça doit bien etre possible de lire la valeur d'un boolean dont le nom est passé en String non?
Marsh Posté le 24-11-2009 à 16:19:32
M Orthographe a écrit : oui mais ça doit bien etre possible de lire la valeur d'un boolean dont le nom est passé en String non? |
Non. Et même si ça l'était, on te dirait que ça l'est pas (comme çà t'es bien avancé: tu sais toujours pas si c'est possible), c'est aussi dégueulasse que sans intérêt, si t'as besoin de trouver une valeur indexée par une chaîne de caractère tu utilises une map. Mais dans ce cas précis, je dirais surtout que t'en as pas besoin et que tu fais n'importe quoi.
Marsh Posté le 24-11-2009 à 16:19:55
M Orthographe a écrit : oui |
C'est déjà crétin en php, alors en java...
Marsh Posté le 24-11-2009 à 16:22:00
je ne vois pas d'autre solution que de faire ça
Comment savoir si le boolean Cuisine est a true dans le type contrat 1
quand je traite un objet Cuisine et savoir si le boolean Chambre est a true quand je traite un objet Chambre ?
Marsh Posté le 24-11-2009 à 16:24:50
M Orthographe a écrit : je ne vois pas d'autre solution que de faire ça |
Marsh Posté le 24-11-2009 à 16:27:25
Vous pouvez m'aider au lieu de rire s'il vous plait ? c'est un forum d'aide non?
Marsh Posté le 24-11-2009 à 16:28:28
M Orthographe a écrit : Vous pouvez m'aider au lieu de rire s'il vous plait ? c'est un forum d'aide non? |
La réponse est non. Aux deux questions.
Marsh Posté le 24-11-2009 à 16:35:12
M Orthographe a écrit : c'est un forum d'aide non? |
justement, on t'aide : on te dit que tu fais de la merde, et t'expliquer comment faire de la grosse merde serait le contraire de t'aider
reprends donc par rapport a ton besoin, au lieu de continuer de fouiller dans ta solution khakha
Marsh Posté le 24-11-2009 à 16:44:04
ReplyMarsh Posté le 24-11-2009 à 16:47:12
Moktar1er a écrit : J'ai toujours pas compris ce qu'il voulait faire |
Du php. Version crado.
Marsh Posté le 24-11-2009 à 16:48:56
Moktar1er a écrit : J'ai toujours pas compris ce qu'il voulait faire |
Moi non plus, mais vu les parties lisibles c'est pas bien ce qu'il veut faire
Marsh Posté le 24-11-2009 à 16:53:58
M Orthographe a écrit : J'ai une classe Salle |
Il faut que tu te tournes vers une solution où dans la classe représentant le type de contrat, tu ais une liste des salles autorisées.
Les éléments de cette liste peuvent être l'identifiant du type de salle par exemple
Pour la vérification d'autorisation, il ne te restera plus qu'a voir si l'identifiant de la salle en paramètre est dans la liste
Code :
|
Marsh Posté le 24-11-2009 à 16:57:05
Je vais reformuler.
J'ai une interface Salle.
Une classe SalleImplemente qui implémente salle.
J'ai 2 classes Salon et Cuisine qui extendent SalleImplemente.
J'ai une interface TypeContrat.
Une classe TypeContratImplemente qui implémente TypeContrat.
J'ai 2 classes TypeContrat1 et TypeContrat2 qui extendent TypeContrat.
Une classe client dont l'attribut qui nous intéresse ici est
TypeContrat monContrat;
Dans mes types de contrats (TypeContrat1 et TypeContrat2) j'aimerais spécifier des restrictions quant à l'utilisation des salles par le client
Ex : TypeContrat1 : Salon autorisé mais Cuisine non, et dans l'autre Salon et Cuisine autorisés.
Je ne sais pas comment faire, j'ai mis des boolean mais c'est mal donc je souhaiterais un peu d'aide.
Dans mon appli, à un moment j'arrive à récuperer le type de contrat du client, et le nom de la salle, je ne vois pas comment faire le lien
Merci
Marsh Posté le 24-11-2009 à 17:02:11
Bidem a écrit : tu ais une liste des salles autorisées |
Un Set
Marsh Posté le 24-11-2009 à 17:20:39
ReplyMarsh Posté le 24-11-2009 à 17:22:10
Citation : La classe java.util.Vector est une classe héritée de Java 1. Elle n'est conservée dans l'API actuelle que pour des raisons de compatiblité ascendante et elle ne devrait pas être utilisée dans les nouveaux programmes. Dans tous les cas, il est préférable d'utiliser un ArrayList. |
Marsh Posté le 24-11-2009 à 17:23:42
Comme le conseil Masklinn, utilise un Set
EDIT : et un peu de doc pour aller avec Implémentations de Set
donc dans ton cas, le mieux a priori, c'est un Hashset
Marsh Posté le 24-11-2009 à 17:23:45
M Orthographe a écrit : C'est mieux de mettre la liste en List<String> ou un Vector<String> |
C'est mieux de mettre aucun des deux. Set<Class>
Marsh Posté le 24-11-2009 à 23:31:32
J'ai pas compris le lien entre Contrat et Salle.
Ta classe Contrat contient des références vers les salles incluses dans le contrat, c'est ça?
Dans ce cas oui, tu stockes tout ça dans un Set<Salle> et puis basta.
Marsh Posté le 25-11-2009 à 12:10:45
lbo_booléen est une booléen = Vrai
lch_chaine est une chaine
len_entier est un entier
len_entier = lbo_booléen
lch_chaine = len_entier
lbo_booléen = lch_chaine
lbo_booléen = ?
a) 1
b) Vrai
c) Lol
d) 0
e) Erreur
Marsh Posté le 23-11-2009 à 23:19:19
Bonjour,
J'ai un boolean dont le nom est "Cuisine", un autre dont le nom est "Chambre".
Dans une classe Formula1 j'ai
Cuisine = false;
Chambre = true;
par défaut dans le constructeur.
Chambre et Cuisine héritent de Salle
Bien maintenant je souhaite faire une méthode
public boolean verifAutorisation(Salle s)
et dans cette méthode je voudrais savoir la valeur du boolean dont le nom est s.getClass().getName()
en gros si je lui envoie une cuisine, je veux vérifier si le boolean dont le nom est cuisine est true ou false.
Merci bien