Menu
CoddyTech

Garasi Parkir

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

challenge icon

Tantangan

Sulit

Buat garasi parkir.

  • Enum Size memiliki SMALL, MEDIUM, dan LARGE, dalam urutan tersebut, masing-masing dengan label huruf kecil.
  • Vehicle(plate) adalah sealed class dengan property abstrak size dan hourlyRate. Motorbike berukuran kecil (1 per jam), Car berukuran sedang (3), dan Van berukuran 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 respons parked AB12 in medium, full for AB12 atau AB12 is already parked. leave(plate, hours) mengosongkan tempat parkir dan memberikan respons AB12 paid 9 (tarif dikali jumlah jam, minimal 1 jam), atau no vehicle AB12. status() memberikan respons free: 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

Latihan sendiri: Playground Kotlin