UML et Java

UML et Java - Java - Programmation

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 ...

Reply

Marsh Posté le 18-02-2006 à 12:11:54   

Reply

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.

Reply

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)

Reply

Marsh Posté le 18-02-2006 à 13:31:23    

Association ->
 
L'objet client ne modifie pas l'objet pays.

Reply

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 ?

Reply

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.

Reply

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).
 
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.


 
Ok  :jap:

Reply

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 ?


Message édité par slash33 le 19-02-2006 à 11:25:55
Reply

Marsh Posté le 20-02-2006 à 11:10:33    

MazdaX a écrit :

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 ...


 
_ 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.

Reply

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

Message cité 1 fois
Message édité par slash33 le 20-02-2006 à 18:38:33
Reply

Marsh Posté le 20-02-2006 à 18:38:11   

Reply

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.

Reply

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


Message édité par slash33 le 20-02-2006 à 20:54:58
Reply

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 ;)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed