Agrégation vs composition
On février 12, 2021 by adminJe comprends la composition en POO, mais je ne parviens pas à avoir une idée claire de ce quest lagrégation. Quelquun peut-il expliquer?
Réponse
Règles simples:
- A « possède » B = Composition: B na pas de signification ou de but dans le système sans A
- A « utilise » B = Agrégation: B existe indépendamment (conceptuellement) de A
Exemple 1:
Une entreprise est une agrégation de personnes. Une société est une composition de comptes. Lorsquune entreprise cesse de faire des affaires, ses comptes cessent dexister mais ses employés continuent dexister.
Exemple 2: (très simplifié)
Un éditeur de texte possède un tampon (composition). Un éditeur de texte utilise un fichier (agrégation). Lorsque léditeur de texte est fermé, le tampon est détruit mais le fichier lui-même nest pas détruit.
Commentaires
- Une voiture est donc un agrégat ou un composition de ses parties?
- Et en quoi lagrégation est-elle différente de toute autre relation entre deux sortes dentités?
- @reinierpost Dans la réalité , une voiture est une lagrégation de pièces, et les pièces sont simplement une agrégation de molécules … Cependant, dans un modèle tout dépend de vos besoins. Est-il important de traiter le moteur comme une entité distincte afin que vous puissiez suivre sa durée de vie indépendamment de la voiture? Pouvez-vous réutiliser exactement le même moteur dans une autre voiture? Si tel est le cas, vous souhaitez probablement une agrégation. Sinon, vous voulez une composition parce que vous ‘ ne vous souciez pas des moteurs qui ne font ‘ que des voitures, ni ne vous souciez pas de la réutilisation .
- ce qui manque est un exemple de mise en œuvre pour une compréhension complète …
- Quen est-il des employés lorsquune entreprise cesse ses activités? Les employés et les gens sont des entités différentes, nest-ce pas? Alors, puis-je dire que lentreprise est la composition des employés?
Réponse
De http://en.wikipedia.org/wiki/Object_composition
Lagrégation diffère de la composition ordinaire en ce quelle nimplique pas la possession. En composition, lorsque lobjet propriétaire est détruit, les objets contenus le sont aussi. Dans lensemble, ce nest pas nécessairement vrai. Par exemple, une université possède divers départements (par exemple, chimie), et chaque département a un certain nombre de professeurs. Si luniversité ferme, les départements nexisteront plus, mais les professeurs de ces départements continueront dexister. Par conséquent, une université peut être considérée comme une composition de départements, alors que les départements ont une agrégation de professeurs. De plus, un professeur peut travailler dans plus dun département, mais un département ne peut pas faire partie de plus dune université.
Donc – tant que vous avez une relation de propriété avec la composition lobjet possédé est également détruit lorsque le propriétaire 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.
@Curtis Batt fournit une excellente définition dans sa réponse: Agrégation vs Composition
Commentaires
- Dans lexemple que vous citez, la composition est un-à-plusieurs et lagrégation a également une relation un-à-plusieurs implicite, même si ici elle pourrait aussi être une relation plusieurs à plusieurs pour lagrégation (on peut supposer quun enseignant peut enseigner dans plusieurs départements). Alors quun département ne peut pas faire partie de plusieurs universités. La composition implique la propriété alors que lagrégation ne va pas au-delà de la relation. La citation est correcte mais le commentaire ne lest pas.
- cela na rien à voir avec la destruction! UML ne définit pas le système de ramassage des ordures.
- Je pense que le lien wikipedia reçoit des votes positifs réflexifs, mais cest une définition terrible – comme @bold la souligné, ces relations nont rien à voir avec GC. Cela seffondre également lorsquun objet est le composant de deux autres objets, tels que la balle dans une rotule joignant deux membres artificiels. La relation Composant concerne la dépendance fonctionnelle.
- Je suis daccord pour dire que ma réponse manque cruellement – mais larticle de WikiPedia lest aussi …
- La différence entre la composition et lagrégation est claire. Le problème avec lagrégation est quelle ‘ ne sait pas en quoi elle est différente dune association ordinaire.
Réponse
-
La composition est une association
-
Lagrégation est une association
-
La composition est une association forte (si la vie de lobjet contenu dépend totalement de lobjet conteneur, elle est appelée 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, elle est appelée association faible)
Exemple:
class Contained { public void disp() { System.out.println("disp() of Contained A"); } } public class Container { private Contained c; //Composition Container() { c = new Contained(); } //Association public Contained getC() { return c; } public void setC(Contained c) { this.c = c; } public static void main(String[] args) { Container container = new Container(); Contained contained = new Contained(); container.setC(contained); } }
Commentaires
- Quelle est la différence entre lagrégation et lassociation qui nest ni composition ni agrégation?
Réponse
Il ny a pas dexplication unique. Différents auteurs signifient différentes choses par agrégation. La plupart ne veulent pas vraiment dire quoi que ce soit de spécifique.
Commentaires
- Ceci est la bonne réponse. Je ‘ lai lu dans deux livres, lun deux étant Martin Fowler ‘ s UML Distilled .
- martinfowler.com/bliki/AggregationAndComposition.html
Réponse
Composition (mélange) est un moyen de combiner des objets simples ou des types de données en plus complexes. Les compositions sont un élément essentiel de nombreuses structures de données de base
Lagrégation (collection) diffère de la composition ordinaire en ce qu il nimplique pas la propriété. En composition, lorsque lobjet propriétaire est détruit, les objets contenus le sont aussi. Dans lagrégation, ce nest pas nécessairement vrai
╔═══════════╦═════════════════════════╦═══════════════════════╗ ║ ║ Aggregation ║ Composition ║ ╠═══════════╬═════════════════════════╬═══════════════════════╣ ║ Life time ║ Have their own lifetime ║ Owner"s life time ║ ║ Relation ║ Has ║ part-of ║ ║ Example ║ Car has driver ║ Engine is part of Car ║ ╚═══════════╩═════════════════════════╩═══════════════════════╝
Les deux dénotent une relation entre lobjet et ne diffèrent que par leur force.
Notations UML pour différents types de dépendance entre deux classes
Composition : puisque le moteur fait partie de la voiture, la relation entre eux est la composition. Voici comment ils sont implémentés entre les classes Java.
public class Car { //final will make sure engine is initialized private final Engine engine; public Car(){ engine = new Engine(); } } class Engine { private String type; }
Agrégation : Étant donné que lorganisation a des employés comme employés, la relation entre eux est lagrégation. Voici à quoi ils ressemblent en termes de classes Java
public class Organization { private List employees; } public class Person { private String name; }
Commentaires
- cela ne ‘ ne semble pas offrir quelque chose de substantiel sur les points soulevés et expliqués dans les 12 réponses précédentes
- Assez sûr que les livres peuvent exister sans bibliothèques. Mauvais exemple!
- Ici, la liste des employés fait partie de lobjet Organisation. Comment cela peut-il être une agrégation?
- En quoi lassociation est-elle différente de lagrégation?
- Jadore cette réponse. Il ma finalement expliqué correctement quelle est la différence entre lagrégation et la composition.
Réponse
lagrégation est une simple collection, comme un sac de billes
la composition implique des dépendances internes / fonctionnelles, comme les charnières dune caisse
les voitures agrègent les passagers; ils entrent et sortent sans casser la fonctionnalité de la voiture
les pneus sont des composants, enlevez-en un et la voiture ne fonctionne plus correctement
[note: la roue de secours est un agrégat! ]
Réponse
Je considère toujours la composition comme « a besoin dun », cest-à-dire quune voiture a besoin dun moteur, et je considère lagrégation comme «des choses liées à un but». Donc, en restant avec lanalogie avec la voiture, mon agrégation peut être de représenter un voyage qui peut impliquer de réunir une voiture et des passagers. Le voyage ne possède pas la voiture ou les passagers, je agrège des données qui sont liées pour 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.
Réponse
Et cet exemple simple :
Un tableau dobjets est une composition. Un tableau de pointeurs vers des objets est une agrégation.
Si je supprime le premier, son contenu disparaît avec lui. Le second, dautre part, peut disparaître sans affecter lexistence de ses membres, sauf sil existe une méthode spécifique qui supprime chaque objet lorsque son pointeur est supprimé.
Commentaires
- cela ‘ ne semble pas ajouter quoi que ce soit de substantiel par rapport aux points soulevés et expliqués dans les 11 réponses précédentes
- Respectueusement en désaccord, @gnat. Ceci est un exemple utile de la façon dont le deux pourraient être mis en œuvre. Les gens apprennent mieux avec des exemples.(Je suis venu ici pour vérifier si je comprenais quun membre de pointeur était probablement une agrégation et un membre dobjet une composition. Cest la seule réponse pour aborder directement cela.)
Réponse
Sémantiquement, tous les ensembles sont constitués de sous-ensembles, non? Par conséquent:
-
Lagrégation se produit lorsque ces sous-ensembles existent indépendamment de lensemble père. Comme un moniteur peut être débranché de lordinateur pour être connecté à un autre.
-
La composition est lorsque ces sous-ensembles dépendent de lexistence de lensemble père. Comme une feuille fait partie dun arbre ou que le foie fait partie dun corps.
Ces concepts parlent du type de dépendance entre deux objets ou classes, conceptuellement. Directement dans un programme, dans une agrégation, lorsque lobjet père se débarrasse, les objets agrégés doivent également être supprimés. Dans le même scénario pour une composition, les objets fils composites vont persister puis lobjet père se dispense.
Laisser un commentaire