Menu
Coddy logo textTech

Parcheggio

Fa parte della sezione Programmazione orientata agli oggetti del percorso R di Coddy. Lezione 55 di 57.

challenge icon

Sfida

Difficile

Crea un garage. Vehicle.R dichiara la classe S4 virtuale Vehicle (slot plate), i generici size_rank(v) e rate(v) e i nomi SIZES: small, medium, large per i ranghi 1, 2 e 3.

  • In Motorbike.R, Car.R e Van.R vengono dichiarate le classi; aggiungi i loro metodi: una moto ha rango 1 e paga 1 all'ora, un'auto ha rango 2 e paga 3 all'ora, un furgone ha rango 3 e paga 5 all'ora.
  • In Garage.R completa la classe di riferimento Garage. Il campo free contiene i posti liberi per rango e parked è una lista indicizzata per targa. park(v) occupa un posto libero del rango del veicolo o, se non ce ne sono, del rango successivo più grande, e restituisce parked AB12 in medium, full for AB12 oppure AB12 is already parked. leave(plate, hours) libera il posto e restituisce AB12 paid 9 (la tariffa moltiplicata per le ore, per almeno 1 ora) oppure no vehicle AB12. status() restituisce free: small 1, medium 0, large 2; parked: 1.

Il codice fornito legge i posti liberi come small,medium,large, poi i comandi park car AB12 (bike, car o van), leave AB12 3 oppure status, e stampa ogni risposta.

Il tuo codice va inserito in Vehicle.R, Motorbike.R, Car.R, Van.R e Garage.R. main.R contiene il codice di input/output fornito e non può essere modificato.

Provalo tu

source("Vehicle.R")
source("Motorbike.R")
source("Car.R")
source("Van.R")
source("Garage.R")

# Codice di input/output fornito: lascialo così com'è
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 = "")
}

Tutte le lezioni di Programmazione orientata agli oggetti

Esercitati da solo: Compilatore R online