Agrégation vs Composition vs Association vs Association directe

Je revois mes connaissances en programmation orientée object. Dans le cadre de la relation entre classes, j’ai rencontré des relations un peu ambiguës pour moi.

Je sais que la dépendance “utilise-un” et l’inheritance “est-un” mais je ne suis pas familier avec l’agrégation, la composition, l’association et l’association directe; aussi, lequel d’entre eux est “a-a” relation. Certains utilisent indifféremment l’agrégation avec Association.

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

Veuillez noter qu’il existe différentes interprétations des définitions “d’association”. Mes points de vue ci-dessous sont fortement basés sur ce que vous liriez dans les livres de certificateion Oracle et les guides d’étude.

Association temporaire

Un usage dans une méthode , sa signature ou une valeur de retour. Ce n’est pas vraiment une référence à un object spécifique.

Exemple: je gare ma voiture dans un garage.

Association temporaire UML

Association de composition

Une relation dite ” STRONG “: L’instanciation de l’object lié est souvent codée en dur à l’intérieur du constructeur de l’object. Il ne peut pas être défini en dehors de l’object. (La composition ne peut pas être une relation plusieurs-à-plusieurs.)

Exemple: une maison est composée de pierres.

Composition UML

Association directe

Ceci est une ” relations FAIBLES “. Les objects peuvent vivre indépendants et il y a généralement des parameters ou d’autres moyens d’injecter les objects dépendants.

Exemple: une voiture peut avoir des passagers.

Association directe UML

Association d’agrégation

Très similaire à une association directe. C’est aussi une ” relation FAIBLE ” avec des objects indépendants. Cependant, les objects associés constituent une partie cruciale de l’object contenant.

Exemple: une voiture doit avoir des pneus.

Agrégation UML

Remarque: Les associations directes et les associations d’agrégation sont souvent généralisées en tant que “associations”. La différence est plutôt subtile.

Par exemple Tout l’intérêt de la POO réside dans le fait que votre code réplique des objects du monde réel, rendant ainsi votre code lisible et maintenable.

  1. Association

L’association est essentiellement la classe A utilise la classe B. Par exemple

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

Et dans In UML diagram Association est désignée par une flèche normale.

  1. La classe d’agrégation A contient la classe B ou la classe A a l’instance de la classe B. Une agrégation est utilisée lorsque la durée de vie de l’object est indépendante de l’object conteneur. Cependant, l’object conteneur possède l’object agrégé.

Donc, si nous supprimons la classe A, cela ne signifie pas que la classe B sera également supprimée. Par exemple (les enseignants ou peu d’enseignants peuvent appartenir à un ou plusieurs départements), la relation entre les enseignants et les départements est une agrégation.

  1. Composition La classe A est propriétaire de la classe B. Par exemple, Body se compose de Arm, Head, Legs, BankAccount se compose de Balance et de TransactionHistory. Donc, si la classe est supprimée, la classe B sera également supprimée.

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

Pour les autres,

Association A-> B est un enfant de dépendance. Association signifie que A (ou son instance) a un moyen facile d’accéder à l’instance de B. Par exemple, axyb 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 ssortingcte entre dépendance et association.

L’un des atsortingbuts de l’association est l’agrégation, il peut avoir des valeurs: aucune, partagée (souvent appelée à tort agrégation) et composition.

Si A (ou instance) a des (ou une) instances de B, cette destruction d’association signifie la destruction des instances B, c’est la composition.

Si vous ou un auteur d’outils avez décidé que certaines relations ont un impact plus faible, vous devez utiliser shared agrégation shared . Habituellement, il y a des recueils de références à B dans A.

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