Estacionamiento
Parte de la sección Programación orientada a objetos del Journey de R de Coddy. Lección 55 de 57.
Desafío
DifícilConstruye un garaje de estacionamiento. Vehicle.R declara la clase S4 virtual Vehicle (ranura plate), los genéricos size_rank(v) y rate(v), y los nombres SIZES: small, medium, large para los rangos 1, 2 y 3.
- En
Motorbike.R,Car.RyVan.Rse declaran las clases; añade sus métodos: una motocicleta tiene rango 1 y paga 1 por hora, un automóvil tiene rango 2 y paga 3 por hora, y una furgoneta tiene rango 3 y paga 5 por hora. - En
Garage.R, completa la clase de referenciaGarage. Su campofreecontiene los espacios libres por rango yparkedes una lista indexada por matrícula.park(v)ocupa un espacio libre del rango propio del vehículo o, si no hay ninguno libre, del siguiente rango mayor, y respondeparked AB12 in medium,full for AB12oAB12 is already parked.leave(plate, hours)libera el espacio y respondeAB12 paid 9(la tarifa multiplicada por las horas, al menos 1 hora) ono vehicle AB12.status()respondefree: small 1, medium 0, large 2; parked: 1.
El código proporcionado lee los espacios libres como small,medium,large, después recibe los comandos park car AB12 (bike, car o van), leave AB12 3 o status, e imprime cada respuesta.
Tu código debe ir en Vehicle.R, Motorbike.R, Car.R, Van.R y Garage.R. main.R contiene el código proporcionado de entrada/salida y no se puede editar.
Pruébalo tú mismo
source("Vehicle.R")
source("Motorbike.R")
source("Car.R")
source("Van.R")
source("Garage.R")
# Código de entrada/salida suministrado: mantenlo como está
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 = "")
}
Todas las lecciones de Programación orientada a objetos
1Fundamentos de S3
Trabajar con archivosListas con una claseFunciones constructorasMétodos de impresión y formatoValidadores y auxiliaresRepaso: temperaturas4Encapsulación en R
Cierres como objetosEntornos como objetosFunciones de accesoProtección del estadoRepaso: parquímetro2S3 Genéricos y métodos
Genéricos y UseMethodMétodos predeterminadosMétodos para genéricos baseFundamentos de NextMethodRepaso: áreas de figuras5Clases S4
Definición de clases S4Slots y accesoComprobaciones de validezMétodos showRepaso - Catálogo de productos8Clases de referencia
Definición de clases de referenciaMétodos y actualizaciones de camposSemántica de copiaHerencia y callSuperRepaso: cola de tareas11Proyecto: Gestión de biblioteca
Libros y miembrosPréstamo de librosPractica por tu cuenta: Compilador de R online