UML et Java - Java - Programmation
Marsh Posté le 18-02-2006 à 12:16:03
Lors d'une association de A vers B, A n'est pas responsable de B alors que lors d'une agrégation A est responsable de B.
Marsh Posté le 18-02-2006 à 12:29:24
C'est à dire ?
Prenons l'exemple d'un "client" et d'un "pays".
Chaque Client est rattaché à un Pays.
Agrégation ou Association ? (Pas composition car le cycle de vie n'est pas le même)
Marsh Posté le 18-02-2006 à 13:31:23
Association ->
L'objet client ne modifie pas l'objet pays.
Marsh Posté le 18-02-2006 à 13:33:06
Et en Java (niveau code)
La différence se fait où ? que dans les méthodes ?
Marsh Posté le 19-02-2006 à 10:00:47
En faite en java y a pas de différence, mais c'est juste pour respecter les règles de l'uml (il ne faut pas oublier que l'uml permet de générer du code dans plusieurs langages).
Concrètement pour toi l'intérêt de respecter c'est d'être le plus souple possible.
C'est à dire que si compte finalement programmer en C++ pour une raison ou pour une autre sa changera des choses au niveau du code.
Typiquement tu verras apparaître un "const" derrière la définition de certaines méthodes.
Marsh Posté le 19-02-2006 à 10:06:12
pj_crepes a écrit : En faite en java y a pas de différence, mais c'est juste pour respecter les règles de l'uml (il ne faut pas oublier que l'uml permet de générer du code dans plusieurs langages). |
Ok
Marsh Posté le 19-02-2006 à 11:25:37
L'intérêt d'UML n'est il pas de fournir une langage de communication compris par tous (formés à l'UML ça va de soit) avant d'être un instrument exploité par les RAD ?
Marsh Posté le 20-02-2006 à 11:10:33
MazdaX a écrit : J'ai une question de conception : |
_ Agrégation (losange vide) : la classe a de simple références vers une autre classe A -> B, si on détruit l'instance A alors l'instance B existe toujours mais risque d'être orpheline (zombie, existante mais plus utilisée par personne, donc "morte" mais pas au courant par contrôlée par une autre).
_ Composition (losange plein) : la classe contient complètement une autre classe (classe interne), si on détruit l'instance A alors l'instance B est détruite aussi.
En gros pour le choix d'aggrégation contre composition, si c'est une voiture composée (entre autres) de roues qui crame un soir de nouvel an tout ce qui la compose doit être détruit aussi, mais si c'est un immeuble insalubre qui saute ses habitants ne doivent pas sauter avec (si possible :-( ). Donc pour moi pour une relation A -> B donnée, si la destruction de A doit amener celle de B c'est une composition, sinon une aggrégation.
Marsh Posté le 20-02-2006 à 18:38:11
La question portait sur la différence entre association et agrégation et non entre agrégation et composition
Marsh Posté le 20-02-2006 à 19:39:04
slash33 a écrit : La question portait sur la différence entre association et agrégation et non entre agrégation et composition |
Exact, mea culpa, alors je dirais que l'agrégation c'est une référence vers une collection alors que l'association c'est une référence vers une classe seule.
Marsh Posté le 20-02-2006 à 20:48:26
Rien de tel qu'un retour aux sources:
http://uml.free.fr/cours/p15.html
http://uml.developpez.com/faq/?page=DC#DC_Agregation03
Plus académique:
http://www.math-info.univ-paris5.f [...] sCours.pdf
Marsh Posté le 23-02-2006 à 21:30:41
et "Java Tête la Première" ainsi que "Design Patterns Tête la Première" aux éditions O'Reily
Marsh Posté le 18-02-2006 à 12:11:54
J'ai une question de conception :
Quand choisir une agrégation (losange vide) au lieu d'une association ?
Je n'arrive pas à saisir la subtilité entre les 2 ...