Schulkiosk

Der Hausmeister am QG betreibt einen kleinen Kiosk. Die Verwaltung soll mit einem Computerprogramm erledigt werden.

Er kommt mit folgendem Pflichtenheft zu dir und möchte die Kioskverwaltung von dir programmieren lassen:

Mit dem Kioskverwaltungsprogramm sollen verschieden Waren verwaltet, der Gesamtbestand festgehalten und der Gesamtgewinn berechnet werden. In dem Kiosk gibt es als Waren Getränke und Backwaren. Als Backwaren werden ausschließlich Brezeln und belegte Brötchen verkauft. Die Waren haben eine Warenbezeichnung, einen Einkaufspreis und einen Verkaufspreis. Getränke haben unterschiedliche Inhaltsgrößen. Für die belegten Brötchen muss die Art des Belags (Kräuter-Aufstrich, Wurst, Käse,…) angegeben werden, bei den Brezeln, ob sie mit Butter bestrichen sind oder nicht. Die Waren werden über ihre Warenbezeichnung eindeutig festgelegt. Bei der Neuaufnahme einer Ware sollen die Warenbezeichnung, der Einkaufspreis und der Verkaufspreis eingegeben werden. Bei den Getränken wird zusätzlich die Inhaltsgröße und bei den belegten Brötchen die Art des Belags eingegeben.

Das folgende vereinfachte Klassendiagramm stellt die Beziehung zwischen den einzelnen Waren-Klassen dar.

(A1)

Benenne die Beziehungen zwischen den Klassen und erläutere kurz die Prinzipien der Objektorientierung.

Erläutere, warum hier einige Klassen als abstrakt deklariert sind und gib Gründe für diese Art der Deklaration an.

(A2)

mplementiere für die Klassen Ware, Getraenk, Backware, Brezel und Broetchen jeweils einen Konstruktor.

(A3)

Das Kiosk-Verwaltungsprogramm verwaltet den Warenbestand und den aktuellen Kontostand. Beim Einkauf von Waren wird der Kontostand belastet, beim Verkauf wird der Verkaufspreis dem Konto gut geschrieben.

Deklariere und initialisierein der Klasse Kiosk eine geeignete Datenstruktur zur

Verwaltung der einzelnen Waren. Im Implementationsdiagramm findest du den Namen des Attributs warenListe ohne Datenstruktur.

Für jeden Warentyp enthält die Klasse Kiosk eine Methode, mit der beim Einkauf von einer Anzahl gleicher Artikel der Warenbestand verwaltet wird.

Implementieren Sie beispielhaft für die Klasse Broetchen die Methode einkaufenBroetchen(…) mit der im Klassendiagramm angegebenen Parameterliste. Der Verkaufspreis soll dabei um 20% über dem Einkaufspreis liegen.
Gleichzeitig soll der Warenbestand des Kiosks aktualisiert werden.

Der Hausmeister will den zu erwarten Gewinn ermitteln. Dazu vergleicht er Einkaufs- und Verkaufspreis der vorhandenen Waren.

Implementiere in der Klasse Kiosk eine Methode getGewinnerwartung():double.

Am Ende eines Verkaufstages werden die nicht verkauften Gebäckwaren an die lokale Hilfsorganisation "Tafel" abgegeben.

Implementiere in der Klasse Kiosk eine Methode ausmusternBackwaren(), bei der aus der Warenbestandsliste alle Gebäckwaren entfernt werden. Du darfst davon ausgehen, dass in jeder Klasse eine funktionierende Methode istKlassenTyp(Class cls):boolean zur Feststellung der Klassenzugehörigkeit existiert undbenutzt werden kann.