# Assoziation, Komposition, Aggregation



## gadget (28. Mai 2007)

Hallo zusammen!

Ich habe zu den oben genannten Begriffen nur eine theoretische Erklärung gefunden.
Worin unterscheiden Sie sich in der Implementierung?

Weil in jedem der oben genannten Verbindungen enthält doch die Klasse die Referenz auf ein Objekt der anderen Klasse.


Vielen Dank
Gruß


----------



## SnooP (28. Mai 2007)

Ja das ist richtig... - in den meisten Fällen wird in der Praxis implementierungstechnisch da auch kein Unterschied gemacht... es macht ja auch nicht sooo viel Sinn implementierungstechnisch z.B. das Erstellen von Objekten nur als Komposita eines Kompositums zu erlauben.... 

Also eine Aggregation/Komposition ist in den meisten Fällen eher eine Absichtserklärung als was wirklich erzwingendes.


----------



## gadget (28. Mai 2007)

ok, danke erstmal.

Was sind dann eigentlich so genannte uses? (also gestrichelter Pfeil)?

Gruß


----------



## SnooP (28. Mai 2007)

hab ich jetzt erst vor kurzem in nem längeren thread diskutiert  .. guck mal dort nach...

kurz gesagt: lose Beziehungen zwischen Klassen... z.B. die Verwendung eines Objekts einer Klasse innerhalb einer Methode... sprich man ruft per new ein neues Objekt hervor und greift auf dessen Methoden zu... man benutzt es also. Gibt da aber versch. lose Kopplungen die versch. Stereotypen haben können... z.B. schlichtes <<create>> bei Factories.


----------



## gadget (28. Mai 2007)

eine Assoziation ist doch dann nichts anderes als eine lose Verbindung, oder?

Gruß


----------



## SnooP (29. Mai 2007)

Nein eine Assoziation verdrahtet eine Klasse fest mit einer anderen... z.B. wenn du eine Klasse Unternehmen hast, die über eine Assoziation mit einer Klasse Mitarbeiter verbunden ist (1 : * - sprich genauer eine Liste: List<Mitarbeiter>), dann besteht immer eine Beziehung zwischen diesen beiden Klassen und natürlich auch zwischen Objekten dieser Klassen... das ist statisch und durch das Klassendesign so vorgesehen...

anders bei den --> gestrichelten Abhängigkeits-Pfeilen. Das ist wieder nur eine Absichtserklärung bzw. auch bei Analyse des Quelltextes eine Feststellung, das Klassen in Beziehung stehen... alleine durch die Struktur der Klasse (Klassen selbst, öffentliche Methoden, Attribute) kann man diese Beziehung nicht erkennen... man muss in den Quelltext gucken oder aber die semantische Bedeutung der Klassen kennen um sagen zu können, Klasse A uses B.


----------

