Otopark
Coddy'nin Kotlin Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 55 / 57.
Görev
ZorBir otopark oluşturun.
Sizeenum'u, bu sıraylaSMALL,MEDIUMveLARGEdeğerlerine sahiptir; her birinin küçük harfli birlabel'ı vardır.Vehicle(plate),sizevehourlyRatesoyut özelliklerine sahip sealed bir sınıftır.Motorbikeküçük (saat başına 1),Carorta (3) veVanbü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 veparked AB12 in medium,full for AB12ya daAB12 is already parkedyanıtlarından birini verir.leave(plate, hours)yeri boşaltır veAB12 paid 9(ücret çarpı saat, en az 1 saat) veyano vehicle AB12yanıtını verir.status()free: small 1, medium 0, large 2yanı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
1Sınıflar ve Nesneler
Dosyalarla ÇalışmaSınıfları TanımlamaBirincil Yapıcılarinit Blokları ve Doğrulamaİkincil YapıcılarTekrar - Kütüphane Kartı4Kalıtım
Açık Sınıflar ve Alt SınıflarÜyeleri Geçersiz Kılmasuper ve YapıcılarSoyut SınıflarTekrar - Personel Dizini2Özellikler ve Kapsülleme
Özel ErişimcilerGörünürlük DeğiştiricileriÖzel Setter'larlazy ve lateinitTekrar - Banka Hesabı5Arayüzler
Arayüz BildirimleriVarsayılan MetotlarBirden Çok ArayüzTür Olarak ArayüzlerÖzet - Ödeme Yöntemleri8Generic'ler
Generic FonksiyonlarGeneric SınıflarTür Kısıtlamalarıin ve out ile VaryansTekrar - Öncelik Kuyruğu11Proje: Kütüphane Yönetimi
Kitaplar ve ÜyelerKitap Ödünç AlmaKendi başına pratik yap: Kotlin playground