Considérez les deux diagrammes ci-dessous. Celle du haut contient une flèche simple à l'extrémité droite et celle du bas, une flèche avec un diamant à l'extrémité gauche et une flèche simple à l'extrémité droite. Le grand livre GoF utilise ces deux types de diagrammes.
Je veux comprendre ce que signifie le diamant dans le second cas, et lequel de ces deux donne une association plus forte entre Customer
et Order
.
La classe Customer
est-elle responsable du cycle de vie de la classe Order
dans l'un ou l'autre cas?
S'il n'y a pas de diamant , alors nous avons une simple association .
Si le losange est laissé vide , cela signifie qu'il s'agit d'une agrégation . Cette relation est plus forte qu'une simple association. Dans ce cas, un client regroupe des commandes.
Si le diamant est noir , cela signifie qu'il s'agit d'une composition , qui est encore plus fort qu'une agrégation car la classe agrégée ne peut pas être agrégée par d'autres classes. Sa "vie" dépend du conteneur.
Je pense que ça s'explique un peu plus clairement, à:
Le client et la commande sont des relations de composition "a-a" car, si le client cesse d'exister, sa commande l'est aussi. Par conséquent, il existe une dépendance de cycle de vie entre le conteneur (client) et les instances au sein de ce conteneur (commande). Lorsque le conteneur cesse d'exister, toutes ses instances font de même.
D'autre part, si nous disons qu'un client a un livre. Dans ce cas, nous avons une relation d'agrégation "has-a". Parce que si le client cesse d'exister, le livre est toujours disponible.
Cela signifie l'agrégation. De wikipedia:
En UML, il est représenté graphiquement sous forme de losange creux à l'extrémité de la classe contenante de l'arbre avec une seule ligne reliant la classe contenue à la classe contenante. L'agrégat est sémantiquement un objet étendu traité comme une unité dans de nombreuses opérations. , bien que physiquement, il est composé de plusieurs objets de moindre importance.