Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2716 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  traduction du diagrame de classe UML en JAVA

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

traduction du diagrame de classe UML en JAVA

n°2043576
camloc
Posté le 21-12-2010 à 17:51:19  profilanswer
 

Bonjour,
 
j'ai un problème lors de la traduction de mon diagramme uml en java.
 
j'ai un diagramme de classes avec 2 classes (une classe personne et une class hotel) et une flèche bidirectionnelle. Une personne peut avoir 1 ou plusieurs hotels et un hotel peut appartenir à une ou plusieurs personnes.  
 
Lors de la traduction de mon diagrmme en java, j'ai dans la classe hotel une liste de personnes et dans la classe personne une liste d'hotels.
 
donc pour créer une personne j'ai besoin de savoir sa liste d'hotel et pour créer un hotel j'ai besoin de savoir la liste de personnes correspondantes.
 
Au final je ne peux créer l'un sans l'autre.
 
comment remedier à ce problème ?
 
Merci pour vos réponses

mood
Publicité
Posté le 21-12-2010 à 17:51:19  profilanswer
 

n°2043578
kadreg
profil: Utilisateur
Posté le 21-12-2010 à 17:54:18  profilanswer
 

en faisant en sorte qu'une modification d'un coté se synchronise aussi de l'autre coté pour que les deux listes soient coherentes.  
 
Sinon, tu peux dire qu'un seul coté est réel, et l'autre va visiter le monde entier pour reconstruire dynamiquement la liste :op


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°2043591
camloc
Posté le 21-12-2010 à 18:32:51  profilanswer
 

comment considérer qu'un coté est réel et pas l'autre? car d'un coté j'ai besoin de savoir pour une personne la liste de ses hotels et de l'autre coté j'ai besoin de savoir pour un hotel la liste des personnes
 
maerci

n°2043595
exhortae
Membre du Cartel des Médecins
Posté le 21-12-2010 à 18:41:44  profilanswer
 

Je ne vois pas où est le problème.

n°2043596
kadreg
profil: Utilisateur
Posté le 21-12-2010 à 18:41:45  profilanswer
 

en ayant une vraie liste du coté réel, et juste des accesseurs qui vont requeter pour le coté virtuel :o


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°2043597
camloc
Posté le 21-12-2010 à 18:49:53  profilanswer
 

le problème c'est que pour créer un objet hotel j'ai besoin au préalable d'une liste de personnes et pour créer une personne j'ai besoin au préalable d'une liste d'hotels. ca fait une sorte de boucle

n°2043598
camloc
Posté le 21-12-2010 à 18:51:39  profilanswer
 

merci kradeg. Etant débutante en JAVA j'irai voir ce qu'est un ascenseur.

n°2043601
exhortae
Membre du Cartel des Médecins
Posté le 21-12-2010 à 18:58:21  profilanswer
 

camloc a écrit :

le problème c'est que pour créer un objet hotel j'ai besoin au préalable d'une liste de personnes et pour créer une personne j'ai besoin au préalable d'une liste d'hotels. ca fait une sorte de boucle


Quel est l'intérêt d'avoir 1 personne => 1..* hotel et 1 hotel => 1..* personne

 

Autant avoir du 0..* de chaque côté de la relation et éviter de fermer ton modèle a certaines possibilités (genre 1 hotel dont les titres de propriété ont cramés lors d'un incendie et qui n'a donc plus de propriétaire, ou encore une personne qui a perdu tous ces hôtels suite à une faillite). De toutes les façon et en règle générale il vaut mieux toujours remplacer les relations 1..* en 0..* pour éviter d'avoir un modèle qui ne correspond pas à la réalité à un moment donné.

 

De plus rien ne t'empêche d'avoir une liste vide.


Message édité par exhortae le 21-12-2010 à 18:59:06
n°2043634
bugbreeder
Posté le 22-12-2010 à 04:56:58  profilanswer
 

camloc a écrit :

comment considérer qu'un coté est réel et pas l'autre? car d'un coté j'ai besoin de savoir pour une personne la liste de ses hotels et de l'autre coté j'ai besoin de savoir pour un hotel la liste des personnes


 
Alors il te faut des listes des 2 côtés : "class Personne... List<Hotel> hotels;" et "class Hotel... List<Personne> personnes;".
 
Quand je dis "List" ça devrait être un "Set" plutôt pour éviter les doublons.


---------------
When injustice becomes law, resistance becomes duty (Thomas Jefferson)
n°2043698
Ju -
Posté le 22-12-2010 à 12:02:24  profilanswer
 

Bonjour,
Une petite idée, surement améliorable, pour supprimer cette double dépendance...
La relation entre un client et un hotel caractérise la notion de contrat, soit d'interface (pseudo-code hein):
 

Code :
  1. Interface iLouable {
  2.    boolean isOccupe(); 
  3.    boolean setOccupe(boolean) throws DejaOccupeException;
  4. }
  5. class Chambre implements iLouable {
  6.    boolean isOccupe() {}
  7.    boolean setOccupe(boolean) {}
  8.    Hotel getHotel(); // on peut retrouver hotel à partir de chambre
  9.    Client getClient(); // occupant actuel de chambre
  10. }
  11. class Hotel {
  12.    iLouable chambres[]; // liste de chambres   
  13. }
  14. class Personne {
  15. }
  16. class Client extends Personne {
  17.    iLouable chambres[]; // un client 0..n chambres: on peut retrouver la chambre et donc le ou les hotel(s) depuis le client
  18. }


 
Bon courage!


Message édité par Ju - le 22-12-2010 à 14:26:40
mood
Publicité
Posté le 22-12-2010 à 12:02:24  profilanswer
 

n°2043780
camloc
Posté le 22-12-2010 à 17:09:35  profilanswer
 

merci budbreeder,
 
j'ai justement crée deux listes: "class Personne... List<Hotel> hotels;" et "class Hotel... List<Personne> personnes;".
 
le problème de la double dépendance s'est posée lors de la création des objets pour tester les méthodes de chaque classe.
 
j'ai opter pour la solution suivante:
 
Créer des hotels, sans personnes.
créer des personnes, avec leur liste d'hotels.  
Et mettre à jour les listes de personnes des hotels.  

n°2043781
camloc
Posté le 22-12-2010 à 17:13:38  profilanswer
 

merci Ju
 
je n'ai pas de classe Chambre. J'ai deux classes une classe personne et une classe Hotel et une relation bidirectionnelle entre les deux classes
 
une personne possède 1 ou plusieurs Hotels et un Hotel est possèdé par 1 ou plusieurs personnes


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  traduction du diagrame de classe UML en JAVA

 

Sujets relatifs
boutons en javaDrop and drag - Java - Jeux de dame
Java et arraylist d'objets[JAVA] Probleme de generation de classes avec PowerAMC
dfSAUVEZ MOI AVEC JAVA, changer de fond écran et labels
[JAVA] Caster un objet a une classe generique ?[Java]Petit problème interface graphique
Plus de sujets relatifs à : traduction du diagrame de classe UML en JAVA


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR