is-Logo


Liste - Implementation

S. Spolwig

[Home | Algorithmen]
[Startseite]

Page down

C. Die Implementations-Sicht

Wie läßt sich die Liste in Object-Pascal / Delphi realisieren?

Die Sprache bietet als eine einfache Lösung einen Datentyp Array (Feld) an, der  sich so darstellen lässt:

Der Datentyp ARRAY

    Der Datentyp Array ist ein strukturiertes Datenobjekt mit
Komponenten des gleichen Elementtyps

Deklaration

var Kollektion : array[0..6] of  ElementTyp

Damit ist eine statische Liste deklariert; d. h. es wird vorher festgelegt, wie viele Elemente die Liste aufnehmen kann. Änderungen der der Feldlänge (maximalen Listenlänge) zur Laufzeit sind nicht möglich. Der Index muss skalar (aufzählbar) sein.

Als Listenlänge soll vereinbart sein die aktuelle Anzahl der belegten Komponenten; hier sind es 4.
Arrays werden intern von Null an gezählt, aber es ist praktischer, den Listenanfang auf das Feld [1] zu legen.

Die Endemarke NIL setzen wir selbst hinter das letzte vorhandene Element; damit haben wir ein sicheres Listenende.

Zugriff

  Array ist eine Struktur mit direktem Zugriff auf einzelne Komponenten
mit ArrayVariable[index].

Beispiele mit einem array [...] of string;

- Schreibender Zugriff:

Kollektion[2] := 'Rudi';

oder

Kollektion[4] := Kollektion[3];  // Zuweisung bei gleichem Typ


- Lesender Zugriff

Name := Kollektion[1];

Die passende Kontrollstruktur zu einem Feld ist die Schleife, mit der sich das ganze Feld überstreichen lässt.

for index := 1 to Listenlaenge do
begin
  Kollektion[index] := '';    
en;

 Da der Index skalar ist, lässt er sich auch berechnen:

for index := 1 to Listenlaenge do
begin
  Kollektion[index] := Kollektion[index + 1];    
end;

-----------------------------------------------------------------

In OOP / MVC wird man den schreibenden bzw. lesenden  Zugriff mit den Methoden

SetElement(el: TElement) ;
GetElement : TElement;

realisieren.


==> Ausblick

Die obige Beschreibung ist zwar nicht falsch, aber auch nicht die ganze Wahrheit. Da wir komplexe Objekte in der Liste ablegen, würde man vermuten, dass sich die Objekte dann auch physikalisch in den "Fächern" der Kollektion befinden. Das ist jedoch nicht so. Delphi legt in der Liste lediglich die Adressen (Zeiger, Pointer) ab, wo sich das einzelne Objekt im Arbeitsspeicher befindet, etwa so, wie Links in einer Webseite, die auf andere Seiten zeigen, die wo anders gespeichert sind.

Zeiger-Liste

Diese Tatsache lässt sich auch nutzbringend für die Konstruktion von Listen verwenden, die nur aus Zeigerketten bestehen und eine Reihe von Vorteilen bieten, jedoch aufwändiger zu implementieren sind.



©    05. Oktober 2008    Siegfried Spolwig

page_top