Je comprends la composition de la programmation orientée objet, mais je ne parviens pas à me faire une idée précise de ce qu'est l'agrégation. Quelqu'un peut-il expliquer?
object-oriented
Vinoth Kumar CM
la source
la source
De http://en.wikipedia.org/wiki/Composition_Objet
Ainsi, tant que vous avez une relation de propriété avec la composition, l'objet appartenant est également détruit lorsque le propriétaire l'est: une agrégation (et les objets contenus) peuvent exister indépendamment.
-
Mise à jour: excuses - cette réponse est beaucoup trop simpliste avec le recul.
c.batt fournit une excellente définition dans sa réponse: agrégation vs composition
la source
Il n'y a pas d'explication unique. Différents auteurs signifient différentes choses par agrégation. La plupart ne veulent rien dire de particulier.
la source
La composition est une association
L'agrégation est une association
La composition est une association forte (si la vie d'un objet contenu dépend totalement de l'objet conteneur, elle s'appelle une association forte)
L'agrégation est une association faible (si la durée de vie de l'objet contenu ne dépend pas de l'objet conteneur, on parle alors d'association faible)
Exemple:
la source
La composition (mélange) est un moyen de combiner des objets simples ou des types de données en des objets plus complexes. Les compositions sont un élément essentiel de nombreuses structures de données de base
L'agrégation (collection) diffère de la composition ordinaire en ce sens qu'elle n'implique pas la propriété. En composition, lorsque l'objet propriétaire est détruit, les objets contenus le sont également. En agrégation, ce n'est pas nécessairement vrai
Les deux dénotent la relation entre objet et ne diffèrent que par leur force.
Notations UML pour différents types de dépendance entre deux classes
Composition : Puisque Engine fait partie de la voiture, la relation entre eux est la composition. Voici comment ils sont implémentés entre les classes Java.
Agrégation : Puisque l'organisation a une personne comme employé, la relation entre eux est une agrégation. Voici à quoi elles ressemblent en termes de classes Java
La source
la source
l'agrégation est une collection simple, comme un sac de billes
la composition implique des dépendances internes / fonctionnelles, comme les charnières d'une boîte
les voitures regroupent les passagers; ils entrent et sortent sans casser les fonctionnalités de la voiture
les pneus sont des composants; retirez-en un et la voiture ne fonctionne plus correctement
[note: le pneu de secours est un agrégat!]
la source
Je regarde toujours la composition comme "a besoin d'un", c'est-à-dire qu'une voiture a besoin d'un moteur, et je considère l'agrégation comme "des choses liées à un but". Donc, pour rester dans l’analogie voiture, mon agrégation peut être de représenter un voyage qui peut impliquer de réunir une voiture et des passagers. Le trajet ne appartient pas à la voiture ou aux passagers, je suis en train d'agréger des données liées à un scénario spécifique. Lorsque le voyage est terminé, la voiture et les passagers continuent. Quand une voiture est arrêtée, la voiture et son moteur sont normalement détruits ensemble.
la source
Sémantiquement, tous les ensembles sont constitués de sous-ensembles, non? Donc:
L'agrégation est lorsque ces sous-ensembles existent indépendamment de l'ensemble père. Comme un moniteur peut être débranché de l'ordinateur pour être connecté à un autre.
La composition correspond au moment où ces sous-ensembles dépendent de l’existence de l’ensemble paternel. Comme une feuille est une partie d'un arbre ou le foie est une partie d'un corps.
Ces concepts parlent du type de dépendance entre deux objets ou classes, conceptuellement. Directement dans un programme, dans une agrégation, lorsque l'objet père dispose, les objets agrégés doivent également être éliminés. Dans le même scénario pour une composition, les objets fils composites persisteront, puis l'objet père distribuera.
la source
Que diriez-vous de cet exemple simple:
Un tableau d'objets est une composition. Un tableau de pointeurs sur des objets est une agrégation.
Si je supprime le premier, son contenu disparaît avec lui. Le second, en revanche, peut disparaître sans affecter l’existence de ses membres sauf s’il existe une méthode spécifique qui supprime chaque objet lorsque son pointeur est supprimé.
la source