Menu
Coddy logo textTech

Parking

Fait partie de la section Programmation orientée objet du Journey Kotlin de Coddy. Leçon 55 sur 57.

challenge icon

Défi

Difficile

Construisez un garage de stationnement.

  • L’énumération Size contient SMALL, MEDIUM et LARGE, dans cet ordre, chacune avec un label en minuscules.
  • Vehicle(plate) est une classe scellée avec les propriétés abstraites size et hourlyRate. Motorbike est petite (1 par heure), Car est moyen (3) et Van est grand (5).
  • Garage(small, medium, large) est créé avec le nombre de places par taille. park(vehicle) place le véhicule dans une place libre de sa propre taille ou, s’il n’y en a pas, dans une place libre de la taille immédiatement supérieure, et renvoie parked AB12 in medium, full for AB12 ou AB12 is already parked. leave(plate, hours) libère la place et renvoie AB12 paid 9 (tarif multiplié par le nombre d’heures, avec au moins 1 heure), ou no vehicle AB12. status() renvoie free: small 1, medium 0, large 2.

Le code fourni lit les places sous la forme small,medium,large, puis les commandes park car AB12 (bike, car ou van), leave AB12 3 ou status, et affiche chaque réponse.

Votre code doit être placé dans Size.kt, Vehicle.kt, Motorbike.kt, Car.kt, Van.kt et Garage.kt. Main.kt contient le code d’entrée/sortie fourni et ne peut pas être modifié.

Essayez vous-même

fun main() {
    // Code d'entrée/sortie fourni : le garder tel quel
    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())
        }
    }
}

Toutes les leçons de Programmation orientée objet

Entraînez-vous par vous-même : Playground Kotlin