web-dev-qa-db-fra.com

Agrégation vs Composition vs Association vs Association Directe

Je revois mes connaissances en programmation orientée objet. Sous le thème des relations entre les classes, j'ai rencontré des relations qui sont un peu ambiguës pour moi.

Je sais que la dépendance "utilise-a" et l'héritage "est-a" mais je ne suis pas un peu familier avec l'agrégation, la composition, l'association et l'association directe; aussi, lequel d'entre eux est une relation "a-une". Certains utilisent l'agrégation de manière interchangeable avec l'association.

Qu'est-ce que l'association directe? Aussi, qu'est-ce que la composition? Dans les diagrammes UML, les flèches qui les représentent sont différentes. Je serais vraiment reconnaissant si vous pouviez clarifier ces choses pour moi.

43
steven0529

Veuillez noter qu'il existe différentes interprétations des définitions d '"association". Mes vues ci-dessous sont largement basées sur ce que vous liriez dans les livres de certification Oracle et les guides d'étude.

Association temporaire

Une utilisation à l'intérieur d'une méthode, sa signature ou comme valeur de retour. Ce n'est pas vraiment une référence à un objet spécifique.

Exemple: je gare ma voiture dans un garage.

Temporary Association UML

Association de composition

Un soi-disant "STRONG relation": L'instanciation de l'objet lié est souvent codée en dur à l'intérieur du constructeur de l'objet. Il ne peut pas être défini depuis l'extérieur de l'objet. (Composition ne peut pas être une relation plusieurs-à-plusieurs.)

Exemple: une maison est composée de pierres.

Composition UML

Association directe

Il s'agit d'un "relations FAIBLES". Les objets peuvent vivre indépendamment et il existe généralement des setters ou d'autres moyens d'injecter les objets dépendants.

Exemple: une voiture peut avoir des passagers.

Direct Association UML

Association d'agrégation

Très similaire à une association directe. C'est aussi un "relation FAIBLE" avec des objets indépendants. Cependant, ici, les objets associés sont une partie cruciale de l'objet conteneur.

Exemple: une voiture devrait avoir des pneus.

Aggregation UML

Remarque: les associations directes et les associations d'agrégation sont souvent généralisées en tant qu '"associations". La différence est plutôt subtile.

107
bvdb

L'intérêt de OOP est que votre code réplique des objets du monde réel, ce qui rend votre code lisible et maintenable.

1. Association

L'association est: la classe A utilise la classe B.

Exemple:

  • L'employé utilise les services de bus/train pour le transport.
  • L'ordinateur utilise le clavier comme périphérique d'entrée

Et dans le diagramme UML, l'association est désignée par une tête de flèche normale.

2. Agrégation

La classe A contient la classe B ou la classe A a une instance de classe B.

Une agrégation est utilisée lorsque la durée de vie de l'objet est indépendante de l'objet conteneur. Mais l'objet conteneur possède toujours l'objet agrégé.

Donc, si nous supprimons la classe A, cela ne signifie pas que la classe B sera également supprimée. Par exemple. aucun ou plusieurs enseignants ne peuvent appartenir à un ou plusieurs départements.

La relation entre les enseignants et les départements est une agrégation.

. Composition

La classe A possède la classe B.

Par exemple. Le corps se compose de bras, tête, jambes. BankAccount se compose de Balance et TransactionHistory.

Donc, si la classe A est supprimée, la classe B sera également supprimée.

11
user 451

L'association directe n'a rien de commun avec les trois autres. Il n'appartient pas du tout à UML, c'est le terme de modélisation des exigences IBM .

Quant aux autres,

L'association A-> B est un enfant de la dépendance. L'association signifie que A (ou son instance) a un moyen simple d'accéder à l'instance de B. Par exemple, a.x.y.b. Ou par fonction, ou par une variable locale. Ou par une référence directe ou un pointeur, ou autre chose (il existe de nombreuses langues dans le monde). Comme vous le voyez, il n'y a pas de frontière stricte entre dépendance et association.

L'un des attributs de l'association est l'agrégation, elle peut avoir des valeurs: aucune, partagée (souvent appelée à tort agrégation) et la composition.

Si A (ou l'instance) a quelques (ou une) instances de B, alors la destruction de l'association signifie la destruction des instances B, c'est la composition.

Si vous ou un auteur d'outil avez décidé qu'une relation has-a, qui est plus faible que la composition, doit être spécialement affichée, vous pouvez utiliser l'agrégation shared. Il s'agit généralement de quelques collections de références à B en A.

Il existe des attributs plus intéressants des associations. Regardez ici si vous êtes intéressé.

6
Gangnus

Une association entre les types d'objets classe les relations entre les objets de ces types. Par exemple, l'association Person- isEmployedBy -Enterprise peut classer les relations PeterMiller-isEmployedBy-IBM, SusanSmith-isEmployedBy-IBM et SarahAnderson-isEmployedBy-Google entre les objets PeterMiller, SusanSmith et SarahAnderson de tapez Person ainsi que Google et IBM de type Enterprise. En d'autres termes, les associations sont des types de relations avec au moins deux types d'objets qui y participent. Une association entre deux types d'objets est appelée binaire. Bien que les associations binaires soient plus courantes, nous pouvons également avoir à traiter avec des associations n-aires, où n est un nombre naturel supérieur à 2. Par exemple, Person- isTreatedIn -Hospital- for- Disease est une association à 3 zones ("ternaire") entre les types d'objet Person, Hospital et Disease.

Je suppose qu'avec "association directe" vous voulez dire une association directionnelle (ou dirigée), qui est une association (avec une classe de domaine et une classe de plage) qui représente une propriété de référence dans sa classe de domaine. Une telle association directionnelle a un "point de propriété" à son extrémité cible.

Veuillez consulter ce chapitre du livre pour en savoir plus sur les associations.

Et voir ma réponse à this SO question pour une explication des agrégations et des compositions.

4
Gerd Wagner