Menu
CoddyTech

Garasi Parkir

Termasuk bagian Pemrograman Berorientasi Object dalam perjalanan R di Coddy. Pelajaran 55 dari 57.

challenge icon

Tantangan

Sulit

Buat 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, dan Van.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 Class Garage. Field free menyimpan jumlah tempat kosong untuk setiap peringkat, dan parked adalah 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 balasan parked AB12 in medium, full for AB12, atau AB12 is already parked. leave(plate, hours) mengosongkan tempat tersebut dan memberikan balasan AB12 paid 9 (tarif dikalikan jumlah jam, minimal 1 jam) atau no vehicle AB12. status() memberikan balasan free: 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

Latihan sendiri: Compiler R online