Home > Informatik > Begriffe und Konzepte > Aggregation

Aggregation

Definition

Aggregation

Aggregationen sind Spezialfälle der binären Assoziationen (Beziehungen zwischen zwei Klassen bzw. deren Objekten), bei der ein Objekt ein Teil von mehreren zusammengesetzten Objekten sein kann und auch unabhängig von dem zusammengesetzten Objekt existieren kann.

Im Unterricht der gymnasialen Oberstufe werden solche Beziehungen auch als KENNT-Beziehungen bezeichnet. Allerdings trifft das auch für eine andere Art der Assoziation zu, nämlich auf die Komposition.

Beispiel 1
public class Vorlesung
{
    private Dozent leiter;
    public Vorlesung (Dozent doz)
    {
        leiter = doz;
    }
}

Das Objekt doz der Klasse Dozent existiert bereits vorher, bevor es dem Konstruktor der Klasse Vorlesung als Parameter überreicht wird. Wenn die Klasse Vorlesung nicht mehr existiert, kann das Objekt doz dennoch weiter existieren

Beispiel 2 (aus [4])

Eine Klasse Restaurant besitzt als Instanzvariable eine ArrayList stuhl, in der Objekte der Klasse Stuhl gespeichert werden können. Diese Objekte werden aber nicht in den Restaurant-Objekten erzeugt, sondern existieren bereits vorher. Sie werden der ArrayList dann mithilfe der Restaurant-Methode addStuhl(Stuhl s) hinzugefügt:

class Restaurant
{
   ArrayList stuhl = new ArrayList<>();

   public void addStuhl(Stuhl s)
	{
	   stuhl.add(s);
	}
}

Das Objekt s existiert unabhängig von der Klasse Restaurant; der addStuhl()-Methode wird nur eime Referenz auf das unabhängig existierende Objekt übergeben.

Verallgemeinerung [4]

Bei einer Aggregation ist die aggregierende Klasse (in unserem letzten Beispiel Restaurant) nicht für die Erzeugung der aggregierten Teile (in unserem Beispiel die Stuhl-Objekte) zuständig. Die aggregierenden Teile (die Stühle) müssen vorher erzeugt und der aggregierenden Klasse als Referenzen auf bestehende Objekte übergeben werden.

Diese Objekte können gleichzeitig auch von anderen aggregierenden Klassen verwendet werden.

In unserem Beispiel ist das etwas unrealistisch. Ein Stuhl s kann zu einem bestimmten Zeitpunkt t nur ein genau einem Restaurant r stehen und nicht gleichzeitig in zwei oder mehreren Restaurants.

In Java könnte man ein Objekt s der Klasse Stuhl trotzdem gleichzeitig an zwei verschiedene Objekte der Klasse Restaurant übergeben, da ja nur Referenzen übergeben werden, die auf das eigentliche Objekt verweisen.

  1. Lahres et al.: Objektorientierte Programmierung, Rheinwerk Computing 2021.
  2. Barnes, Kölling: Java lernen mit BlueJ - Objects first. Pearson-Verlag 2019.
  3. Ullenboom: Java ist auch eine Insel, Rheinwerk Computing 2023.
  4. Kecher et al.: UML 2.5 - Das umfassende Handbuch, Rheinwerk Computing 2021