Kleines Nachschlagewerk Informatik
Beziehungen zwischen Klassen/Objekten
Worum geht es?
Klassen können zu anderen Klassen in Beziehung stehen. Hierbei unterscheidet man drei Arten, die hier aufgezeigt werden.
Assoziation - Kennt-Beziehung
Besteht eine Kennt-Beziehung, so sind Objekten einer Klasse Objekte einer anderen Klasse bekannt. Derartige Beziehungen können gerichtet (Ein Fahrer kennt sein Auto. Das Auto kennt den Fahrer nicht.) oder ungerichtet (Der Chef kennt die Sekretärin, die kennt auch den Chef.) sein.





Meistens werden Assoziationen mit einer durchgezogenen Linie gezeichnet. Ist die Beziehung gerichtet, zeichnet man einen offenen Pfeil.

In der konkreten Umsetzung bedeutet dies, dass ein Objekt eine Referenz auf ein anderes Objekt bekommt.

      public class Fahrer {
          ...
          public setzeAuto(Auto a)
          {
              meinAuto = a;
          }
          ...
      }
            
Aggregation - Hat-Beziehung 1
Wenn ein Objekt Objekte einer anderen Klasse besitzt, so spricht man von einer Hat-Beziehung. Ein Gangster hat eine Maske. Kann das Objekt, welches von einem anderen Objekt besessen wird - also die Maske - allein existieren, so spricht man von einer Aggregation.





Dargestellt wird dies mit einer Raute.

Im Quelltext würde dies z.B. so aussehen, wenn im Konstruktor auch die Maske erzeugt wird. Verschwindet der Gangster aus dem Spiel, so verschwindet auch die Maske.

      public class Gangster {
          ...
          public Gangster()
          {
              maske = new Maske();
              ...
          }
          ...
      }
            
Komposition - Hat-Beziehung 2
Eine zweite Art der Hat-Beziehung ist die Komposition. Sie unterscheidet sich von der Aggregation dadurch, dass die Einzelteile nicht allein existieren können.

So hat ein Haus Zimmer, diese können aber allein nicht existieren. Die Raute ist im Gegensatz zur Aggregation ausgefüllt. Die Kardinalitäten (also welche Objekte können wie viele Objekte besitzen) werden durch Zahlen an der Verbindung dargestellt.





Im Quelltext sieht es wieder so aus, dass ein Objekt die anderen erzeugen muss.

      public class Haus {
          ...
          public Haus()
          {
              kinderZimmer = new Zimmer();
              arbeitsZimmer = new Zimmer();
              ...
          }
          ...
      }
            
Vererbung - Ist-Beziehung
Es wurde bereits erwähnt, dass neben Datenkapselung die Vererbung das wichtigste Element der OOP ist. Vererbung bedeutet, dass die erbende Klasse alles von ihrer Superklasse nutzen kann. Die erbende Subklasse kann Methoden verändern, hinzufügen und ebenso Attribute hinzufügen.





Da Vererbung besonders wichtig ist, bekommt sie ein eigenes Kapitel .
Zur Beachtung