5.7 Die Klasse Liste

 

 

Die Klasse "Liste" stellt eine Hilfsfunktion zur Verwaltung und Speicherung von Daten zur Verfügung, die hauptsächlich von der Klasse Verwaltung genutzt wird. Jedoch beinhalten auch die Attribute der Klassen Bestellung, Kunden-, Nachbestellung und Lieferschein Listen, die ohne diese Klasse nicht möglich wären.

Die Klasse Liste besteht ist in diesem Programm in der Datei "JWI_Klassen_Liste.cpp" implementiert und folgend Form:

Attribte:

ZeigerListenElement Anfang

ZeigerListenElement Ende

ZeigerListenElement Aktuell

 

Operationen:

Liste()

~Liste()

void ElementHinzufuegen(T Inh)

void ElementLoeschen()

T HoleInhalt()

boolean NachfolgendesElement()

void SetzeAufAnfang()

int Laenge()

 

 

5.7.1 Veränderungen zum ursprünglichen Modell

Die Klasse Liste stellt eine Verallgemeinerung der beiden im ursprünglichen Modell auftretenden Klassen Liefer- und Wartekartei dar. Auch diese weisen das Attribut "inhalt" und die Operationen "neuer_eintrag" und "eintrag_löschen" auf, die ebenfalls grundlegend für die Klasse Liste sind.

Am ursprünglichen Modell muß jedoch kritisiert werden, daß alle weiteren Operationen, die die beiden Klassen Liefer- und Wartekartei enthalten sollten nicht durch einer solchen verwaltende Klasse hätten durchgeführt werden könne. Sowohl die Operationen "lieferscheine_erstellen" und "lieferscheine_zuordnen" der Klasse Lieferkartei als auch die Operation "nach_lieferkartei_übertragen" der Klasse Wartekartei erfordern Instanzen anderer Klassen wie einzelne Produkte oder Lieferscheine in den ersten beiden Fällen oder eine komplette andre Klasse, die Klasse Lieferkartei, im zweiten Falle. Deshalb sind all diese Operationen nur in der Klasse Verwaltung durchführbar.

Weiterhin ist es wenig sinnvoll, der Klasse Lieferkartei eine Liste mit Verweisen auf Lieferscheine als Attribut zu geben, wenn die Lieferscheine sonst nirgendwo gespeichert werden. Außerdem wurde eine List in der weiteren Implementation ohnehin nicht benötigt.

Deshalb machte es Sinn den identischen und durchführbaren Rumpf beider Klassen in einer Klasse Liste zu vereinigen.

Ein großer Vorteil der Klasse Liste besteht darin, daß durch den Template-Ansatz jeder beliebige Elementtyp verwendet werden kann, solange er ein Objekt oder einer der Grundtypen von Variable ist. Damit kann – wie in den weiter oben definierten Objekten schon zu sehen war – dieser Listentyp für die Speicherung jeglicher Art von Daten desselben Typs verwendet werden und bindet sich damit als Grundlage der Klasse Verwaltung gut in das in das gesamte Programm ein.

 

 

5.7.2 Abgeleitete Klassen

Die abgeleiteten Klassen, die jeweils in derjenigen Datei stehen, in denen der Elementtyp der Liste bzw. Kartei definiert ist, sind:

 

Klasse BestellpostenListe: public Liste<Bestellposten>

Klasse LieferscheinListe: public Liste<Lieferschein>

Klasse NachbestellungenKartei: public Liste<Nachbestllung>

Klasse KundenbestellungenKartei: public Liste<Kundenbestellung>

Klasse LieferKartei: public Liste<Bestellposten>

Klasse WarteKartei: public Liste<Bestellposten>

Klasse KundenKartei: public Liste<Kunde>

Klasse LieferantenKartei: public Liste<Lieferant>

Klasse ProduktKartei: public Liste<Produkt>

 

Diese Klassen können, wie in der Einleitung erwähnt, zu richtigen Karteien dadurch erweitertet werden, daß ihre Daten auf externen Datenträgern gespeichert werden. In der hier vorliegenden Implementierung sind sie jedoch nur einfache Listen mit vordefiniertem Elementtyp, d.h. eine Instanz der Klasse WarteKartei könnte im Hauptprogramm auch direkt wie folgt initiiert werden:

Class Liste<Bestellposten> warte_karei.

Es handelt sich bei diesen Klassendefinitionen also lediglich um Typendefinitionen, die das Programm leserlicher machen sollen.