Menu
Coddy logo textTech

Revisão - Bilheteria

Parte da seção Programação Orientada a Objetos do Journey de Kotlin da Coddy. Lição 16 de 57.

challenge icon

Desafio

Médio

Construa uma pequena bilheteria usando três tipos de declaração.

  • Ticket tem um construtor privado que recebe number, show e seat. Seu companion contém const val SEATS = 3, um contador privado e a fábrica issue(show, seat), que atribui aos ingressos os números 1, 2, 3, ...; issued é o número de ingressos emitidos até o momento. label() retorna #1 Hamlet seat 2.
  • BoxOffice é um objeto. sell(show, seat) responde no seat 4 quando o assento está fora do intervalo de 1 a Ticket.SEATS, seat 2 taken quando ele já foi vendido para aquele show e, caso contrário, emite um ingresso e responde com seu rótulo. refund(number) libera o assento de um ingresso vendido e responde refunded #1 ou no ticket #9. report() responde Hamlet 2/3, Cats 1/3 com os shows em ordem alfabética, ou nothing sold.

O código fornecido lê os comandos sell Hamlet 2, refund 1 ou report, imprime cada resposta e, por fim, tickets issued: com a contagem. Os números nunca são reutilizados após um reembolso.

Seu código deve ser colocado em Ticket.kt e BoxOffice.kt. Main.kt contém o código fornecido de entrada/saída e não pode ser editado.

Experimente você mesmo

fun main() {
    // Código de entrada/saída fornecido: mantenha-o 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 as lições de Programação Orientada a Objetos

Pratique por conta própria: Playground de Kotlin