Einleitende Worte
Herzlich willkommen zu einem spannenden Ausflug in die Welt der Objektorientierten Programmierung! Heute dreht sich alles um die Konzepte der Assoziation, Aggregation und Komposition. Diese Begriffe besitzen eine essenzielle Bedeutung in der Objektorientierten Programmierung und werden uns helfen, die Beziehungen zwischen Objekten besser zu verstehen.
Assoziation – Eine einfache Beziehung
Die Assoziation repräsentiert eine Beziehung zwischen Objekten. Es handelt sich hierbei um eine “A” Beziehung. Dabei bestimmt die Beziehung zwischen den Objekten, welche Aktionen ein Objekt im Auftrag eines anderen ausführen kann. Man kann auch sagen, dass eine Assoziation die Multiplizität zwischen Objekten definiert. So können wir eine Beziehung von Eins-zu-Eins, Eins-zu-Viele, Viele-zu-Eins oder Viele-zu-Viele zwischen Objekten definieren. Die Assoziation ist ein allgemeinerer Begriff, der eine Beziehung zwischen Objekten beschreibt. Eine Assoziation bedeutet, dass ein Objekt ein anderes Objekt “benutzt”.
Ein Beispiel hierfür sind Manager und Mitarbeiter. Ein Manager kann mit mehreren Mitarbeitern assoziiert sein und ein Mitarbeiter kann mit mehreren Managern assoziiert sein.
Aggregation – Eine spezielle Form der Assoziation
Die Aggregation ist ein spezieller Typ der Assoziation. Sie stellt eine “die” Beziehung zwischen Objekten dar. Eine Aggregation ist also eine direkte Beziehung zwischen den Objekten. Hierbei gibt es eine wechselseitige Abhängigkeit zwischen den Objekten.
Ein Beispiel hierfür sind Abteilungen und Mitarbeiter. Eine Abteilung kann viele Mitarbeiter haben, aber ein einzelner Mitarbeiter ist nicht mit mehreren Abteilungen assoziiert.
UML Darstellung einer Aggregation (weißes Dreieck):
Die UML Darstellung des obigen Beispiels (Beziehung zwischen Mitarbeiter und Abteilung):
Hierbei sind die Lebenszyklen beider Objekte unabhängig voneinander. Das bedeutet, dass in dieser Assoziation (Aggregation) die Objekte ihren eigenen Lebenszyklus besitzen. Mitarbeiter können existieren, auch wenn es keine Abteilung gibt. Hierbei kann die Abteilung als ein Besitzerobjekt und der Mitarbeiter als ein Kindobjekt bezeichnet werden. Die Besitzer- und Kindobjekte können nicht zu verschiedenen Elternobjekten gehören.
Komposition – Eine spezielle Form der Aggregation
Die Komposition ist ein besonderer Typ der Aggregation. Es handelt sich um eine starke Form der Aggregation. In diesem Fall besitzen die Kindobjekte keinen eigenen Lebenszyklus. Der Lebenszyklus der Kindobjekte hängt vom Lebenszyklus des Elternobjekts ab. Nur das Elternobjekt hat einen unabhängigen Lebenszyklus. Wenn wir das Elternobjekt löschen, werden auch die Kindobjekte gelöscht. Wir können die Komposition als eine “Teil von” Beziehung definieren.
Ein Beispiel hierfür sind Unternehmen und Unternehmensstandorte. Ein Unternehmen kann mehrere Standorte haben. Wenn wir das Unternehmen löschen, werden automatisch alle Unternehmensstandorte gelöscht. Die Unternehmensstandorte haben keinen eigenen Lebenszyklus, sondern sind abhängig vom Lebenszyklus des Unternehmenobjekts (Elternobjekt).
UML Darstellung einer Komposition (schwarzes Dreieck):
Hierbei sind die Lebenszyklen beider Objekte nicht unabhängig voneinander. Das Leben des Unternehmensstandorts kann vom Leben des Unternehmensobjekts bestimmt werden. Das Unternehmen ist für das Erstellen und Löschen der Unternehmensstandorte verantwortlich.
Die Beziehung zwischen Assoziation, Aggregation und Komposition
Aggregation und Komposition sind spezielle Formen der Assoziation. Die Komposition ist wiederum eine spezielle Form der Aggregation. Wir können Aggregation und Komposition als “hat ein” Beziehung definieren. Die Komposition ist jedoch restriktiver und spezifischer. In der Komposition können zusammengesetzte Objekte nicht ohne das andere Objekt existieren. Diese Einschränkung existiert nicht in der Aggregation. In der Aggregation ist das Vorhandensein eines zusammengesetzten Objekts optional. In der Aggregation kann das Kindobjekt über den Lebenszyklus seines Elternobjekts hinaus existieren, während das Kindobjekt in der Komposition nicht über den Lebenszyklus seines Elternobjekts hinaus existieren kann.
Ein kombiniertes Beispiel von Aggregation und Komposition:
Aggregation vs. Komposition
Aggregation | Komposition |
---|---|
Aggregation ist ein spezieller Typ der Assoziation | Komposition ist ein spezieller Typ der Aggregation |
Alle Objekte haben ihren eigenen Lebenszyklus | In der Komposition hat das Kindobjekt keinen eigenen Lebenszyklus, sondern ist abhängig vom Lebenszyklus des Elternobjekts |
Eine Elternklasse ist nicht für das Erstellen oder Löschen der Kindklasse verantwortlich | Die Elternklasse ist für das Erstellen oder Löschen der Kindklasse verantwortlich |
Aggregation kann als “hat ein” Beziehung beschrieben werden | Komposition kann als “hat ein” und “Teil von” Beziehung beschrieben werden, wobei der Unterschied in der Länge der Beziehung zwischen den Objekten besteht |
Aggregation ist eine schwache Beziehung | Komposition ist eine starke Beziehung |
Aggregation bedeutet, dass ein Objekt Besitzer eines anderen Objekts ist | Komposition bedeutet, dass ein Objekt in einem anderen Objekt enthalten ist |
Die Richtung einer Beziehung ist in Aggregation und Komposition erforderlich | Die Richtung gibt an, welches Objekt das andere enthält |
Beide haben eine einzige Richtung der Assoziation | Beide haben einen einzigen Besitzer |
Fazit
Diese drei Begriffe sind sehr wichtig in der Welt der Objektorientierten Programmierung. Sie repräsentieren die Beziehungen zwischen Objekten. Wenn du verwirrt bist oder nicht sicher bist, welche Beziehung am besten als Assoziation, Aggregation oder Komposition beschrieben werden kann, dann kann es als eine Assoziation betrachtet werden.
Ich hoffe, dieser Artikel hat dir geholfen, ein besseres Verständnis für die Konzepte der Assoziation, Aggregation und Komposition zu entwickeln. Nutze dieses Wissen, um deine Objektorientierte Programmierung auf das nächste Level zu bringen!