Ulasan: Loket Tiket
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan Kotlin di Coddy. Pelajaran 16 dari 57.
Tantangan
SedangBuat kantor tiket kecil dengan tiga jenis deklarasi.
Ticketmemiliki konstruktor privat yang menerimanumber,show, danseat. Companion-nya menyimpanconst val SEATS = 3, penghitung privat, dan factoryissue(show, seat), yang memberi tiket nomor 1, 2, 3, ...;issuedadalah jumlah tiket yang telah diterbitkan sejauh ini.label()mengembalikan#1 Hamlet seat 2.BoxOfficeadalah object.sell(show, seat)memberikan responsno seat 4saat nomor kursi di luar rentang 1 sampaiTicket.SEATS,seat 2 takensaat 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 responsrefunded #1, atauno ticket #9.report()memberikan responsHamlet 2/3, Cats 1/3dengan urutan pertunjukan berdasarkan abjad, ataunothing 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
1class dan object
Bekerja dengan fileMendefinisikan classKonstruktor utamaBlok init dan validasiKonstruktor sekunderRingkasan: Kartu Perpustakaan2property dan Enkapsulasi
Accessor KustomModifier VisibilitasSetter Privatlazy dan lateinitRingkasan: Rekening Bank5Interface
Mendeklarasikan Interfacemethod DefaultBeberapa InterfaceInterface sebagai TipeUlasan: Metode Pembayaran11Proyek: Pengelolaan Perpustakaan
Buku dan AnggotaPeminjaman Buku3Objek dan Companion Object
Deklarasi ObjectCompanion ObjectKonstanta dengan constEkspresi ObjectUlasan: Loket TiketLatihan sendiri: Playground Kotlin