Agrégation vs Composition vs Association vs Association directe
je révise mes connaissances en programmation orientée objet. Sous le sujet de la relation entre les classes, j'ai rencontré des relations qui sont un peu ambiguës pour moi.
je sais dépendance "utilise" et de l'héritage "est-un", mais je suis un peu familier avec l'Agrégation, Composition, d'Association et de l'Association Directe; aussi, quel est le "a-un" de la relation. Certains utilisent l'agrégation de façon interchangeable avec L'Association.
qu'est-Ce que Une Association Directe? Aussi, 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.
4 réponses
veuillez noter qu'il existe différentes interprétations des définitions d '"association". Mes vues ci-dessous sont fortement basés sur ce que vous liriez dans les livres de Certification Oracle et les guides d'étude.
association temporaire
de l'utilisation de la à 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 garer ma Voiture dans un Garage.
Composition de l'association
Un soi-disant " relation FORTE ": l'instanciation de L'objet lié est souvent difficile codées à l'intérieur du constructeur de l'objet. Il ne peut pas être définie à partir de en dehors de l'objet. (Composition ne peut pas être un plusieurs-à-plusieurs relation.)
exemple: une maison est composée de pierres.
association directe
il s'agit d'un relations faibles ". Les objets peuvent vivre indépendamment et il ya généralement des setters ou d'autres façons d'injecter les objets dépendants.
exemple: une voiture peut avoir des passagers.
Agrégation de l'association
très similaire à une association directe. C'est aussi un " faible relation " avec des objets indépendants. Cependant, ici, les objets associés sont une partie essentielle de l'objet contenant.
exemple: une voiture doit avoir des pneus.
Note: tant les associations directes que les associations D'agrégation sont souvent généralisées en tant qu' "Associations". La différence est assez subtile.
par exemple Le point entier de OOP est que votre code réplique des objets du monde réel, ce qui rend votre code lisible et maintenable.
- Association
Association essentiellement est la Classe A utilise la classe B. à titre d'exemple
- L'employé utilise les services D'autobus/train pour le transport.
- ordinateur utilisant le clavier comme dispositif d'entrée
et dans le diagramme UML L'Association est indiquée par une flèche normale.
- agrégation La classe A contient la Classe B, ou la Classe A a une instance de la classe B. Une agrégation est utilisée lorsque la vie de l'objet est indépendante de l'objet conteneur mais que l'objet conteneur possède tout de même l'objet agrégé.
ainsi, si nous supprimons la classe A, cela ne signifie pas que la Classe B sera également supprimée , à titre d'exemple (de nombreux enseignants ou non peuvent appartenir à la Classe B). un ou plusieurs départements) la relation entre les enseignants et les départements est l'agrégation.
- Composition La classe A possède la classe B. À titre d'exemple , le corps se compose du bras, de la tête, des jambes , le compte bancaire se compose de la Balance et L'histoire des transactions. Donc si la classe be est supprimée, la Classe B sera également supprimée.
association directe n'a rien en commun avec les trois autres. Il n'appartient pas du tout à UML, il est le IBM besoins terme de modélisation .
Comme pour les autres,
Association A - > B est un enfant à charge. L'Association signifie que A (ou son instance) a un moyen facile 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 ou un pointeur, ou quelque chose d'autre (il y a beaucoup de 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 incorrectement appelée agrégation), et la composition.
Si A (ou instance) a quelques (ou une) instances de B so, cette destruction d'association signifie la destruction de B instances, c'est la composition.
si vous ou un auteur d'outil avait décidé, que certains a-une relation, qui est plus faible que la composition, doit être spécialement montré, vous pouvez utiliser shared
agrégation. Habituellement, il s'agit de quelques collections de références à B en A.
il y a quelques attributs plus intéressants des associations. Regardez ici si vous êtes intéressé.
une association entre les types d'objets classifie 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 type Person
ainsi que Google et IBM de type Enterprise
. En d'autres termes, les associations sont des types de relations avec deux ou plusieurs types d'objets y participent. Une association entre deux types d'objets est appelé binaire. Alors que les associations binaires sont plus courantes, nous pouvons aussi avoir à traiter avec les associations n-ary, où n est un nombre naturel supérieur à 2. Par exemple, Person
- isTreatedIn - Hospital
- pour - Disease
est une association 3-ary ("ternaire") entre les types d'objets Person
, Hospital
et Disease
.
je suppose qu'avec" association directe " vous désigne une association directionnelle (ou dirigée), qui est une association (avec une classe de domaine et une classe de gamme) 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.
s'il vous Plaît voir ce chapitre de livre pour en savoir plus sur les associations.
et voir ma réponse à cette question SO pour une explication des agrégations et composition.