Menu
Coddy logo textTech

Récapitulatif – Billetterie

Fait partie de la section Programmation orientée objet du Journey Kotlin de Coddy. Leçon 16 sur 57.

challenge icon

Défi

Moyen

Construis un petit guichet de billetterie à partir de trois sortes de déclarations.

  • Ticket possède un constructeur privé prenant number, show et seat. Son objet compagnon contient const val SEATS = 3, un compteur privé et la fabrique issue(show, seat), qui attribue aux billets les numéros 1, 2, 3, ... ; issued est le nombre de billets émis jusqu'à présent. label() renvoie #1 Hamlet seat 2.
  • BoxOffice est un objet. sell(show, seat) répond no seat 4 lorsque le siège est en dehors de l'intervalle allant de 1 à Ticket.SEATS, seat 2 taken lorsqu'il est vendu pour ce spectacle, et émet sinon un billet avant de répondre avec son libellé. refund(number) libère le siège d'un billet vendu et répond refunded #1, ou no ticket #9. report() répond Hamlet 2/3, Cats 1/3 avec les spectacles dans l'ordre alphabétique, ou nothing sold.

Le code fourni lit les commandes sell Hamlet 2, refund 1 ou report, affiche chaque réponse et enfin tickets issued: avec le nombre de billets. Les numéros ne sont jamais réutilisés après un remboursement.

Ton code doit se trouver dans Ticket.kt et BoxOffice.kt. Main.kt contient le code d'entrée/sortie fourni et ne peut pas être modifié.

Essayez vous-même

fun main() {
    // Code d'entrée/sortie fourni : le garder tel quel
    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}")
}

Toutes les leçons de Programmation orientée objet

Entraînez-vous par vous-même : Playground Kotlin