Diagramme de classe UML Association vs (agrégation | Composition)-diamants

Je ne suis pas sûr que j'utilise l'association et le diamant d'agrégation ou de composition correctement.

j'utiliserais L'Association pour les interfaces, parce que je ne peux pas les instancier. Comme ils le font ici par exemple. Ou pour des cours statiques, pour la même raison.

et les diamants que j'utilise seulement pour les objets que je peux instancier. Comme les classes normales.

mais je ne suis pas sûr que ce soit la bonne façon de les différencier, parce que si vous cochez encore une fois, vous verrez qu'ils ne sont pas si spécifiques à ce sujet. Dans le UML 2.3 spécification Je ne pouvais pas en sortir plus, alors comment l'utilisez-vous?

et il y a une troisième manière, la flèche doublée, mais je n'ai pas de colle quand utiliser celle-ci. Alors peut-être que tu peux m'aider avec ça aussi?

8
uml
demandé sur ROMANIA_engineer 2011-10-20 13:45:56

2 réponses

j'utiliserais L'Association pour les interfaces, parce que je ne peux pas les instancier. Comme ils le font ici, par exemple. Ou pour des cours statiques, pour la même raison.

et les diamants que j'utilise seulement pour les objets que je peux instancier. Comme les classes normales.

ce n'est pas vraiment comme ça qu'ils fonctionnent. Les trois formes (Association, agrégation et Composition) définissent différentes propriétés autour d'une relation. Les trois sont normalement utilisé entre les classes bien que peut se rapporter Interfaces aussi. L'Association et la Composition sont les deux plus faciles:

  • Association (sans diamant) est la forme la plus générale, permettant la cardinalité et la navigabilité à définir aux deux extrémités.
  • La Composition
  • (diamant plein) est une relation où le "tout" (fin avec le diamant noir) "contient" la partie. Il impose deux restrictions clés:
    1. il ne peut y avoir
    2. impose une responsabilité de cycle de vie pour les pièces dans leur ensemble. Le conteneur est donc responsable de la création et de la suppression des pièces. Une partie ne peut pas continuer à exister si son conteneur est supprimé.

Agrégation (carnet de diamant) se trouve quelque part au milieu. C'est un peu comme la composition - sauf qu'elle ne prescrit pas les propriétés décrites ci-dessus. Je ne pas utiliser personnellement. La sémantique est trop incertaine pour qu'il soit valable.

et il y a une troisième manière, la flèche doublée<>, mais je n'ai pas de colle quand utiliser celle-ci.

je pense que vous voulez dire la relation de dépendance. C'est une forme plus faible d'association. Prenez par exemple la définition de classe suivante

class Foo {

 def bar(Baz: aParam) {
  ...
 }
}

dans ce cas, le type Foo dépend du type Baz de son utilisation dans la signature de la méthode bar (). Cependant, il n'y a pas d'association entre eux (on ne peut pas discuter raisonnablement, par exemple, de la cardinalité de la relation entre une instance de Foo et une instance de Baz).

d'un point de vue pratique, je dirais:

  • vous pouvez utiliser directement les Associations pour 80%+ de la relations que vous êtes susceptibles de vouloir modèle
  • La Composition
  • explique probablement la plupart des autres scénarios
  • la dépendance peut être utile dans certaines circonstances
  • vous pouvez vous en sortir très bien sans jamais utiliser L'agrégation.

hth.

17
répondu sfinnie 2011-10-21 07:44:36

fixons les conditions. L'agrégation est un métaterme dans la norme UML, et signifie à la fois la composition et l'agrégation partagée, simplement appelé partagé . Trop souvent, il est nommé incorrectement "agrégation". C'est mauvais, car la composition est aussi une agrégation. Si je comprends bien, vous voulez dire "partagé".

plus loin de la norme UML:

composite-indique que la propriété est agrégée de façon composite, c'est à dire, le l'objet composite a la responsabilité de l'existence et stockage des objets composés (pièces).

ainsi, L'association Université-cathedras est une composition, parce que la cathedra n'existe pas hors de L'Université (IMHO)

la sémantique précise de l'agrégation partagée varie selon le domaine d'application et le type d'agrégation. modeleur.

c'est-à-dire, toutes les autres associations peuvent être tirées comme agrégations partagées, si vous êtes seulement en suivant certains de vos principes ou de quelqu'un d'autre. Regardez aussi ici .

0
répondu Gangnus 2017-05-23 10:26:56