Menu
Coddy logo textTech

Estacionamiento

Parte de la sección Programación orientada a objetos del Journey de Kotlin de Coddy. Lección 55 de 57.

challenge icon

Desafío

Difícil

Construye un garaje de estacionamiento.

  • La enumeración Size tiene SMALL, MEDIUM y LARGE, en ese orden, cada uno con una label en minúsculas.
  • Vehicle(plate) es una clase sellada con las propiedades abstractas size y hourlyRate. Motorbike es pequeño (1 por hora), Car es mediano (3) y Van es grande (5).
  • Garage(small, medium, large) se crea con el número de plazas por tamaño. park(vehicle) coloca el vehículo en una plaza libre de su propio tamaño o, si no hay ninguna, en la siguiente plaza de mayor tamaño que esté disponible, y responde parked AB12 in medium, full for AB12 o AB12 is already parked. leave(plate, hours) libera la plaza y responde AB12 paid 9 (tarifa por horas, al menos 1 hora), o no vehicle AB12. status() responde free: small 1, medium 0, large 2.

El código proporcionado lee las plazas como small,medium,large, después los comandos park car AB12 (bike, car o van), leave AB12 3 o status, e imprime cada respuesta.

Tu código debe ir en Size.kt, Vehicle.kt, Motorbike.kt, Car.kt, Van.kt y Garage.kt. Main.kt contiene el código proporcionado de entrada/salida y no se puede editar.

Pruébalo tú mismo

fun main() {
    // Código de entrada/salida suministrado: déjalo tal como está
    val input = generateSequence(::readLine).toList()
    val (small, medium, large) = input[0].split(",").map { it.toInt() }
    val garage = Garage(small, medium, large)
    for (cmd in input.drop(1)) {
        val p = cmd.split(" ")
        when (p[0]) {
            "park" -> {
                val vehicle = when (p[1]) {
                    "bike" -> Motorbike(p[2])
                    "van" -> Van(p[2])
                    else -> Car(p[2])
                }
                println(garage.park(vehicle))
            }
            "leave" -> println(garage.leave(p[1], p[2].toInt()))
            else -> println(garage.status())
        }
    }
}

Todas las lecciones de Programación orientada a objetos

Practica por tu cuenta: Playground de Kotlin