Menu
Coddy logo textTech

Otopark

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

challenge icon

Görev

Zor

Bir otopark oluşturun.

  • Size enum'u, bu sırayla SMALL, MEDIUM ve LARGE değerlerine sahiptir; her birinin küçük harfli bir label'ı vardır.
  • Vehicle(plate), size ve hourlyRate soyut özelliklerine sahip sealed bir sınıftır. Motorbike küçük (saat başına 1), Car orta (3) ve Van büyüktür (5).
  • Garage(small, medium, large), her boyut için park yeri sayısıyla oluşturulur. park(vehicle), aracı kendi boyutundaki boş bir yere veya yoksa boş yeri olan bir sonraki daha büyük boyuta yerleştirir ve parked AB12 in medium, full for AB12 ya da AB12 is already parked yanıtlarından birini verir. leave(plate, hours) yeri boşaltır ve AB12 paid 9 (ücret çarpı saat, en az 1 saat) veya no vehicle AB12 yanıtını verir. status() free: small 1, medium 0, large 2 yanıtını verir.

Sağlanan kod, yerleri small,medium,large olarak okur; ardından park car AB12 (bike, car veya van), leave AB12 3 ya da status komutlarını işler ve her yanıtı yazdırır.

Kodunuz Size.kt, Vehicle.kt, Motorbike.kt, Car.kt, Van.kt ve Garage.kt dosyalarına gelmelidir. Main.kt, sağlanan girdi/çıktı 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()
    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())
        }
    }
}

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

Kendi başına pratik yap: Kotlin playground