Ich verstehe, was Komposition in OOP ist, aber ich kann keine klare Vorstellung davon bekommen, was Aggregation ist. Kann das jemand erklären?
object-oriented
Vinoth Kumar CM
quelle
quelle
Aus http://en.wikipedia.org/wiki/Object_composition
Während Sie also eine Eigentumsbeziehung zur Komposition haben, wird das besessene Objekt auch zerstört, wenn der Besitzer es ist. Eine Aggregation (und die darin enthaltenen Objekte) können unabhängig voneinander existieren.
-
Update: Entschuldigung - diese Antwort ist im Nachhinein viel zu einfach.
c.batt liefert in seiner Antwort eine hervorragende Definition: Aggregation vs. Komposition
quelle
Es gibt keine einzige Erklärung. Verschiedene Autoren meinen verschiedene Dinge durch Aggregation. Die meisten meinen damit eigentlich nichts Konkretes.
quelle
Zusammensetzung ist eine Vereinigung
Aggregation ist eine Assoziation
Zusammensetzung ist eine starke Assoziation (Wenn die Lebensdauer eines enthaltenen Objekts vollständig vom Containerobjekt abhängt, spricht man von einer starken Assoziation)
Aggregation ist eine schwache Assoziation (Wenn die Lebensdauer des enthaltenen Objekts nicht vom Containerobjekt abhängt, spricht man von einer schwachen Assoziation.)
Beispiel:
quelle
Komposition (Mischung) ist eine Möglichkeit, einfache Objekte oder Datentypen zu komplexeren zu kombinieren. Kompositionen sind ein kritischer Baustein vieler grundlegender Datenstrukturen
Aggregation (Sammlung) unterscheidet sich von gewöhnlicher Zusammensetzung darin, dass sie nicht Eigentum impliziert. Wenn in der Komposition das besitzende Objekt zerstört wird, werden auch die enthaltenen Objekte zerstört. In Summe ist dies nicht unbedingt wahr
Beide bezeichnen die Beziehung zwischen Objekt und unterscheiden sich nur in ihrer Stärke.
UML-Notationen für unterschiedliche Arten von Abhängigkeiten zwischen zwei Klassen
Zusammensetzung : Da der Motor Teil des Autos ist, ist die Beziehung zwischen ihnen Zusammensetzung. So werden sie zwischen Java-Klassen implementiert.
Aggregation : Da die Organisation Person als Mitarbeiter hat, ist die Beziehung zwischen ihnen Aggregation. So sehen sie in Bezug auf Java-Klassen aus
Quelle
quelle
Aggregation ist eine einfache Sammlung, wie eine Tüte Murmeln
Komposition impliziert interne / funktionale Abhängigkeiten, wie die Scharniere einer Box
Autos aggregieren Passagiere; Sie steigen ein und aus, ohne die Funktionalität des Autos zu beeinträchtigen
Die Reifen sind Komponenten; Entfernen Sie eine und das Auto funktioniert nicht mehr richtig
[Hinweis: Der Reserverad ist ein Aggregat!]
quelle
Ich betrachte Komposition immer als „braucht ein“, dh ein Auto braucht einen Motor, und ich betrachte Aggregation als „Dinge, die für einen Zweck in Beziehung stehen“. Wenn ich mich also an die Autoanalogie anschließe, kann meine Ansammlung darin bestehen, eine Reise darzustellen, bei der ein Auto und Passagiere zusammengebracht werden. Die Reise gehört weder dem Auto noch den Passagieren. Ich sammle Daten, die sich auf ein bestimmtes Szenario beziehen. Wenn die Reise beendet ist, fahren das Auto und die Passagiere weiter. Wenn ein Auto beendet ist, werden das Auto und sein Motor normalerweise zusammen zerstört.
quelle
Semantisch gesehen bestehen alle Mengen aus Teilmengen, richtig? Deshalb:
Die Aggregation erfolgt, wenn diese Teilmengen unabhängig von der Vatermenge existieren. B. ein Monitor vom Computer getrennt werden kann, um mit einem anderen verbunden zu werden.
Die Zusammensetzung ist, wenn diese Teilmengen von der Existenz der Vatermenge abhängen. Wie ein Blatt ist ein Teil eines Baumes oder die Leber ist ein Teil eines Körpers.
Diese Konzepte befassen sich konzeptionell mit der Art der Abhängigkeit zwischen zwei Objekten oder Klassen. Direkt in einem Programm, in einer Aggregation, wenn das Vaterobjekt verfügbar ist, sollten auch die aggregierten Objekte verfügbar sein. In demselben Szenario für eine Komposition bleiben zusammengesetzte Sohnobjekte bestehen, und das Vaterobjekt wird ausgegeben.
quelle
Wie wäre es mit diesem einfachen Beispiel:
Ein Array von Objekten ist eine Komposition. Ein Array von Zeigern auf Objekte ist eine Aggregation.
Wenn ich den ersten lösche, verschwindet sein Inhalt damit. Andererseits kann die zweite Methode verschwinden, ohne die Existenz ihrer Mitglieder zu beeinträchtigen, es sei denn, es gibt eine bestimmte Methode, die jedes Objekt löscht, wenn sein Zeiger gelöscht wird.
quelle