28.2 Die abstrakte Klasse Liste
 
Liste Über eine Liste hat man solange Kontrolle, solange man den Kopf, sprich das erste Element kennt. Ein Element, über das man einen direkten Zugriff auf die Liste hat, könnte man Anker nennen. Anker werden auch benötigt, um die zwei wesentlichen Operationen auf Listen auszuführen, nämlich das Anhängen und das Ausgeben der Listenelemente. Wir modellieren eine neue Klasse Liste, in der wir allerdings noch offen lassen wollen, wie wir anhängen. Das Anhängen kann nämlich auf zwei Arten geschehen. Wie wir noch sehen werden, erhalten wir nämlich je nachdem wie wir das Anhängen realisieren eine LIFO – Liste oder eine FIFO – Liste. Deshalb legen wir das Anhängen in einer abstrakten Methode an und machen damit Liste zu einer abstrakten Klasse.
 
UML der Liste

Download:
Liste.java
package adt;

public abstract class Liste {

    protected Element kopf = null;
    
    public void gibAus() {
        Element lauf = kopf;
        while (lauf != null) {
            System.out.print(lauf.getWert()+ ", ");
            lauf = lauf.getNaechstes();
        }
        System.out.println();
    }

    public abstract void haengeAn(Object wert);
}
Kommentar

Die Klasse Liste enthält, da kein anderer Konstruktor implementiert ist, den leeren Standardkonstruktor Liste(). In der Methode gibAus() wird lauf vom Typ Element deklariert und mit kopf initialisiert. Das Element-Objekt kopf spielt also die Rolle des Ankers. In der while-Schleife werden die Werte der Elemente in der Liste solange ausgegeben, bis das letzte Listenelement erreicht ist, d.h. bis naechstes auf null zeigt. Das ‚Durchhangeln’ durch die Liste geschieht in der Zeile:

lauf = lauf.getNaechstes();

Die Situation vor dem Abarbeiten der Zeile:

 

  Die Situation nach dem Abarbeiten der Zeile:
 

 

Die Methode haengeAn() ist, wie schon angekündigt, abstrakt und muss von einer Klasse, die von Liste erbt, implementiert werden.
 

zu 28.3 ListeLIFO
zur Startseite www.pohlig.de  (C) MPohlig 2004