UNIT uStack;
(* ******************************************************************** *)
(* K L A S S E : TStack - generische Klasse *)
(* -------------------------------------------------------------------- *)
(* Version : 1.1 *)
(* Autor : (c) S. Spolwig, OSZ-Handel I, 10997 Berlin *)
(* *)
(* Aufgabe : Allgemeine statische Liste (Stack)zur Verwaltung *)
(* beliebiger Objekte. Hinzufuegen eines Elements am *)
(* Ende (Push), Entnehmen (Pop) vom Ende. *)
(* In abgeleiteten Klassen sollten der Elemententyp de- *)
(* klariert und die abstrakten Methoden Load, Store *)
(* ueberschrieben werden. *)
(* Compiler : Delphi 4.0 *)
(* Aenderung : V. 1.0 - 20-DEC-99 *)
(* 1.1 - 18-APR-05 SollLaenge, um unterschied- *)
(* liche Listenlaengen festzulegen*)
(* ******************************************************************** *)
INTERFACE
(* ==================================================================== *)
const
MAXLAENGE = 200; // reicht für alle Felder
type
TElement = Pointer;
TStack = class (TObject)
private
Kollektion : array [0..MAXLAENGE + 1] of TElement;
SollLaenge,
LiLaenge : Word; // Anzahl der belegten Elemente
public
constructor Create; virtual;
procedure Init;
procedure Push (Elem : TElement);
function Pop: TElement;
procedure RemoveAll;
procedure SetSollLaenge (sl : Word);
function GetLen : integer ;
function IsEmpty : boolean;
function IsFull : boolean;
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 : Lilaenge ist Null.
Init
Auftrag : L. initial.
vorher : L. ist vorhanden
nachher : Lilaenge ist Null, SollLaenge ist MAXLAENGE.
Pop
Anfrage : Zugriff auf das letzte Element zum Lesen
vorher : Die Liste ist init.
nachher : Liefert das aktuelle Element. Danach ist es aus der Liste entfernt.
Wenn die Liste leer war wird NIL geliefert.
Push
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.
RemoveAll
Auftrag: Alle Elemente aus der Liste entfernen
vorher : -
nachher: Die Liste ist leer.
IsEmpty
Anfrage: ob Liste leer ist
vorher : Die Liste ist initialisiert.
nachher: True, wenn die Liste leer ist.
IsFull
Anfrage: ob Liste voll ist
vorher : Die Liste ist initialisiert.
nachher: True, wenn LiLaenge = MAXLISTE
Set...
Auftrag: Attribut schreiben
vorher : -
nachher: Attribut ist gesetzt
GetLen
Anfrage: gibt Listenlaenge zurueck
vorher : Liste ist initialisiert
nachher: -
Load
Auftrag: Liste aus externer Datei laden.
vorher : nicht definiert
nachher: nicht definiert.
Store
Auftrag: Liste in externe Datei speichern
vorher : nicht definiert.
nachher: nicht definiert.
----------------------------------------------------------------------- *)
|