Otopark
Coddy'nin Swift Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 55 / 57.
Görev
ZorBir otopark garajı oluşturun. Vehicle protokolünde plate, size (small = 1, medium = 2, large = 3 değerlerine sahip Size: Int, Comparable enum'u) ve hourlyRate bulunur. Motorbike (small, saat başına 1), Car (medium, 3) ve Van (large, 5) yapılarını uygulayın. Garage sınıfı, her boyut için bir park yeri sayısıyla oluşturulur. park(_:), bir aracı kendi boyutundaki boş bir yere veya boş yer yoksa bir sonraki daha büyük boyuttaki yere koyar ve parked AB12 in medium ya da full for AB12 yanıtını verir. leave(plate:hours:) park yerini boşaltır ve AB12 paid 9 (ücret çarpı saat, en az 1 saat) ya da no vehicle AB12 yanıtını verir. status() ise free: small 1, medium 0, large 2 yanıtını verir.
Sağlanan kod, park yeri sayılarını small,medium,large biçiminde okur; ardından park car AB12, leave AB12 3 veya status komutlarını işler ve her yanıtı yazdırır.
Kodunuz Size.swift, Vehicle.swift, Motorbike.swift, Car.swift, Van.swift ve Garage.swift dosyalarına yazılmalıdır. main.swift sağlanan girdi/çıktı kodunu içerir ve düzenlenemez.
Kendin dene
// Sağlanan girdi/çıktı kodu: olduğu gibi bırakın
var input: [String] = []
while let line = readLine() { input.append(line) }
let s = input[0].split(separator: ",").map { Int($0)! }
let garage = Garage(small: s[0], medium: s[1], large: s[2])
for cmd in input.dropFirst() {
let p = cmd.split(separator: " ").map(String.init)
switch p[0] {
case "park":
let v: any Vehicle
switch p[1] {
case "bike": v = Motorbike(plate: p[2])
case "van": v = Van(plate: p[2])
default: v = Car(plate: p[2])
}
print(garage.park(v))
case "leave": print(garage.leave(plate: p[1], hours: Int(p[2])!))
default: print(garage.status())
}
}
Nesne Yönelimli Programlama bölümündeki tüm dersler
1Sınıflar ve Nesneler
Dosyalarla ÇalışmaSınıfları TanımlamaMetotlar ve selfBaşlatıcılarSınıflar ReferanstırTekrar - Kütüphane Kartı4Kapsülleme
Erişim DenetimiDışarıdan Salt OkunurDurumu KorumaBaşarısız Olabilen BaşlatıcılarTekrar - Banka Hesabı7Polimorfizm ve Generic'ler
PolimorfizmTür DönüşümüGeneric FonksiyonlarGeneric TürlerTekrar - Şekil Hesaplayıcı2Struct Yapıları ve Değer Türleri
Struct YapılarıDeğer SemantiğiDeğiştirici MetotlarStruct mı Class mıTekrar - Envanter Öğesi5Kalıtım
Alt sınıflarMetotları Geçersiz KılmaBaşlatıcılar ve superfinal ve HiyerarşilerTekrar - Çalışan Hiyerarşisi11Proje: Kütüphane Yönetimi
Kitaplar ve ÜyelerKitap Ödünç AlmaKendi başına pratik yap: Swift playground