26.2 Die abstrakte Klasse Liste
 
Liste Über eine Liste hat man solange Kontrolle, solange man den Kopf, sprich das erste Element kennt. Das Kopf-Element wird in der Literatur häufig auch Anker genannt.  Wir modellieren eine neue Klasse Liste, in der wir allerdings noch offen lassen wollen, wie wir ein Element in die Liste einfügen wollen. Das Einfügen oder Anhängen kann nämlich auf verschiedene Arten geschehen. Da wir die Konkretisierung dieser Methode, d.h. die Festlegung ihrer Funktionalität einer konkreten Klasse vorenthalten wollen, legen wir die Methode haengeAn(Object wert): void in der Klasse Liste abstrakt an. Damit machen wir aber die Klasse selbst abstrakt. Die UML-Notation macht abstrakte Klassen und abstrakte Methoden durch kursive Schreibweise deutlich.
 
UML der Liste

API-Liste


Abb.: 26.2.1 Die Komposition aus  abstrakte Klasse Liste und Element.
 

  Die 'Beziehungslinie' mit dem dem gefüllten Rhombus am einen Ende kennzeichnet eine Komposition. In unserem Beispiel heißt das, dass Element ein unverzichtbarer Bestandteil der (nicht leeren) Liste ist und weiter, dass beim 'Zerstören' der Liste auch alle Elemente mit verloren gehen.
 
Download:
Liste.java
package listen;

public abstract class Liste {

  protected Element kopf;

  public Liste() {
     kopf = null;
  }

  public Object getKopfWert() {
    return kopf.getWert();
  }

  public boolean isEmpty(){
    return kopf == null;
  }

  public void loescheElement(){
    if (!isEmpty()){
      kopf = kopf.getNaechstes();
    }
  }

  public abstract void haengeAn(Object wert);

}
Kommentar

Mit Hilfe des Standardkonstruktors Liste(), erzeugen wir eine leere Liste, d.h. das Kopfelement zeigt auf null.

 

Die Methode haengeAn(Obhject wert): void ist, wie schon angekündigt, abstrakt und muss von einer Klasse, die von Liste erbt, implementiert werden. Eine abstrakte Methode erkennt man zunächst daran, dass vor dem Rückgabewert, hier void, das reservierte Wort abstract steht. Ein weiteres Erkennungsmerkmal ist das Fehlen des Methodenrumpfs; statt dessen folgt der Parameterliste lediglich noch ein Semikolon. Da aber Rückgabewert und Parameterliste spezifiziert sind, liegt auch die Signatur der Methode fest. Klassen, die von Liste erben und die Methode hangeAn(Object wert): void implementieren, sind somit an diese Signatur gebunden.

In der Darstellung des Quelltextes sind wieder alle Kommentare entfernt worden. Im Download sind sie integriert.
 

zu 26.3 Übung
zur Startseite www.pohlig.de  (C) MPohlig 2005