Otopark
Coddy'nin Ruby Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 55 / 57.
Görev
ZorBir otopark inşa edin. Vehicle bir plate saklar; alt sınıfları size ve hourly_rate değerlerini tanımlar: Motorbike boyutu 1 (küçük) ve saat başına ücreti 1, Car boyutu 2 (orta) ve ücreti 3, Van boyutu 3 (büyük) ve ücreti 5'tir. Otoparkın sabiti SIZES, %w[small medium large] değeridir. Garage.new(small, medium, large) her boyut için park yeri sayısını alır. park(vehicle) bir aracı kendi boyutundaki boş bir yere veya boş yer yoksa bir sonraki daha büyük boyuttaki yere park eder ve parked AB12 in medium ya da full for AB12 döndürür. leave(plate, hours) park yerini boşaltır ve AB12 paid 9 (ücret çarpı saat sayısı, en az 1 saat) ya da no vehicle AB12 döndürür. status, free: small 1, medium 0, large 2 döndürür.
Sağlanan kod, park yerlerini small,medium,large olarak okur; ardından park car AB12, leave AB12 3 veya status komutlarını işler ve her yanıtı yazdırır.
Kodunuz vehicle.rb, motorbike.rb, car.rb, van.rb ve garage.rb dosyalarına yazılmalıdır. main.rb sağlanan girdi/çıktı kodunu içerir ve düzenlenemez.
Kendin dene
require_relative 'vehicle'
require_relative 'motorbike'
require_relative 'car'
require_relative 'van'
require_relative 'garage'
# Sağlanan girdi/çıktı kodu: olduğu gibi bırakın
input = []
while (line = gets)
input << line.chomp
end
small, medium, large = input[0].split(",").map(&:to_i)
garage = Garage.new(small, medium, large)
kinds = { "bike" => Motorbike, "car" => Car, "van" => Van }
input.drop(1).each do |cmd|
parts = cmd.split
case parts[0]
when "park" then puts garage.park(kinds[parts[1]].new(parts[2]))
when "leave" then puts garage.leave(parts[1], parts[2].to_i)
else puts garage.status
end
end
Nesne Yönelimli Programlama bölümündeki tüm dersler
1Sınıflar ve Nesneler
Dosyalarla ÇalışmaSınıf TanımlamaÖrnek DeğişkenleriMetotlar ve selfto_s ve inspectÖzet - Kütüphane Kartı7Çok Biçimlilik ve Ördek Tiplemesi
Çok BiçimlilikÖrdek TiplemesiSoyut Metotlarcase ve SınıflarTekrar - Ödeme Yöntemleri2Erişimciler ve self
Okuyucular ve YazıcılarÖzel Setter'larMetotlarda selfKimlik ve EşitlikTekrar - Kişi Listesi5Kalıtım
Alt sınıflarMetotları geçersiz kılmasuper çağrısıis_a? ve üst sınıflarTekrar - Personel Maaşları8Özel Metotlar
Eşitlik ve hashOperatör Metotlarıİndeksleme ve EklemeÖzel KoleksiyonlarTekrar - Kesirler11Proje: Kütüphane Yönetimi
Kitaplar ve ÜyelerKitap Ödünç Alma3Sınıf Metotları ve Değişkenleri
Sınıf MetotlarıSınıf Örnek DeğişkenleriSabitlerFabrika MetotlarıTekrar - Kupon KodlarıKendi başına pratik yap: Online Ruby derleyicisi