traduction du diagrame de classe UML en JAVA - Java - Programmation
Marsh Posté le 21-12-2010 à 17:54:18
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 p
Marsh Posté le 21-12-2010 à 18:32:51
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
Marsh Posté le 21-12-2010 à 18:41:45
en ayant une vraie liste du coté réel, et juste des accesseurs qui vont requeter pour le coté virtuel
Marsh Posté le 21-12-2010 à 18:49:53
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
Marsh Posté le 21-12-2010 à 18:51:39
merci kradeg. Etant débutante en JAVA j'irai voir ce qu'est un ascenseur.
Marsh Posté le 21-12-2010 à 18:58:21
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.
Marsh Posté le 22-12-2010 à 04:56:58
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.
Marsh Posté le 22-12-2010 à 12:02:24
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 :
|
Bon courage!
Marsh Posté le 22-12-2010 à 17:09:35
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.
Marsh Posté le 22-12-2010 à 17:13:38
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
Marsh Posté le 21-12-2010 à 17:51:19
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