Objektorientierte Programmierung
LVA 185.162, VL 2.0, 2005 W

5. Übungsaufgabe

Themen:

Zusicherungen, erwartete Änderungen

Termine:

Ausgabe: 10.11.2005
reguläre Abgabe: 17.11.2005, 12:45 Uhr
nachträgliche Abgabe: 24.11.2005, 12:45 Uhr

Abgabeverzeichnis:

Aufgabe5

Programmaufruf:

java Test

Grundlage:

Skriptum bis Seite 81

Aufgabe:

Ein Baumarkt (Handel mit Baustoffen, Maschinen und Zubehör) möchte die Bindung der Kunden zum Unternehmen verbessern und benötigt dazu Software zur Verwaltung der Kundenumsätze. Bereits existierende Registrierkassen können für jeden Verkauf die Kundennummer und den Rechnungsbetrag erfassen und zusammen mit einer neuen eindeutigen Nummer des Verkaufs an die neu zu erstellende Software weiterleiten. Für neue Kunden können die Kassen auch neue Kundennummern vergeben und an die Software weiterleiten. Innerhalb eines bestimmten Zeitraums werden verkaufte Waren zurückgenommen. Für jede Rücknahme melden die Kassen die Nummer des entsprechenden Verkaufs und den Wert der zurückgegeben Waren an die Software. Die neu zu erstellende Software soll für jeden Kunden (bestimmt durch die Kundennummer) den Umsatz (= Summe der Verkäufe abzüglich des Wertes der zurückgenommenen Waren) innerhalb eines angegebenen Zeitraums (bestimmt durch eine kleinste und größte Nummer des Verkaufs) ermitteln. Diese Umsätze dienen beispielsweise zur Berechnung des Wertes von Warengutscheinen, die an Kunden verschickt werden. Weiters soll die neue Software Rabatte ermitteln, die den Kunden gewährt werden und deren Höhe von den zuletzt (ab einer gegebenen Nummer des Verkaufs) getätigten Umsätzen (zusammen mit dem Wert des gerade bearbeiteten Verkaufs vor Abzug des Rabatts) abhängt: Ab einem Umsatz (zusammen mit dem Wert des aktuellen Verkaufs) von 1.000 Euro werden 5 Prozent Rabatt gewährt, ab 10.000 Euro 7,5 Prozent und ab 25.000 Euro 10 Prozent. Es ist daran gedacht, dass in künftigen Versionen neben den Umsatzzahlen weitere Kriterien zur Berechnung der Rabatte herangezogen werden; diese stehen aber noch nicht fest (und sind noch nicht zu implementieren). Es muss davon ausgegangen werden, dass Registrierkassen mit zurückgeworfenen Exceptions nicht umgehen und auch zurückgegebene Fehlercodes (Ergebnis-Werte, die Fehler anzeigen) nicht richtig interpretieren können. Schnittstellen zwischen Registrierkassen und der neuen Software sind daher so zu gestalten, dass Aufrufe, die zu Fehlern führen, von vorne herein vermieden und unvermeidbare fehlerhafte Zustände intern behandelt werden. Sowohl Kundennummern als auch Nummern von Verkäufen sollen eindeutig sein und aufsteigend vergeben werden, das heißt, die neueste Nummer ist stets die höchste. Bei der Berechnung der Umsätze (auf ganze Cent) sind Rundungsfehler zu vermeiden.

Lesen Sie das Skriptum bis Seite 81. Schreiben Sie eine Klasse Kundenumsaetze, welche die gewünschte Funktionalität der neuen Software aufweist. Insbesondere müssen Methoden für die Erfassung neuer Kundennummern, für die Verbuchung von Verkäufen und Warenrücknahmen, sowie zur Berechnung getätigter Umsätze und von Rabatten vorhanden sein. Wenn nötig können Sie auch weitere Klassen und Interfaces verwenden, aber die genannten Methoden sollen in Instanzen von Kundenumsaetze aufrufbar sein. Achten Sie darauf, dass Sie alle nötigen Zusicherungen in Form von Kommentaren (in Deutsch oder Englisch) in den Programmcode schreiben. Kommentare, die keine Zusicherungen darstellen, und mehrdeutig formulierte Zusicherungen sollen vermieden werden. Schreiben Sie auch eine Klasse Test (und wenn nötig entsprechende weitere Klassen) zum Testen von Kundenumsaetze (ohne interaktive Eingabe, daher nur vorgegebene Testfälle). Diese Klasse(n) soll(en) Aufrufe der Methoden von Kundenumsaetze, die von Registrierkassen oder anderer Software kommen könnten, simulieren und alle Testergebnisse in verständlicher und nachvollziehbarer Form ausgeben. Gestalten Sie Ihre Lösung vorausschauend und vermeiden Sie alles, was mögliche bzw. zu erwartende Änderungen der Software erschweren würde.

Schreiben Sie Ihre Lösung in den bereits existierenden Ordner Aufgabe5 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 (17.11.2005, 12:45 Uhr) und der nachträglichen Abgabe (24.11.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 Aufgabe5.

Hinweise zur Beurteilung:

Der Schwerpunkt bei der Beurteilung dieser Aufgabe liegt auf der richtigen Verwendung von Zusicherungen in Kundenumsaetze (und damit verbundenen weiteren Klassen und Interfaces). Zusicherungen in Testklassen werden nicht beurteilt. Für fehlende oder mißverständlich formulierte Zusicherungen gibt es kräftige Punkteabzüge, ebenso wie für Kommentare, die keine Zusicherungen darstellen. Die oben gegebenen Anforderungen an die Software dienen als Grundlage dafür, ob eine Zusicherung bei der Beurteilung als nötig angesehen wird. Die Aufgabenstellung selbst gehört nicht zum Programmcode. Daher dürfen Anforderungen in der Aufgabenstellung einem Leser des Programmcodes nicht als bekannt vorausgesetzt werden. Für unnötige Zusicherungen werden nur dann Punkte abgezogen, wenn dadurch erwartete künftige Programmänderungen (wie in der Beschreibung der Anforderungen angedeutet) erschwert werden. In der nächsten Aufgabe wird die aktuelle Aufgabenstellung auf jetzt noch nicht bekannte Art abgeändert. Achten Sie darauf, dass unnötige Zusicherungen (auch wenn Sie dafür jetzt noch keine Punkte abgezogen bekommen) die Lösung der nächsten Aufgabe wesentlich erschweren können.
Complang
Puntigam
   Kontakt
   Research
   Lehre
      OOP
      Typsysteme
      EP2
      FOOP
      Prog.spr.
      frühere Lehre
         LVAs 2017 W
         LVAs 2017 S
         LVAs 2016 W
         LVAs 2016 S
         LVAs 2015 W
         LVAs 2015 S
         LVAs 2014 W
         LVAs 2014 S
         LVAs 2013 W
         LVAs 2013 S
         LVAs 2012 W
         LVAs 2012 S
         LVAs 2011 W
         LVAs 2011 S
         LVAs 2010 W
         LVAs 2010 S
         LVAs 2009 W
         LVAs 2009 S
         LVAs 2008 W
         LVAs 2008 S
         LVAs 2007 W
         LVAs 2007 S
         LVAs 2006 W
         LVAs 2006 S
         LVAs 2005 W
            OOP
               Laborübung
               1. Aufgabe
               2. Aufgabe
               3. Aufgabe
               4. Aufgabe
               5. Aufgabe
               6. Aufgabe
               7. Aufgabe
               8. Aufgabe
               9. Aufgabe
            Typsysteme
            Seminar, WA
         LVAs 2005 S
         LVAs 2004 W
         LVAs 2004 S
         LVAs 2003 W
   Links
Sitemap
Kontakt
Schnellzugriff:
Laborübung
Tutoren
Skriptum
Folien
Aufgaben
vorige Aufgabe
nächste Aufgabe
Fakultät für Informatik
Technische Universität Wien
Anfang | HTML 4.01 | Datenschutzerklärung | letzte Änderung: 2005-11-10 (Puntigam)