Que signifie un signe de diamant dans les diagrammes de classe UML?

Considérez les deux diagrammes ci-dessous. Celui du haut contient une simple flèche à l'extrémité droite, et celui du bas contient une flèche avec un diamant à l'extrémité gauche et un simple flèche à l'extrémité droite. Le Grand Livre GoF {[6] } a des usages de 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 pour le cycle de vie de la classe Order dans l'un des deux cas?

entrez la description de l'image icientrez la description de l'image ici

48
demandé sur nbro 2013-02-28 21:17:37

3 réponses

S'il n'y a pas de diamant, alors nous avons une association simple.

Si le diamant 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 agrège les commandes.

Si le diamant est noir, cela signifie qu'il s'agit d'une composition, qui est encore plus forte 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 c'est expliqué un peu peu plus clairement, à:

75
répondu C.Champagne 2015-11-27 23:13:07

Le client et la commande est une relation de composition "A-a" parce que si le client cesse d'exister, sa commande le fait également. Par conséquent, il existe une dépendance du cycle de vie entre le conteneur (client) et les instances de ce conteneur (commande). Lorsque le conteneur cesse d'exister, toutes ses instances le font.

D'autre part, si nous disons qu'un client a un livre. Dans ce cas, nous avons une "a une" relation d'agrégation. Parce que si le client cesse d'exister, le livre est toujours disponible.

10
répondu Rubens Gomes 2014-08-10 15:57:24

Cela signifie l'agrégation. De wikipedia:

En UML, il est représenté graphiquement sous la forme d'un losange creux contenant la fin de classe de l'arborescence avec une seule ligne qui relie classe contenue à la classe contenant.L'agrégat est sémantiquement un objet étendu qui est traité comme une unité dans de nombreux opérations, bien que physiquement, il est fait de plusieurs objets moins.

Http://en.wikipedia.org/wiki/Class_diagram

8
répondu Mike Darmetko 2013-02-28 17:20:46