Garasi Parkir
Termasuk bagian Pemrograman Berorientasi Object dalam perjalanan R di Coddy. Pelajaran 55 dari 57.
Tantangan
SulitBuat garasi parkir. Vehicle.R mendeklarasikan class S4 virtual Vehicle (slot plate), generic size_rank(v) dan rate(v), serta nama SIZES: small, medium, large untuk peringkat 1, 2, dan 3.
- Di
Motorbike.R,Car.R, danVan.R, class-nya dideklarasikan. Tambahkan method-nya: motorbike memiliki peringkat 1 dan membayar 1 per jam, car memiliki peringkat 2 dan membayar 3 per jam, van memiliki peringkat 3 dan membayar 5 per jam. - Di
Garage.R, lengkapi Reference ClassGarage. Fieldfreemenyimpan jumlah tempat kosong untuk setiap peringkat, danparkedadalah list berdasarkan pelat nomor.park(v)menggunakan tempat kosong dengan peringkat yang sama dengan peringkat kendaraan, atau, jika tidak ada tempat kosong, tempat dengan peringkat berikutnya yang lebih besar, lalu memberikan balasanparked AB12 in medium,full for AB12, atauAB12 is already parked.leave(plate, hours)mengosongkan tempat tersebut dan memberikan balasanAB12 paid 9(tarif dikalikan jumlah jam, minimal 1 jam) atauno vehicle AB12.status()memberikan balasanfree: small 1, medium 0, large 2; parked: 1.
Kode yang disediakan membaca jumlah tempat kosong dalam format small,medium,large, lalu perintah park car AB12 (bike, car, atau van), leave AB12 3, atau status, kemudian mencetak setiap balasan.
Tuliskan kodemu di Vehicle.R, Motorbike.R, Car.R, Van.R, dan Garage.R. main.R berisi kode input/output yang disediakan dan tidak dapat diedit.
Coba sendiri
source("Vehicle.R")
source("Motorbike.R")
source("Car.R")
source("Van.R")
source("Garage.R")
# Kode input/output yang disediakan: biarkan apa adanya
input <- suppressWarnings(readLines(file("stdin")))
garage <- Garage$new(free = as.numeric(strsplit(input[1], ",")[[1]]))
for (line in input[-1]) {
p <- strsplit(line, " ")[[1]]
reply <- switch(p[1],
park = garage$park(switch(p[2],
bike = new("Motorbike", plate = p[3]),
car = new("Car", plate = p[3]),
van = new("Van", plate = p[3]))),
leave = garage$leave(p[2], as.numeric(p[3])),
status = garage$status())
cat(reply, "\n", sep = "")
}
Semua pelajaran di Pemrograman Berorientasi Object
1Dasar S3
Bekerja dengan fileList dengan classFungsi KonstruktorMethod print dan formatValidator dan helperUlasan: Suhu4Enkapsulasi di R
Closure sebagai objectEnvironment sebagai objectFungsi accessorMelindungi stateRangkuman: Meter Parkir2S3 Generics dan Method
Generics dan UseMethodMethod DefaultMethod untuk Base GenericsDasar-Dasar NextMethodRekap: Luas Bangun5S4 class
Mendefinisikan class S4Slots dan AksesPemeriksaan ValiditasMethod showRingkasan: Katalog Produk8Kelas Referensi
Mendefinisikan Kelas ReferensiPembaruan method dan fieldSemantik PenyalinanPewarisan dan callSuperRangkuman: Antrean Tugas11Proyek: Manajemen Perpustakaan
Buku dan AnggotaMeminjam BukuLatihan sendiri: Compiler R online