# Unterschied zwischen Assoziation, Aggregation u. Komposition



## Guest (29. Apr 2008)

Hi zusammen,

folgende Frage habe ich bezüglich des Klassendiagramms:

Wo ist der konkrete Unterschied zwischen Assoziation, Aggregation und Komposition? Der Unterschied zwischen Aggregation und Komposion ist mir schon klar, allerdings wird mir der Unterschied zwischen den beiden anderen Begriffen nicht klar.

Angenommen es existieren die Objekte A, B und C.
Meine Annahme:

Aggregation
Bei einer Aggregation verweist Objekt A auf B, weil in Java Objekte nur auf andere Objekte refenzieren können und sie nicht diese nicht direkt enthalten können, richtig? Wieso eigentlich? ???:L 
Objekt C verweist ebenfalls auf B.
Nun wird A zerstört. Zwar ist die Beziehung zwischen A und B zerstört, weil A zerstört wurde, aber es existiert immerhin noch die Beziehung C - B. Da B eine Beziehung auch zu C eingegangen ist, lebt das Objekt weiter. B wurde also in mehreren Objekten eingebunden.

*Mein Hauptproblem: Wo ist dann der Unterschied zwischen Assoziation und Aggregation? Dasselbe geschilderte Beispiel könnte schließlich auch auf eine Assoziation zutreffen, denn bei einer Assoziation existieren meiner Meinung nach auch zu einem Objekt mehrere Beziehungen.*

Komposition
Bei einer Aggregation verweist Objekt A auf B.
B geht ausschließlich diese Beziehung ein. D.h. C ist in diesem Fall unbeteiligt.
Nun wird A zerstört. B stirbt auch, weil es nicht mehr refenziert ist.

Wie sieht dann so etwas programmiertechnisch aus? Ich weiß, dass die Unterschiede bereits in anderen Threads bearbeitet wurden, allerdings nicht in diesem Kontext.


----------



## maki (29. Apr 2008)

Komposition und Aggregation sind beides Assoziationen, ist ein Überbegriff.

Komposition(besteht aus) hat mehr semantik als Aggregation(kann haben, muss aber nicht).

Aggregation ist wichtig für Sprachen, in denen man Objekte manuell zerstören muss, wie C++.
In Java hat man diese Bürde nicht mehr, Komposition ist vorzuziehen wo immer möglich, da mehr Semantik und dadurch mehr Aussagekraft.

Programmiertechnissch sind die beiden nicht einfach zu unterscheiden, die meisten Reverseengineering Tools machen sowohl aus Aggregation als auch aus Komposition eine einfache Assoziation...

Wenn im Konstruktor Objekte erzeugt/übergeben werden, ist die Chance groß dass es sich dabei um Komposition handelt.


----------



## byte (29. Apr 2008)

http://de.wikipedia.org/wiki/Assoziation_(UML)#Komposition_und_Aggregation


----------



## Guest (29. Apr 2008)

Es hängt also vom Auge des Betrachters ab, wie man eine Beziehung zwischen Objekten als Assoziation oder Aggregation sieht?


----------



## maki (29. Apr 2008)

Nö, es sind zwei unterschiedliche Konzepte, die jeweils etwas anderes Ausdrücken.
Das Problem ist, diese Konzepte im Code zu erkennen und zu unterscheiden.

http://martinfowler.com/bliki/AggregationAndComposition.html


----------



## byte (29. Apr 2008)

@Gast: Ich würds eher anders sagen: Aggregation ist mehr ein akademisches Konstrukt der UML, das in der Praxis eher wenig Sinn ergibt, weil die Semantik nicht eindeutig ist. Welchen Sinn hat ein UML-Konstrukt, dass jeder anders interpretieren kann? Genau: gar keinen! 

Wenn Du ausdrücken willst, das ein Objekt nicht ohne das andere existieren kann, dann modellierst Du das per Komposition. Alles andere ist (in meine Augen) eine simple Assoziation.


----------



## Guest (29. Apr 2008)

Danke für die schnellen Antworten. Mal sehen wie das die Prüfer dann hinterher sehen  .


----------



## Grebloc (15. Jun 2011)

Hi,

 est ist so, daß die Komposition ein Spezialfall der Aggregation ist.

Seinen A & B Objekte.

Bei der Aggregation sind die Multiplizitäten wie folgt definiert:

Null oder Eins oder viele Objekte vom Typ A stehen in Beziehung zu Null oder Eins oder Viele Objekte
vom Typ B.

Beim Spezialfall, der Komposition, entfallen die "Null" und "viele" vor Typ A und die Multiplizitäten sind wie folgt definiert:

Ein Objekt vom Typ A steht in Beziehung zu Null oder Eins oder Viele Objekte
vom Typ B.


hoffe ich konnte, selbst nach 3 Jahren, helfen 

Grebloc


----------

