Powtórzenie — kasa biletowa
Część sekcji Programowanie obiektowe ścieżki Kotlin w Coddy. Lekcja 16 z 57.
Wyzwanie
ŚredniZbuduj małą kasę biletową, używając trzech rodzajów deklaracji.
Ticketma prywatny konstruktor przyjmującynumber,showiseat. Jego obiekt towarzyszący zawieraconst val SEATS = 3, prywatny licznik oraz fabrykęissue(show, seat), która nadaje biletom numery 1, 2, 3, ...;issuedto liczba dotychczas wydanych biletów.label()zwraca#1 Hamlet seat 2.BoxOfficejest obiektem.sell(show, seat)zwracano seat 4, gdy miejsce znajduje się poza zakresem od 1 doTicket.SEATS,seat 2 taken, gdy jest już sprzedane na ten seans, a w pozostałych przypadkach wystawia bilet i zwraca jego etykietę.refund(number)zwalnia miejsce zajmowane przez sprzedany bilet i zwracarefunded #1albono ticket #9.report()zwracaHamlet 2/3, Cats 1/3, z seansami w kolejności alfabetycznej, albonothing sold.
Dostarczony kod odczytuje polecenia sell Hamlet 2, refund 1 lub report, wyświetla odpowiedź na każde z nich, a na końcu tickets issued: wraz z liczbą. Numery nie są nigdy ponownie używane po zwrocie biletu.
Twój kod umieść w plikach Ticket.kt i BoxOffice.kt. Main.kt zawiera dostarczony kod wejścia/wyjścia i nie można go edytować.
Spróbuj swoich sił
fun main() {
// Dostarczony kod wejścia/wyjścia: pozostaw go bez zmian
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}")
}
Wszystkie lekcje w sekcji Programowanie obiektowe
1Klasy i obiekty
Praca z plikamiDefiniowanie klasKonstruktory główneBloki init i walidacjaKonstruktory dodatkowePodsumowanie — karta biblioteczna4Dziedziczenie
Klasy otwarte i podklasyNadpisywanie składowychsuper i konstruktoryKlasy abstrakcyjnePodsumowanie – katalog pracowników7Klasy specjalne
Klasy danychKlasy wyliczenioweHierarchie zapieczętowaneequals, hashCode, toStringPodsumowanie — śledzenie zamówień10Wzorce projektowe, część 2
Delegowanie za pomocą byWzorzec dekoratoraWzorzec budowniczegoWzorzec stanu2Właściwości i hermetyzacja
Własne akcesoryModyfikatory widocznościPrywatne setterylazy i lateinitPowtórka – konto bankowe5Interfejsy
Deklarowanie interfejsówMetody domyślneWiele interfejsówInterfejsy jako typyPowtórzenie – metody płatności8Typy generyczne
Funkcje generyczneKlasy generyczneOgraniczenia typówKowariancja i kontrawariancja: in i outPodsumowanie — kolejka priorytetowa11Projekt: Zarządzanie biblioteką
Książki i czytelnicyWypożyczanie książek3Obiekty i obiekty towarzyszące
Deklaracje obiektówObiekty towarzysząceStałe z constWyrażenia obiektowePowtórzenie — kasa biletowaPoćwicz samodzielnie: Edytor online Kotlin