26 Abstrakte Datentypen 26.1 Was ist eine Liste? Jedem der sich mit Informatik beschäftigt, werden irgendwann Begriffe wie Liste oder Baum begegnen. Bei diesen Begriffen handelt es sich um sog. abstrakte Datentypen (ADT). Spezielle Listen wie z.B. ein 'Keller', ist so wichtig, dass er in Java unter dem Namen Stack als Klasse standardmäßig implementiert ist. Wir wollen uns zunächst eine Vorstellung machen von dem was was wir unter einer Liste verstehen wollen. |
|
ADT |
Eine erste Vorstellung von Listen kann man sich machen, wenn man sie von dem abgrenzt, was wir als Felder kennen gelernt haben. Wir betrachten dazu zwei Zeilen aus einem beliebigen Programm
int
n = (int)(100*Math.random()); Die beiden Zeilen zeigen, wie vielfältig Felder in Java verwendet werden können. Sie können alle Arten Daten aufnehmen und ihre Größe ist insofern flexibel, dass erst zur Laufzeit bestimmt wird, wie viele Eintragungen in das Feld vorgenommen werden können. Ist die Länge aber mal gesetzt, wird das ‚Gebilde’ eher starr. Man kann das Feld nicht weiter wachsen lassen, wenn man erkennt, dass noch einige Plätze nötig sind und man kann es nicht schrumpfen lassen, wenn man es zu großzügig angelegt hat. Von Listen verlangen wir, dass sie mit dem Bedarf wachsen und schrumpfen können1). In einem weiteren Punkt unterscheidet sich eine Liste von einem Feld. Während man bei einem Feld über Platznummern wahlfrei auf seine Eintragungen zugreifen kann, ist das bei Listen nicht möglich. Die Eintragungen in der Liste sind Elemente, die zum einen einen Wert tragen und zum anderen auf ein nächste Listenelement verweisen. Das unten stehende Bild zeigt, wie man sich eine Liste aufgebaut vorstellen kann. Leicht ist zu erkennen, dass ein wahlfreier Zugriff auf einzelne Elemente ist nicht mehr möglich.
|
|
|
Wir modellieren zunächst ein Listenelement in Java; seinen Bauplan legen wir konsequenterweise in der Klasse Element an. Wir erkennen,
dass die Verkettung eines Elementes in der Liste mit seinem Nachfolger
dadurch geschieht, dass ein Element neben dem eingetragenen Wert ein Attribut hat, dessen Typ selbst wieder
ein Element ist. Erinnern wir uns: Die Werte von Java-Variablen sind, die
primitiven Datentypen ausgenommen, immer Referenzen. |
|
API der Klasse Element |
|
Der rekursive Aufbau der Klasse
Element ist leicht zu erkennen: Ein Element-Objekt enthält eine Referenz auf
ein anderes Element-Objekt. |
|
Download: Element.java
|
|
Bemerkung |
Dokumentationskommentare
zu der Klasse |
Im nächsten Schritt wollen wir eine erste Liste bauen. | |
Fußnoten |
|
Objekte
der in Java implementierte Klasse Vector können das. [zurück] |
|
Da die
Werte von noch nicht referenziierten Objekten standardmäßig
null
sind, hätte man auf die Zeile
wert = null;
und
naechstes =
null;
verzichten können; lediglich didaktische Gründe veranlassen uns, sie
stehen zu lassen. [zurück] |
|
Wenn das Projekt fertig ist, entfernen
wir den Quelltext aus dem Ordner listen und archivieren es z.B. in einem
Ordner src (Source). [zurück] |
|
zu | 26.2 Die abstrakte Klasse Liste |
zur Startseite | www.pohlig.de (C) MPohlig 2004 |