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, dabeibalance
auf0
setzt -
empty(): int
, liefert das gesamte vom Automaten eingenommene Geld als Rückgabewert und setzt Attributtotal
wieder 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