Assoziation, Komposition, Aggregation

Status
Nicht offen für weitere Antworten.

gadget

Mitglied
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

Top Contributor
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.
 

SnooP

Top Contributor
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.
 

SnooP

Top Contributor
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.
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben