Home > Informatik > Begriffe und Konzepte > Komposition

Komposition

Definition

Komposition

Unter dem Begriff Komposition versteht man eine Assoziation, bei der ein Objekt x ein Teil von genau einem zusammengesetzten Objekt k ist. Sobald das Objekt k nicht mehr existiert, hört auch das Objekt x auf zu existieren.

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

Starke Kompositionen oder HAT-Beziehungen

Beispiel
public class Vorlesung
{
    private Dozent leiter;
    public Vorlesung (String nameDesLeiters)
    {
        leiter = new Dozent(nameDesLeiters);
    }
}

Die Instanzvariable leiter wird im Konstruktor der Klasse Vorlesung neu erzeugt.
Wenn das Vorlesungs-Objekt gelöscht wird, erlischt auch das Dozent-Objekt leiter.

Beispiel aus dem Shapes-Projekt: Ein Objekt der Klasse Zeichnung erzeugt zwei Objekte der Klasse Circle (sonne und mond) als Instanzvariablen. Solange das Zeichnungs-Objekt existiert, existieren auch die beiden Circle-Objekte sonne und mond. Wird das Zeichnungs-Objekt beendet, erlischt auch die Lebensdauer der beiden Circle-Objekte.

Das zusammengesetzte Objekt wird hier als Kompositum bezeichnet.

Diese Art der Komposition, bei der die Objekte der anderen Klasse Instanzvariablen der Hauptklasse sind, wird in verschiedenen Quellen unterschiedlich bezeichnet: Starke Komposition oder dauerhafte Komposition. In der Informatik-Didaktik spricht man auch oft von HAT-Beziehungen.

Schwache Kompositionen oder KENNT-Beziehungen

Beispiel
public class Hauptklasse
{

// Code ...

   public void Methode()
	{
      Person pers = new Person("Mustermann","Karl")
      pers.anzeigen();
      // weiterer Code ...
	}
}

Das Objekt pers der Klasse Person ist hier keine Instanzvariable, die dauerhaft mit dem Objekt der Hauptklasse verbunden ist, sondern wird lokal in einer Methode erzeugt. Das Objekt pers hört auf zu existieren, sobald die Methode beendet wird.

Damit hat die Beziehung zwischen der Hauptklasse und dem Objekt pers eine ganz andere Dimension als bei der HAT-Beziehung oder starken Komposition. In der Fachliteratur spricht man von einer schwachen oder temporären Komposition, und in der Informatik-Didaktik wird diese Assoziation oft als KENNT-Beziehung bezeichnet.

Aggregation

Nicht zu verwechseln sind diese beiden Arten der Komposition mit der Aggregation:

public class Vorlesung
{
    private Dozent leiter;
    public Vorlesung (Dozent leiter)
    {
        this.leiter = leiter;
    }
}

Das Objekt leiter wird hier nicht von der Klasse Vorlesung als Instanzvariable erzeugt, sondern leiter wird dem Konstruktor von Vorlesung als Parameter übergeben. Das heißt, das Objekt leiter hat schon vorher existiert und kann auch nach "Sterben" des Vorlesungs-Objektes noch weiterleben. Eine solche Assoziation wird als Aggregation bezeichnet.

  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. Wikipedia, Artikel "Assoziation"
  5. Kecher et al.: UML 2.5 - Das umfassende Handbuch, Rheinwerk Computing 2021