Eine Aggregation ist eine Beziehung zwischen Objekten. Sie ist eine Sonderform
der Assoziation. Sie ermöglicht komplexe Funktionen auf Basis einfacher Funktionen
zu entwickeln. Dies geschieht durch Delegation. Ein Objekt, das etwas kann, verlangt
von einem anderen Objekt mit anderen Fähigkeiten für Ihn eine Aufgabe
zu erledigen und das Ergebnis zurück zu liefern. Dies ersetzt die Vererbung.
Da diese neue Funktionalität durch Objekte getragen wird, kann sie sich,
bei Änderungen zur Laufzeit des Programmes dynamisch den neuen Gegebenheiten
anpassen. Dies ist bei einer Klassenbeziehung (Vererbung), wenn diese statisch
definiert ist, nicht möglich! Damit das aber funktioniert, müssen die
Objekte austauschbar = vom gleichen Typ = eine gemeinsam definierte Schnittstelle
besitzen, obwohl sie unterschiedliche Methoden implementieren! Dies erreicht
man, indem man nur den Typ des Objektes festlegt. Dazu dient das Interface.
Obwohl die Teile gemeinsam ein neues Ganzes ergeben, verbleiben sie noch sehr
selbstständig. Unter ein neues Ganzes wird verstanden, dass die Summe der
Teile einen neuen semantischen Zweck ergeben. Die Teile könnten zur selben
Zeit auch woanders eingesetzt werden. Die Aggregation bedeutet daher eine UND
Relation bei einer Zusammensetzung.
Beispiel: Mehrere Personen, Haus und Geräte bilden zusammen eine Firma.
Objekte sind in einer als Teil-von-Ganzen oder Ist-Teil-von Beziehung. Die Teile
können unabhängig vom Ganzen existieren.
Daraus folgt:
- Ist B ein Teil von A, dann kann A nicht ein Teil von B sein.
- Ist C ein Teil von B und B ein Teil von A, dann ist C ein Teil von A.
Es findet eine Fortpflanzung von Attributwerten und/oder Operationen statt.
Die Fortpflanzungsrichtung geht nur vom Anfangsobjekt zu den nächsten.
Eine Umkehrung ist nicht möglich. Manche Operationen auf das Ganze werden
auf die Teile angewandt. Eine Objektklasse ist der anderen untergeordnet.
Kennzeichen in UML-Diagramm ist die weiße Raute.
Eine Beziehung zwischen Objekten erfolgt durch Instanzierung des Objektes, mit
dem eine Beziehung aufgebaut werden soll. Bei einem Objekt erfolgt dies durch
z.B. new, bei mehreren Objekten meist über die Vektorklasse. API:
java.lang.Comparable