J'ai besoin d'aide pour essayer de comprendre la signification de la flèche dans un diagramme de classes UML, plus précisément dans ce diagramme composite. Quelle est la différence entre la ligne simple (d'une classe à une autre) et la flèche (pas la flèche d'héritage, je fais référence à la noire)?
Afin de mieux discuter de l'image, j'ai annoté votre image avec quelques chiffres. J'espère que cela m'aidera à être plus clair dans mes écrits.
Il y a vraiment trois types de lignes utilisées ici - association (1), composition (4-> 2) et héritage (3).
Une ligne continue reliant deux classes, comme entre Client
et BookComponent
est simplement une relation d'association. Il est souvent utilisé pour indiquer qu'une classe est au courant (peut-être comme dans reçoit comme argument d'une méthode) ou a une autre classe (peut-être comme variable d'instance). Sans décorations ou avec une flèche aux deux extrémités, la relation est bidirectionnelle - les deux classes partagent la relation et se connaissent. Dans certains cas, comme la ligne 1 de la figure, la relation est directionnelle. La classe Client
connaît BookComponent
, mais l'inverse n'est pas vrai car BookComponent
n'a pas ou ne connaît pas Client
. Notez qu'il existe également d'autres annotations qui peuvent apparaître sur les relations d'association, telles que la multiplicité ou les rôles de classe.
La ligne suivante est la ligne qui relie BookComposite
à BookComponent
. C'est une association, tout comme la ligne entre Client
et BookComponent
. Cependant, les annotations aux points que j'ai étiquetés 2 et 4 ajoutent des informations supplémentaires sur la relation. Au point 1, la flèche au point 2 signifie la même chose - BookComposite
connaît les instances de BookComponent
, mais pas l'inverse (une relation directionnelle). L'annotation au point 4 indique une relation d'agrégation - BookComposite
est une collection de BookComponent
. Cependant, ce n'est pas une relation forte (comme c'est le cas de la relation de composition forte), donc l'agrégation indique qu'un BookComponent
peut indiquer à des endroits en dehors d'un BookComposite
(vous n'avez pas besoin d'un BookComposite
pour avoir un BookComponent
).
Quelque chose à noter est que la flèche utilisée pour montrer les associations directionnelles n'est généralement pas une flèche noire pleine comme le montre cette image. Je le vois généralement comme une flèche ouverte qui ressemble plus à un v
qu'à ce qui est montré dans votre image.
Enfin, le point intitulé 3 est la relation de succession que vous avez mentionnée dans votre question.
Si vous souhaitez en savoir plus sur la modélisation UML, je vous recommande d'acheter ML Distilled . C'est un bon livre de Martin Fowler qui couvre la classe, la séquence, l'objet, le package, le déploiement, le cas d'utilisation, la machine d'état, l'activité, la communication, la structure composite, le composant, la collaboration, la vue d'ensemble des interactions et les chronogrammes.
Votre image montre plusieurs relations différentes.
La relation entre les classes Client et BookComponent est une relation de confinement. C'est à dire. le client contient une instance de BookComponent.
BookComposite et BookComponent ont deux relations, la pointe de flèche ouverte est une relation de généralisation (c.-à-d. BookComponent généralise BookComposite ou en d'autres termes BookComposite se spécialise/dérive de BookComponent). La tête fermée avec un diamant à la queue est une agrégation. Autrement dit, BookComposite contient une collection de BookComponent. Le fait que le diamant ne soit pas rempli est également significatif. Cela signifie que le cycle de vie des BookComponents contenus n'est pas lié à la durée de vie du BookComposite contenant. S'il était rempli au lieu de l'agrégation, ce serait une composition et lorsque BookComposite serait détruit, les BookComponents le seraient aussi