Garasi Parkir
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan Kotlin di Coddy. Pelajaran 55 dari 57.
Tantangan
SulitBuat garasi parkir.
- Enum
SizememilikiSMALL,MEDIUM, danLARGE, dalam urutan tersebut, masing-masing denganlabelhuruf kecil. Vehicle(plate)adalah sealed class dengan property abstraksizedanhourlyRate.Motorbikeberukuran kecil (1 per jam),Carberukuran sedang (3), danVanberukuran besar (5).Garage(small, medium, large)dibuat dengan jumlah tempat parkir untuk setiap ukuran.park(vehicle)menempatkan kendaraan di tempat kosong dengan ukuran yang sama, atau, jika tidak ada, di tempat kosong dengan ukuran berikutnya yang lebih besar, lalu memberikan responsparked AB12 in medium,full for AB12atauAB12 is already parked.leave(plate, hours)mengosongkan tempat parkir dan memberikan responsAB12 paid 9(tarif dikali jumlah jam, minimal 1 jam), atauno vehicle AB12.status()memberikan responsfree: small 1, medium 0, large 2.
Kode yang disediakan membaca tempat parkir dalam format small,medium,large, lalu perintah park car AB12 (bike, car, atau van), leave AB12 3, atau status, lalu mencetak setiap respons.
Tulis kodemu di Size.kt, Vehicle.kt, Motorbike.kt, Car.kt, Van.kt, dan Garage.kt. Main.kt berisi kode input/output yang disediakan dan tidak dapat diedit.
Coba sendiri
fun main() {
// Kode input/output yang disediakan: biarkan apa adanya
val input = generateSequence(::readLine).toList()
val (small, medium, large) = input[0].split(",").map { it.toInt() }
val garage = Garage(small, medium, large)
for (cmd in input.drop(1)) {
val p = cmd.split(" ")
when (p[0]) {
"park" -> {
val vehicle = when (p[1]) {
"bike" -> Motorbike(p[2])
"van" -> Van(p[2])
else -> Car(p[2])
}
println(garage.park(vehicle))
}
"leave" -> println(garage.leave(p[1], p[2].toInt()))
else -> println(garage.status())
}
}
}
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 BukuLatihan sendiri: Playground Kotlin