Menu
CoddyTech

Ulasan: Loket Tiket

Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan Kotlin di Coddy. Pelajaran 16 dari 57.

challenge icon

Tantangan

Sedang

Buat kantor tiket kecil dengan tiga jenis deklarasi.

  • Ticket memiliki konstruktor privat yang menerima number, show, dan seat. Companion-nya menyimpan const val SEATS = 3, penghitung privat, dan factory issue(show, seat), yang memberi tiket nomor 1, 2, 3, ...; issued adalah jumlah tiket yang telah diterbitkan sejauh ini. label() mengembalikan #1 Hamlet seat 2.
  • BoxOffice adalah object. sell(show, seat) memberikan respons no seat 4 saat nomor kursi di luar rentang 1 sampai Ticket.SEATS, seat 2 taken saat kursi tersebut sudah terjual untuk pertunjukan itu, dan jika tidak, menerbitkan tiket lalu memberikan respons berupa labelnya. refund(number) membebaskan kursi dari tiket yang terjual dan memberikan respons refunded #1, atau no ticket #9. report() memberikan respons Hamlet 2/3, Cats 1/3 dengan urutan pertunjukan berdasarkan abjad, atau nothing sold.

Kode yang disediakan membaca perintah sell Hamlet 2, refund 1 atau report, mencetak setiap respons, lalu mencetak tickets issued: beserta jumlahnya. Nomor tidak pernah digunakan kembali setelah tiket dikembalikan.

Tulis kodemu di Ticket.kt dan BoxOffice.kt. Main.kt berisi kode input/output yang disediakan dan tidak boleh diedit.

Coba sendiri

fun main() {
    // Kode input/output yang disediakan: biarkan apa adanya
    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}")
}

Semua pelajaran di Pemrograman Berorientasi Objek

Latihan sendiri: Playground Kotlin