Menu
Coddy logo textTech

Tekrar - Bilet Gişesi

Coddy'nin Kotlin Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 16 / 57.

challenge icon

Görev

Orta

Üç tür bildirim kullanarak küçük bir bilet gişesi oluşturun.

  • Ticket, number, show ve seat alanlarını alan özel bir kurucuya sahiptir. Companion nesnesi const val SEATS = 3 sabitini, özel bir sayacı ve biletleri 1, 2, 3, ... numaralarıyla oluşturan issue(show, seat) fabrikasını barındırır; issued şimdiye kadar oluşturulan biletlerin sayısıdır. label(), #1 Hamlet seat 2 döndürür.
  • BoxOffice bir nesnedir. sell(show, seat), koltuk 1 ile Ticket.SEATS aralığının dışındaysa no seat 4, o gösteri için satılmışsa seat 2 taken yanıtını verir; aksi takdirde bir bilet oluşturur ve etiketini yanıt olarak verir. refund(number), satılmış bir biletin koltuğunu serbest bırakır ve refunded #1 veya no ticket #9 yanıtını verir. report(), gösterileri alfabetik sırada olacak şekilde Hamlet 2/3, Cats 1/3 yanıtını veya nothing sold yanıtını verir.

Sağlanan kod sell Hamlet 2, refund 1 veya report komutlarını okur, her yanıtı yazdırır ve son olarak sayı ile birlikte tickets issued: yazdırır. İade işleminden sonra numaralar asla yeniden kullanılmaz.

Kodunuz Ticket.kt ve BoxOffice.kt dosyalarına gelmelidir. Main.kt, sağlanan giriş/çıkış kodunu içerir ve düzenlenemez.

Kendin dene

fun main() {
    // Sağlanan girdi/çıktı kodu: olduğu gibi bırakın
    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}")
}

Nesne Yönelimli Programlama bölümündeki tüm dersler

Kendi başına pratik yap: Kotlin playground