Récapitulatif – Billetterie
Fait partie de la section Programmation orientée objet du Journey Kotlin de Coddy. Leçon 16 sur 57.
Défi
MoyenConstruis un petit guichet de billetterie à partir de trois sortes de déclarations.
Ticketpossède un constructeur privé prenantnumber,showetseat. Son objet compagnon contientconst val SEATS = 3, un compteur privé et la fabriqueissue(show, seat), qui attribue aux billets les numéros 1, 2, 3, ... ;issuedest le nombre de billets émis jusqu'à présent.label()renvoie#1 Hamlet seat 2.BoxOfficeest un objet.sell(show, seat)répondno seat 4lorsque le siège est en dehors de l'intervalle allant de 1 àTicket.SEATS,seat 2 takenlorsqu'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épondrefunded #1, ouno ticket #9.report()répondHamlet 2/3, Cats 1/3avec les spectacles dans l'ordre alphabétique, ounothing 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
1Classes et objets
Travailler avec des fichiersDéfinir des classesConstructeurs primairesBlocs init et validationConstructeurs secondairesRécapitulatif - Carte de bibliothèque4Héritage
Classes ouvertes et sous-classesRedéfinition des membressuper et constructeursClasses abstraitesRécapitulatif – Annuaire du personnel2Propriétés et encapsulation
Accesseurs personnalisésModificateurs de visibilitéSetters privéslazy et lateinitRécapitulatif - Compte bancaire5Interfaces
Déclarer des interfacesMéthodes par défautInterfaces multiplesInterfaces en tant que typesRécapitulatif - Méthodes de paiement8Génériques
Fonctions génériquesClasses génériquesContraintes de typeVariance avec in et outRécapitulatif - File de priorité11Projet : Gestion de bibliothèque
Livres et membresEmprunter des livres3Objets et compagnons
Déclarations d’objetsObjets compagnonsConstantes avec constExpressions d’objetsRécapitulatif – BilletterieEntraînez-vous par vous-même : Playground Kotlin