OSZ Handel I
Informatik

D L I B - eigene Klassen
TListe

S. Spolwig
 

 

Informatik | Unterrichtsmaterialien ]


UNIT uSListe;
(* ******************************************************************** *)
(*                                                                      *)
(* K L A S S E   : TListe - (Teil-)abstrakte Klasse                     *)
(* -------------------------------------------------------------------- *)
(* Version       : 2.01                                                 *)
(* Autor         : (c) S. Spolwig, OSZ-Handel I, 10997 Berlin           *)
(*                                                                      *)
(* Aufgabe       : Allgemeine statische Liste zur Verwaltung beliebiger *)
(*                 Objekte.                                             *)
(*                 Zum Bewegen in der Liste ist intern eine Listenmarke *)
(*                 mitgefuehrt, die die jeweils aktuelle Listenposition *)
(*                 bezeichnet. Alle Operationen werden auf der aktuellen*)
(*                 Position ausgefuehrt.                                *)
(*                 In abgeleiteten Klassen sollte der Elemententyp de-  *)
(*                 klariert und die abstrakten Methoden Load, Store und *)
(*                 SearchElement überschrieben werden.                  *)
(*                                                                      *)
(*                 (SLISTE entspricht SLISTEN in Turbo-Pascal.)         *)
(*                                                                      *)
(* Compiler      : Delphi 4.0                                           *)
(* Aenderung     : V. 1.0   - 20-AUG-97                                 *)
(*                    1.02  - 03-SEP-98   Load, Store                   *)
(*                    1.03  - 06-Okt-98   SearchElement                 *)
(*                    1.04  - 17-JUL-99   Init, IsFull, Append,         *)
(*                                        First,Last,Next,Prev neu spez.*)
(*                    2.0   - 21-OKT-99   abstr. Methoden: Load, Store  *)
(*                                        SearchElement                 *)
(*                    2.01  - 13-OKT-00   GetAktuellePos                *)
(* ******************************************************************** *)
INTERFACE
(* ==================================================================== *)
const
   MAXLAENGE = 1000;

type
  TListe  = class (TObject)
    protected
     Kollektion  : array [0..MAXLAENGE + 1] of Pointer;
     ListenLaenge,             // Anzahl der belegten Elemente
     AktuellePos : word;       // aktives Element oder EoList

    public
     constructor Create;  virtual;
     procedure Init;      virtual;

     procedure First;     virtual;
     procedure Next ;     virtual;
     procedure previous;  virtual;
     procedure Last ;     virtual;

     function  GetElement : Pointer;          virtual;
     procedure SetElement (Elem : Pointer);   virtual;
     procedure Append (Elem : Pointer);       virtual;
     procedure Remove;                        virtual;
     procedure RemoveAll;                     virtual;
     function  GetLen  : integer ;            virtual;
     function  GetAktuellePos : integer ;     virtual;

     function  EoList  : boolean;             virtual;
     function  IsFirst : boolean;             virtual;
     function  IsLast  : boolean;             virtual;
     function  IsEmpty : boolean;             virtual;
     function  IsFull  : boolean;             virtual;
     function  SearchElement (suchElem : Pointer) : Pointer; virtual; //abstract
     procedure Load (Dateiname : string);     virtual;  //abstract
     procedure Store(Dateiname : string);     virtual;  //abstract
  end;

(*  ----------------- B e s c h r e i b u n g -------------------------

Oberklasse     : TObject
Bezugsklassen  : -
Methoden
--------

Create
  Auftrag : Leere L. erzeugen
  vorher  : -
  nachher : ListenLaenge ist Null, AktuellePos ist 0.

Init
  Auftrag : L. initial.
  vorher  : L. ist vorhanden
  nachher : ListenLaenge ist Null, AktuellePos ist 0.


First
  Auftrag : Listenmarke auf das 1. (vorhandene) Element setzen
  vorher  : Die Liste ist nicht leer
  nachher : Aktuelle Position ist 1.
            Ist die Liste leer , geschieht nichts


Next
  Auftrag : Die Listenmarke auf das naechste Element setzen.
  vorher  : Die Liste ist nicht leer und akt. Pos ist nicht letztes El.
  nachher : Die Marke steht auf der neuen aktuellen Position
            ist die Liste leer oder EoList erreicht, geschieht nichts.


Previous
  Auftrag : Die Listenmarke um eins auf das vorhergehende Element zuruecksetzen
  vorher  : Die Liste ist nicht leer und akt. Pos ist nicht 1. Element.
  nachher : Die Marke steht auf der neuen aktuellen Position.
            Ist die Liste leer oder die aktuelle Position war 1, geschieht nichts.


Last
  Auftrag : Listenmarke auf das letzte Element der Liste setzen
  vorher  : Die Liste ist nicht leer.
  nachher : Letztes vorhandenes Element ist aktuelle Position


GetElement
  Anfrage : Zugriff auf das aktuelle Element zum Lesen
  vorher  : Die Liste ist nicht leer.
  nachher : GetElement liefert das aktuelle Element.


SetElement (Elem : Pointer)
  Auftrag : Zugriff auf die aktuelle Position zum Schreiben
  vorher  : Die Liste ist initialisiert.
  nachher : Elem ist an aktueller Position uebergeben


Append (Elem : Pointer)
  Auftrag : Neues Element an das Ende der Liste anhaengen.
            Wenn die Liste leer war, ist das neue El. das erste.
  vorher  : Die Liste ist initialisiert
  nachher : Listenlaenge ist um eins erhoeht. Ist die Liste voll,
            geschieht nichts.

Remove
  Auftrag: Das aktuelle Element loeschen.
  vorher : Die Liste ist nicht leer.
  nachher: Das aktuelle Element ist aus der Liste entfernt. Die Listen-
           laenge ist um eins vermindert. AktuellePos ist 0.

RemoveAll
  Auftrag: Alle Elemente aus der Liste entfernen
  vorher : -
  nachher: Die Liste ist leer. AktuellePosition ist 0.


EoList
  Anfrage: ob das Ende der Liste erreicht ist.
  vorher : Die Liste ist initialisiert.
  nachher: True, wenn Ende der Liste erreicht ist. Die Listenmarke
           steht hinter dem letzten belegten Element.


IsEmpty
  Anfrage: ob Liste leer ist
  vorher : Die Liste ist initialisiert.
  nachher: True, wenn die Liste leer ist.


GetLen
  Anfrage: gibt Listenlaenge zurueck
  vorher : Liste ist initialisiert
  nachher: -


SearchElement (suchElem : Pointer) : Pointer;
  Anfrage: ob suchElem in der Liste gefunden wurde
  vorher : -
  nachher: Gefundenes Element wird zurückgegeben. Wenn Liste leer ist oder
           nicht gefunden wird EoList zurückgegeben.


Load (dateiname : string);
  Auftrag: Liste aus externer Datei laden. Wenn keine Datei existiert,
           dann neue Datei mit der Laenge 0 anlegen.
  vorher : Die Liste ist initialisiert.
  nachher: Die Liste ist in den Arbeitsspeicher geladen. Datei ist geschlossen.


Store (dateiname : string);
  Auftrag: Liste in externe Datei speichern
  vorher : -
  nachher: Die Liste ist gespeichert. Ist die Liste leer, wird nichts
          gespeichert. Datei ist geschlossen.

----------------------------------------------------------------------- *)



 

 05. April 2006   ©  Siegfried Spolwig

page_top