Garasi Parkir
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan Ruby di Coddy. Pelajaran 55 dari 57.
Tantangan
SulitBuat garasi parkir. Vehicle menyimpan plate; subclass-nya mendefinisikan size dan hourly_rate: Motorbike berukuran 1 (small) dengan tarif 1 per jam, Car berukuran 2 (medium) dengan tarif 3, dan Van berukuran 3 (large) dengan tarif 5. Konstanta garasi SIZES adalah %w[small medium large]. Garage.new(small, medium, large) menerima jumlah tempat untuk tiap ukuran. park(vehicle) menempatkan kendaraan di tempat kosong yang sesuai ukurannya atau, jika tidak ada yang kosong, di tempat berukuran lebih besar berikutnya, lalu mengembalikan parked AB12 in medium atau full for AB12. leave(plate, hours) mengosongkan tempat tersebut dan mengembalikan AB12 paid 9 (tarif dikalikan jumlah jam, minimal 1 jam), atau no vehicle AB12. status mengembalikan free: small 1, medium 0, large 2.
Kode yang disediakan membaca jumlah tempat dalam format small,medium,large, lalu perintah park car AB12, leave AB12 3 atau status, dan mencetak setiap balasan.
Tulis kodemu di vehicle.rb, motorbike.rb, car.rb, van.rb, dan garage.rb. main.rb berisi kode input/output yang disediakan dan tidak boleh diedit.
Coba sendiri
require_relative 'vehicle'
require_relative 'motorbike'
require_relative 'car'
require_relative 'van'
require_relative 'garage'
# Kode input/output yang disediakan: biarkan apa adanya
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
Semua pelajaran di Pemrograman Berorientasi Objek
1class dan object
Bekerja dengan fileMendefinisikan classVariabel instansmethod dan selfto_s dan inspectRingkasan: Kartu Perpustakaan4Enkapsulasi
private methodprotected methodprivate setterMelindungi StatusUlasan, Mesin Penjual Otomatis7Polimorfisme dan Duck Typing
PolimorfismeDuck TypingMethod Abstrakcase dan classRingkasan: Method Pembayaran2Accessor dan self
Pembaca dan PenulisSetter Kustomself dalam methodIdentitas dan KesetaraanRangkuman: Daftar Kontak8Special method
Kesetaraan dan hashOperator methodPengindeksan dan penambahanKoleksi kustomRingkasan: Pecahan11Proyek: Manajemen Perpustakaan
Buku dan AnggotaMeminjam Buku3Method dan Variabel class
Method classVariabel instance classKonstantaMethod pabrikRangkuman: Kode KuponLatihan sendiri: Compiler Ruby online