Ich bin mir der konzeptionellen Unterschiede zwischen Aggregation und Komposition bewusst. Kann mir jemand anhand von Beispielen den Implementierungsunterschied in Java erklären?
java
relationship
aggregation
composition
Rajath
quelle
quelle
Antworten:
Komposition
Anhäufung
Bei der Zusammensetzung ist der Motor vollständig vom Auto eingekapselt. Es gibt keine Möglichkeit für die Außenwelt, einen Verweis auf den Motor zu erhalten. Der Motor lebt und stirbt mit dem Auto. Bei der Aggregation führt das Auto seine Funktionen auch über einen Motor aus, aber der Motor ist nicht immer ein interner Teil des Autos. Motoren können ausgetauscht oder sogar vollständig entfernt werden. Nicht nur das, auch die Außenwelt kann immer noch einen Bezug zum Motor haben und daran basteln, unabhängig davon, ob er sich im Auto befindet.
quelle
new Engine(EngineSpecs)
Anrufs auch dann ein Motor erstellt werden , wenn kein Auto vorhanden war. Der Weg, um eine Komposition zu erreichen, besteht darin, Engine als innere Klasse zu erstellen, so dass ein Objekt der Engine immer mit Bezug auf einIch würde ein schönes UML-Beispiel verwenden.
Nehmen Sie eine Universität mit 1 bis 20 verschiedenen Abteilungen und jeder Abteilung hat 1 bis 5 Professoren. Zwischen einer Universität und ihren Abteilungen besteht eine kompositorische Verbindung. Zwischen einer Abteilung und ihren Professoren besteht eine Aggregationsverbindung.
Die Zusammensetzung ist nur eine STARKE Aggregation. Wenn die Universität zerstört wird, sollten auch die Abteilungen zerstört werden. Aber wir sollten die Professoren nicht töten, selbst wenn ihre jeweiligen Abteilungen verschwinden.
In Java:
Etwas um das herum.
quelle
Die unten angegebene URL enthält eine gute Erklärung.
http://www.codeproject.com/Articles/330447/Understanding-Association-Aggregation-and-Composit
Bitte prüfen!!!
quelle
Der Unterschied besteht darin, dass jede Komposition eine Aggregation ist und nicht umgekehrt.
Lassen Sie uns die Bedingungen festlegen. Die Aggregation ist ein Metaterm im UML-Standard und bedeutet BEIDE Zusammensetzung und gemeinsame Aggregation, einfach als gemeinsam bezeichnet . Zu oft wird es fälschlicherweise als "Aggregation" bezeichnet. Es ist SCHLECHT, denn Komposition ist auch eine Aggregation. Soweit ich weiß, meinst du "geteilt".
Weiter vom UML-Standard:
Die Assoziation von Universität zu Kathedrale ist also eine Komposition, da Kathedra nicht außerhalb der Universität existiert (IMHO).
Das heißt, alle anderen Assoziationen können als gemeinsame Aggregationen gezeichnet werden, wenn Sie nur einigen Prinzipien von Ihnen oder von jemand anderem folgen. Schauen Sie auch hier .
quelle
In einfachen Worten :
Sowohl Zusammensetzung als auch Aggregation sind Assoziationen. Zusammensetzung -> Starke Has-A-Beziehung Aggregation -> Schwache Has-A-Beziehung.
quelle
Ein einfaches Kompositionsprogramm
quelle
Zuerst müssen wir darüber sprechen, was eigentlich der Unterschied zwischen
Aggregation
undComposition
auf derselben Seite sein soll.wohingegen
Jetzt kann die Aggregation einfach erreicht werden, indem eine Eigenschaft einer Entität in einer anderen wie folgt gehalten wird:
Für die Komposition ist es erforderlich, dass das abhängige Objekt immer mit der Identität des zugehörigen Objekts erstellt wird. Sie können eine innere Klasse für dieselbe verwenden.
quelle
Aggregation gegen Zusammensetzung
Aggregation impliziert eine Beziehung, in der das Kind unabhängig vom Elternteil existieren kann . Beispiel: Bank und Mitarbeiter, löschen Sie die Bank und der Mitarbeiter ist noch vorhanden.
Während Komposition eine Beziehung impliziert, in der das Kind nicht unabhängig vom Elternteil existieren kann. Beispiel: Mensch und Herz, Herz existiert nicht getrennt von einem Menschen.
Die Aggregationsbeziehung ist "hat-ein" und die Zusammensetzung ist "Teil der" Beziehung.
Die Zusammensetzung ist eine starke Assoziation, während die Aggregation eine schwache Assoziation ist.
quelle
Beide Typen sind natürlich Assoziationen und nicht wirklich streng auf solche Sprachelemente abgebildet. Der Unterschied liegt im Zweck, im Kontext und in der Art und Weise, wie das System modelliert wird.
Vergleichen Sie als praktisches Beispiel zwei verschiedene Systemtypen mit ähnlichen Entitäten:
Ein Autokennzeichensystem, das in erster Linie die Autos und ihre Besitzer usw. im Auge behält. Hier interessiert uns der Motor nicht als separate Einheit, aber wir haben möglicherweise immer noch motorbezogene Eigenschaften wie Leistung und Kraftstoffart. Hier kann der Motor ein zusammengesetzter Teil der Fahrzeugeinheit sein.
Ein Managementsystem für Autowerkstätten, das Autoteile verwaltet, Autos wartet und Teile ersetzt, möglicherweise komplette Motoren. Hier haben wir möglicherweise sogar Motoren auf Lager und müssen diese und andere Teile getrennt und unabhängig von den Autos nachverfolgen. Hier kann der Motor ein aggregierter Teil der Fahrzeugeinheit sein.
Wie Sie dies in Ihrer Sprache implementieren, ist von untergeordneter Bedeutung, da auf dieser Ebene Dinge wie Lesbarkeit viel wichtiger sind.
quelle