Menu
Coddy logo textTech

Ripasso - Biglietteria

Fa parte della sezione Programmazione orientata agli oggetti del percorso Kotlin di Coddy. Lezione 16 di 57.

challenge icon

Sfida

Medio

Crea una piccola biglietteria usando tre tipi di dichiarazione.

  • Ticket ha un costruttore privato che accetta number, show e seat. Il suo companion contiene const val SEATS = 3, un contatore privato e la factory issue(show, seat), che assegna ai biglietti i numeri 1, 2, 3, ...; issued è il numero di biglietti emessi finora. label() restituisce #1 Hamlet seat 2.
  • BoxOffice è un oggetto. sell(show, seat) risponde no seat 4 quando il posto è al di fuori dell'intervallo da 1 a Ticket.SEATS, seat 2 taken quando è già venduto per quello spettacolo e, altrimenti, emette un biglietto e risponde con la sua etichetta. refund(number) libera il posto di un biglietto venduto e risponde refunded #1, oppure no ticket #9. report() risponde Hamlet 2/3, Cats 1/3 con gli spettacoli in ordine alfabetico, oppure nothing sold.

Il codice fornito legge i comandi sell Hamlet 2, refund 1 o report, stampa ogni risposta e infine tickets issued: con il conteggio. I numeri non vengono mai riutilizzati dopo un rimborso.

Il tuo codice va inserito in Ticket.kt e BoxOffice.kt. Main.kt contiene il codice di input/output fornito e non può essere modificato.

Provalo tu

fun main() {
    // Codice di input/output fornito: lascialo così com'è
    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}")
}

Tutte le lezioni di Programmazione orientata agli oggetti

Esercitati da solo: Playground Kotlin