Menu
Coddy logo textTech

Repaso: taquilla

Parte de la sección Programación orientada a objetos del Journey de Kotlin de Coddy. Lección 16 de 57.

challenge icon

Desafío

Intermedio

Construye una pequeña taquilla a partir de tres tipos de declaración.

  • Ticket tiene un constructor privado que recibe number, show y seat. Su objeto complementario contiene const val SEATS = 3, un contador privado y la fábrica issue(show, seat), que asigna a los tickets los números 1, 2, 3, ...; issued es el número de tickets emitidos hasta el momento. label() devuelve #1 Hamlet seat 2.
  • BoxOffice es un objeto. sell(show, seat) responde no seat 4 cuando el asiento está fuera del rango de 1 a Ticket.SEATS, seat 2 taken cuando ya se ha vendido para ese espectáculo y, en caso contrario, emite un ticket y responde con su etiqueta. refund(number) libera el asiento de un ticket vendido y responde refunded #1, o no ticket #9. report() responde Hamlet 2/3, Cats 1/3 con los espectáculos en orden alfabético, o nothing sold.

El código proporcionado lee los comandos sell Hamlet 2, refund 1 o report, imprime cada respuesta y finalmente tickets issued: con el recuento. Los números nunca se reutilizan después de un reembolso.

Tu código va en Ticket.kt y BoxOffice.kt. Main.kt contiene el código proporcionado de entrada/salida y no se puede editar.

Pruébalo tú mismo

fun main() {
    // Código de entrada/salida suministrado: déjalo tal como está
    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}")
}

Todas las lecciones de Programación orientada a objetos

Practica por tu cuenta: Playground de Kotlin