Rückblick – Fahrkartenschalter
Teil des Abschnitts Objektorientierte Programmierung der Kotlin-Journey von Coddy. Lektion 16 von 57.
Aufgabe
MittelErstelle ein kleines Kartenbüro aus drei Arten von Deklarationen.
Ticketbesitzt einen privaten Konstruktor, dernumber,showundseatentgegennimmt. Sein Companion enthältconst val SEATS = 3, einen privaten Zähler und die Factoryissue(show, seat), die den Tickets die Nummern 1, 2, 3, ... zuweist;issuedist die Anzahl der bisher ausgegebenen Tickets.label()gibt#1 Hamlet seat 2zurück.BoxOfficeist ein Objekt.sell(show, seat)antwortet mitno seat 4, wenn der Sitz außerhalb von 1 bisTicket.SEATSliegt, mitseat 2 taken, wenn er für diese Vorstellung bereits verkauft wurde, und gibt andernfalls ein Ticket aus und antwortet mit dessen Bezeichnung.refund(number)gibt den Sitz eines verkauften Tickets frei und antwortet mitrefunded #1oderno ticket #9.report()antwortet mitHamlet 2/3, Cats 1/3, wobei die Vorstellungen alphabetisch sortiert sind, oder mitnothing sold.
Der bereitgestellte Code liest die Befehle sell Hamlet 2, refund 1 oder report, gibt jede Antwort aus und schließlich tickets issued: zusammen mit der Anzahl. Nummern werden nach einer Rückerstattung niemals wiederverwendet.
Dein Code gehört in Ticket.kt und BoxOffice.kt. Main.kt enthält den bereitgestellten Eingabe-/Ausgabecode und darf nicht bearbeitet werden.
Probier es selbst
fun main() {
// Gelieferter Ein-/Ausgabecode: belasse ihn wie er ist
val input = generateSequence(::readLine).toList()
for (cmd in input) {
val p = cmd.split(" ")
when (p[0]) {
"sell" -> println(BoxOffice.sell(p[1], p[2].toInt()))
"refund" -> println(BoxOffice.refund(p[1].toInt()))
else -> println(BoxOffice.report())
}
}
println("tickets issued: ${Ticket.issued}")
}
Alle Lektionen in Objektorientierte Programmierung
1Klassen und Objekte
Arbeiten mit DateienKlassen definierenPrimärkonstruktoreninit-Blöcke und ValidierungSekundärkonstruktorenRückblick – Bibliotheksausweis4Vererbung
Offene Klassen und UnterklassenÜberschreiben von Membernsuper und KonstruktorenAbstrakte KlassenRückblick – Mitarbeiterverzeichnis2Eigenschaften und Kapselung
Benutzerdefinierte ZugriffsmethodenSichtbarkeitsmodifikatorenPrivate Setterlazy und lateinitWiederholung – Bankkonto5Schnittstellen
Schnittstellen deklarierenStandardmethodenMehrere SchnittstellenSchnittstellen als TypenRückblick – Zahlungsmethoden8Generics
Generische FunktionenGenerische KlassenTypbeschränkungenVarianz mit in und outRückblick – Prioritätswarteschlange11Projekt: Bibliotheksverwaltung
Bücher und MitgliederBücher ausleihen3Objekte und Companion-Objekte
ObjektdeklarationenCompanion-ObjekteKonstanten mit constObjektausdrückeRückblick – FahrkartenschalterÜbe selbstständig: Kotlin-Playground