5.4 Die Klasse Produkt

 

 

Aus der Klasse "Produkt" wird mit Hilfe der Klasse "Liste" die Klasse "ProduktKartei" erzeugt. Sie enthält alle von JWI lieferbaren Produkte und die für die Verwaltung notwendigen Informationen zu diesen Produkten. Wie alle anderen Karteien wird auch die Produktkartei von der Klasse Verwaltung geführt.

Die Klasse Produkt ist in diesem Programm implementiert in der Header-Datei "JWI_Klassen_Produkt.h" und der Datei "JWI_Klassen_Produkt._Implementation.cpp", die die Implementierung der Operationen enthält. Sie hat im implementations-Modell folgend Form:

Attribute:

int pnr

string bez

int lnr

int min_best

int max_best

int akt_best

int vormerkung

 

Operationen:

Produkt(int produktnr=0, string bezeichnung="", int lieferantennr=0, int minbestand=0, int maxbestand=0, int aktuellerbestand=0, int vorm=0)

~Produkt (void)

void DatenAendern(void)

int HoleProduktNr(void)

string HoleBezeichnung(void)

int HoleLieferantenNr(void)

int HoleMinBestand(void)

int HoleMaxBestand(void)

int HoleAktuellenBestand(void)

int HoleVormerkungen(void)

void Neu(int produktnr)

void AktuellenBestandKorregieren(int aenderung)

void Vormerken(int aenderung)

int BestellmengeErmitteln(void)

 

 

5.4.1 Veränderungen zum ursprünglichen Modell

Der hier implementierte Entwurf hat genau die gleichen Attribute wie der ursprüngliche Entwurf. In dieser Klasse besteht auch kein Grund, diese Attribute als public zu deklarieren. Deshalb kann auf sie von außen auch nicht direkt zugegriffen werden.

Für die Operationen dieser Klasse haben sich jedoch leichte Veränderungen ergeben:

Neben den Operationen zum Abfragen der Attribute, die hier aufgrund der Datenkapselung absolut notwendig sind, ist ebenfalls wieder eine Operation zu Ändern der Daten eines bestehenden Objektes hinzugekommen (DatenAendern). Diese Operation ersetzt die Operation min_max_best_definieren des ursprünglichen Modells, kann jedoch nicht nur den minimalen und maximalen Lagerbestand verändern, sondern bis auf die Produktnummer, die von Programm vorgegeben wird, alle Attribute. Dabei stellt sich jedoch die Frage, ob eine Veränderung des aktuellen Bestandes oder der Anzahl an Vormerkungen sinnvoll ist oder ggf. unterbunden werden soll. Vermutlich ist es günstiger die Veränderung der beiden Attribute "aktueller Bestand" (akt_best) und "Vormerkungen" (vormerkung) nicht zuzulassen.

Da sowohl die Operation aktuellen Lagerbestand korrigieren (akt_best_korrigieren) als auch die Operation Wareneingang bearbeiten (wareneingag_bearbeiten) ausschließlich das Attribut "aktueller Bestand" (akt_best) verändern, sind hierfür keine zwei Operationen notwendig. Der einzige Unterschied der beiden Operationen besteht darin, daß die Operation Wareneingang bearbeiten nur positive Bestandsänderungen zuläßt. Deshalb wurde diese Operation im implementierten Modell weggelassen und durch die Operation "aktuellen Bestand korrigieren" ersetzt, von der sie lediglich ein Spezialfall ist.

Im ursprünglichen Modell sollte die Operation Wareneingang bearbeiten einen kompletten Anwendungsfall abdecken, was jedoch, wegen der notwendigen Interaktion mit anderen Objekten, nur in der Klasse Verwaltung möglich ist. Daher reduzierte sich der Anteil dieses Anwendungsfalls, der durch eine Operation einen Objektes durchführbar ist, lediglich auf die Veränderung des aktuellen Bestandes.

Die im ursprünglichen Modell vorgesehene Operation "Nachbestellen" ist in der Implementation weggefallen, da es sinnvoll erschien, diese Aktion in die Klasse Verwaltung zu verlegen. Zwar sind alle benötigten Informationen für eine Nachbestellung auch in der Instanz eines Produktes vorhanden, jedoch muß eine solche Operation trotzdem noch von außen angestoßen werden. Da nun bei JWI zum Ende eines Tages alle Nachbestellungen zusammen durchgeführt werden, wird hier die Nachbestellung durch die Klasse Verwaltung durchgeführt. Die einzige Operation der Klasse Produkt, die dabei benötigt wird, ist die Ermittlung der aktuell nachzubestellenden Menge (bestellmenge_ermitteln). Die restlichen Aktionen, die zum Erstellen eine Nachbestellung notwendig sind, sind lediglich das Abrufen von Attribut-Werten zum Ausfüllen der Nachbestellung. Ein weitere Vorteil der Auslagerung dieser Operation in die Klasse Verwaltung besteht darin, daß dort verschiedene Nachbestellungen an den gleichen Produzenten zusammengefaßt werden könne. Ein solches Vorgehen wäre in einem Objekt vom Typ Produkt nicht möglich.

Die restlichen Operationen der Klasse Produkt sind gegenüber dem ursprünglichen Modell nicht verändert worden.

 

Bemerkung:

Mit Vormerkungen werden diejenigen bestellten Mengen bezeichnet, die zu ihrem Eingang nicht mehr ausgeliefert werden können, da die in der Bestellung geforderte Menge größer ist, als der aktuelle Lagerbestand. Sie werden als nachzubestellende Menge für die nächste Nachbestellung dieses Produktes vorgemerkt. Wird eine bestimmte Menge als Vormerkung aufgenommen, heißt das zu diesem Zeitpunkt jedoch nicht, daß das Lager leer ist. Deshalb können kleinere Bestellungen gegebenenfalls noch erfolgreich durchgeführt werden. Wird die Menge eines Bestellpostens durch Vormerken in das Programm aufgenommen, so ändert sich hierdurch der aktuelle Lagerbestand nicht.