OSZ Handel I
Informatik

Karel D. Robot
TStack

S. Spolwig

[Delphi | OOP]
Startseite


TStack

Kurzbeschreibung Attribute Methoden

Klassendiagram

Die Klasse bildet den Container ab, den Karel und das Lagerhaus besitzen, um Items aufnehmen und wieder herausnehmen zu können.
TStack arbeitet nach dem LIFO-Prinzip.
 
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.

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

©  05. April 2006    Siegfried Spolwig

page_top