Helmichs Informatik-Lexikon

Beziehungen

IST-, HAT- und KENNT-Beziehungen

In der Informatik gibt es viele verschiedene Beziehungen zwischen Klassen bzw. zwischen Objekten verschiedener Klassen.

Assoziation

Das ist ein ganz allgemeiner und übergeordneter Begriff. Unter einer Assoziation versteht man eine (irgendwie geartete) Beziehung zwischen zwei Klassen bzw. zwischen den Objekten dieser Klassen. Im Informatik-Unterricht kann man mit diesem Begriff eigentlich nicht viel anfangen, dafür ist er zu allgemein.

Aggregation / HAT-Beziehung

Eine Aggregation beschreibt eine Art Besitz-Verhältnis. Die Objekte der einen Klasse besitzen und benutzen Objekte einer anderen Klasse.

Stellen wir uns die Klassen Held und Waffe vor sowie die Objekte karl der Klasse Held und schwert der Klasse Waffe. Das Objekt karl besitzt dann das Objekt schwert, und alle anderen Objekte der Klasse Held besitzen ebenfalls ein, zwei oder mehrere Objekte der Klasse Waffe.

Realisiert wird eine solche Aggregation oder HAT-Beziehung in Java beispielsweise so:

public class Held
{
   Waffe schwert = new Waffe(2);
   Waffe Dolch   = new Waffe(3);
	
	// weitere Attribute und Methoden ...
}

Jedes Objekt der Klasse Held ist hier automatisch mit zwei unterschiedlichen Waffen ausgestattet, deren Typ beim Erzeugen der Waffen-Objekte mit dem int-Parameter festgelegt wird. Weiter wollen wir auf dieses Beispiel nicht eingehen. Betrachten wir ein anderes Beispiel:

public class Auto
{
   Motor    mot;
   Batterie batt;
	Tank	   tank;
	
	public Auto(Motor m, Batterie b, Tank t)
	{
	   mot = m;
		batt = b;
		tank = t;
	}
					
	// weitere Attribute und Methoden ...
}

Alle Objekte der Klasse Auto besitzen einen bestimmten Motor, eine bestimmte Batterie und einen bestimmten Tank. Hier werden die Objekte mot, batt und tank nicht von der Klasse Auto selbst erzeugt, sondern dem Konstruktor bereits fertig als Parameter übergeben. Aber auch hier gilt die Aussage, dass jedes Objekt der Klasse Auto ein Motor-Objekt, ein Batterie-Objekt und ein Tank-Objekt besitzt oder "hat". Die Bezeichnung HAT-Beziehung ist hier also völlig angemessen.

HAT-Beziehungen

Auf dieser Lexikonseite wird näher auf die HAT-Beziehungen eingegangen.

Komposition

Ein Spezialfall der Aggregation, bei der eine noch stärkere Beziehung zwischen den Klassen bzw. Objekten besteht. Als Beispiel wird oft der Golfplatz genannt, der Objekte der Klasse Loch besitzt. Ein Loch kann für sich alleine nicht bestehen. Ein anderes Beispiel ist das Haus, das aus Räumen besteht (Schlafzimmer, Wohnzimmer etc.). Die Räume für sich können nicht existieren. Ein weiteres Beispiel könnte ein Säugetier sein, dass aus Organen wie Herz, Niere, Leber etc. besteht. Jedes Organ allein könnte nicht existieren, oder ein Buch, das aus einzelnen Kapiteln besteht, die aus Abschnitten zusammengesetzt sind.

In der Informatik-Didaktik bezeichnet man eine solche Aggregation oft als KENNT-Beziehung.

Hier könnte man natürlich kritisch einwenden, dass die Unterscheidung zwischen Aggregation und Komposition bzw. zwischen HAT- und KENNT-Beziehung nicht immer so einfach ist. Das Kapitel eines Buches kann auch in einer Zeitschrift veröffentlicht werden, ein Abschnitt eines Kapitels kann zu Werbezwecken vorab veröffentlicht werden und so weiter. Kapitel und Abschnitte können also sehr wohl auch ohne das Buch existieren.

Schwierige Fälle

Für manche Beziehungen zwischen Objekten verschiedener Klassen gibt es keine eindeutige Bezeichnung, die genauer ist als "Assoziation". Betrachten wir dazu mal folgendes, zugegeben völlig sinnfreies Beispiel.

public class Auto
{
	public void fahren(Strecke s)
	{
	   fahre(s.von,s.nach)
	}
					
	// weitere Attribute und Methoden ...
}

Welche Beziehung besteht zwischen den Objekten der Klasse Auto und dem Objekt s der Klasse Strecke? Eine HAT-Beziehung ist es nicht, denn die Klasse Auto hat kein einziges Attribut der Klasse Strecke. Ist das eine KENNT-Beziehung? Oder einfach nur eine Assoziation?

Vererbung

Bei der Vererbung werden wichtige Attribute und Methoden von einer Klasse auf eine andere Klasse übertragen. Die erste Klasse bezeichnet man dann als Superklasse (auch Oberklasse oder Mutterklasse), die zweite Klasse als Subklasse (auch Unterklasse oder Tochterklasse). In der Informatik-Didaktik wird diese Art der Beziehung als IST-Beziehung bezeichnet.

Man kann auch sagen, die Oberklasse enthält allgemeine wichtige Attribute und Methoden, die für alle Unterklassen wichtig sind (Generalisierung), und die Unterklassen enthalten zusätzliche spezielle Attribute und Methoden, welche dann die konkreten Eigenschaften der jeweiligen Unterklasse definieren (Spezialisierung).

IST-Beziehung

Auf die Vererbung bzw. IST-Beziehung wird auf dieser Lexikonseite genauer eingegangen.