Objektorientierte Programmierung
LVA 185.162, VL 2.0, 2005 W
6. Übungsaufgabe
Themen:
Zusicherungen, Wiederverwendung
Termine:
| Ausgabe: |
17.11.2005 |
| reguläre Abgabe: |
24.11.2005, 12:45 Uhr |
| nachträgliche Abgabe: |
01.12.2005, 12:45 Uhr |
Abgabeverzeichnis:
Aufgabe6
Programmaufruf:
java Test
Grundlage:
Skriptum bis Seite 91
Aufgabe:
Der Baumarkt möchte die in Aufgabe 5 entwickelte Software ausbauen und in
mehreren Filialen einsetzen. Die Umstellung der Filialen von der in Aufgabe 5
entwickelten auf die ausgebaute Software soll schrittweise erfolgen - eine
Filiale nach der anderen, und die Software der Registrierkassen erst nach der
Software zur Verwaltung der Kundenumsätze. Daher muss die ausgebaute
Software auch von alten Registrierkassen aus verwendbar sein. Die ausgebaute
Software soll in vollständig umgestellten Filialen folgende
zusätzliche Funktionalität bieten:
- Kundennummern und Kundenumsätze wurden bisher in jeder Filiale
getrennt verwaltet. Für je zwei mit der ausgebauten Software
ausgestattete Filialen soll es möglich sein, Kundennummern und
Umsätze eines Kunden in beiden Filialen zu vereinigen. Der Kunde
wählt eine
Stammfiliale
. Die Kundennummer dieser Filiale bleibt
weiterhin gültig, während die andere Kundennummer nicht mehr
verwendet wird. Die Umsätze des Kunden bei beiden Filialen werden ab
diesem Zeitpunkt in der Stammfiliale verwaltet.
- Kunden können in jeder vollständig umgestellten Filiale mit der
Kundennummer einer anderen (mit der ausgebauten Software ausgestatteten)
Filiale einkaufen, wobei Umsätze und Rabatte so behandelt werden, als
würde der Verkauf in der der Kundennummer entsprechenden Filiale
erfolgen. Nur die Nummer des Verkaufs soll erkennen lassen, in welcher
Filiale der Verkauf tatsächlich getätigt wird (siehe unten).
- Die Bedingungen für die Vergabe von Rabatten aus Aufgabe 5 gelten nach
wie vor. Jedoch soll zusätzlich die Möglichkeit bestehen, einem
Kunden einen fixen (von Umsätzen unabhängigen) Rabat zwischen 0
und 12 Prozent zu geben. Dieser Prozentsatz soll jederzeit gesetzt und auch
wieder entfernt werden können. Ist ein fixer Prozentsatz gesetzt, kommt
kein vom Umsatz abhängiger Prozentsatz mehr zur Anwendung.
Auf folgende Gemeinsamkeiten und Unterschiede zur entsprechend Aufgabe 5
erstellten Software ist zu achten: Es wird angenommen, dass in bereits
bestehende Kundennummern und Verkaufsnummern die Filiale einkodiert ist.
Das haben Registrierkassen (ohne dass dies den Erstellern der Software zur
Verwaltung der Kundenumsätze bekannt war) so gemacht. Die in die
Kundennummer einkodierte Filiale gilt als Stammfiliale, während die
Filiale in der Verkaufsnummer angibt, wo der Verkauf tatsächlich erfolgte.
Es gilt auch nach wie vor, dass Kundennummern und Verkaufsnummern pro Filiale
aufsteigend vergeben werden. Jedoch besteht zwischen Verkaufsnummern
unterschiedlicher Filialen kein direkter zeitlicher Zusammenhang. Bei der
Berechnung von Umsätzen und Rabatten werden Verkaufsnummern jedoch zur
Angabe zeitlicher Grenzen verwendet. Um diese Verwendung der Nummern auch in
der ausgebauten Software zu erlauben, wird pro Filiale eine Tabelle mit der
kleinsten Verkaufsnummer jeden Tages verwaltet. Statt die Verkaufsnummern
direkt als zeitliche Grenzen zu verwenden, werden nur mehr Tage, an denen die
Verkäufe stattgefunden haben, als Grenzen verwendet.
Lesen Sie das Skriptum bis Seite 91. Schreiben Sie eine Klasse
Kundenumsaetze2
als Untertyp der bestehenden (unveränderten) Klasse
Kundenumsaetze
mit der gewünschten Funktionalität. Achten
Sie darauf, dass Sie alle nötigen Zusicherungen in Form von Kommentaren
(in Deutsch oder Englisch) in die Klasse Kundenumsaetze2
schreiben.
Kommentare, die keine Zusicherungen darstellen, mehrdeutig formulierte
Zusicherungen und Zusicherungen, die in Widerspruch zu Zusicherungen in
Kundenumsaetze
stehen, sollen vermieden werden. Erweitern Sie die
Klasse Test
aus Aufgabe 5 um Tests der neuen Funktionalität
(ohne interaktive Eingabe, daher nur vorgegebene Testfälle). Tests der
Funktionalität von Kundenumsaetze
sollen auch unter der Annahme
erfolgen, dass Filialen in Kunden- und Verkaufsnummern einkodiert sind.
Schreiben Sie Ihre Lösung in den bereits existierenden Ordner
Aufgabe6
in Ihrem Verzeichnis auf dem Übungsrechner b3. Das
Programm soll von diesem Ordner aus durch java Test
aufrufbar sein;
das heißt, die Methode main
soll in der Klasse Test
in der
Datei Test.java
(die Sie selbst schreiben) stehen. Schreiben Sie nicht
mehr als eine Klasse in jede Datei. Der Ordner soll zum Zeitpunkt der Abgabe
(24.11.2005, 12:45 Uhr) und der nachträglichen Abgabe (01.12.2005, 12:45
Uhr) alle .java
-Dateien enthalten, die Sie für Ihre Lösung
benötigen. Bitte entfernen Sie alle .java
-Dateien, die nicht zur
Abgabe gehören. Dateien mit anderen Endungen werden bei der Beurteilung
nicht berücksichtigt. Verzichten Sie auf die Verwendung von Ordnern
innerhalb von Aufgabe6
.
Hinweise zur Beurteilung:
Der Schwerpunkt bei der Beurteilung liegt auf der Wiederverwendung bestehender
Software und auf Zusicherungen in
Kundenumsaetze2
, vor allem der
Konsistenz der Zusicherungen zwischen
Kundenumsaetze2
und
Kundenumsaetze
. Zusicherungen in Testklassen werden nicht beurteilt.
Für fehlende, mißverständlich formulierte, oder inkonsistente
Zusicherungen gibt es kräftige Punkteabzüge, ebenso wie für
Kommentare, die keine Zusicherungen darstellen.
Kundenumsaetze2
muss
ein Untertyp von
Kundenumsaetze
sein, und
Kundenumsaetze
muss
unverändert von Aufgabe5 nach Aufgabe6 kopiert werden; eine
Veränderung dieser Klasse kann zu Punkteabzügen führen.