Labor – Einfacher Ticket-Automat
Kopiere Klasse TicketMachine aus dem Muster-Projekt Lab-06—Muster_naive-ticket-machine.zip ins eigene Projekt.
Dieser einfache Automat enthält noch einige Fehler. Teste den Automaten und notiere alle erkannten Fehler (z.B. als Kommentar oder in der README.txt des BlueJ-Projekts):
-
Aufruf von getPrice(), um den Preis einer Fahrkarte zu ermitteln
-
Aufruf von getBalance(), um festzustellen wieviel Geld schon eingeworfen wurde
-
Aufruf von insertMoney(), um Geld einzuwerfen
-
nochmal getBalance() aufrufen
-
Aufruf von printTicket(), um eine Fahrkarte zu drucken (was passiert mit balance und total)
-
…
Beachte auch die Möglichkeit negativer Übergabewerte!
-
Verbessere den Automaten
-
Erweitere ihn um folgende Methoden:
-
refundBalance(): int, welche das noch übrige eingeworfene Geld wieder zurückgibt, dabeibalanceauf0setzt -
empty(): int, liefert das gesamte vom Automaten eingenommene Geld als Rückgabewert und setzt Attributtotalwieder auf0.
-
Extraaufgabe für jene, die früher fertig sind:
Erweitere den Automaten um die Attribute child und bike samt Settern dazu. Beide haben Typ boolean.
Es sind keine weiteren Attribute erforderlich (Tipp: lokale Variablen, Hilfsmethoden).
Wenn child true ist, soll der Preis der Fahrkarte halbiert werden.
Wenn bike true ist, soll der Preis der Normal-Fahrkarte verdoppelt werden (also quasi ein eigenes Normal-Ticket für das Fahrrad dazu.
Ein Kind mit Bike kostet also insgesamt den 1,5 fachen Normalpreis.
-
Es soll eine Methode setChild(…) geben, mit der statt eines normalen Tickets auf eine Kinderfahrkarte zum halben Preis umgestellt werden kann.
-
Es soll eine Methode setBike(…) geben mit der das Ticket für die zusätzliche Mitnahme eines Fahrrades gekauft werden kann. Dieses Ticket kostet das Doppelte eines normalen Tickets.
Wichtig: Das Attribut price soll immer den vollen Ticketpreis enthalten!
D.h. es sind die Methoden getPrice() und printTicket() entsprechend anzupassen.
Muster-Projekt: Siehe Moodle oder