Planificateur d’événements
Fait partie de la section Programmation orientée objet du Journey Swift de Coddy. Leçon 56 sur 57.
Défi
DifficileCréez un planificateur d’événements avec les protocoles standard. Event est une structure contenant title, day (1-31), ainsi que les heures de start et end. Elle est Comparable (d’abord par jour, puis par heure de début, puis par titre), Hashable et Equatable uniquement sur le titre et le jour (le même événement saisi deux fois), et CustomStringConvertible sous la forme day 3 09-11 standup. La classe Scheduler possède add(_:), qui renvoie added, duplicate (même titre le même jour) ou conflicts with <title> (un événement existant ce jour-là dont les horaires se chevauchent : l’un commence avant que l’autre ne se termine). agenda() renvoie les événements triés, et busiestDay() renvoie busiest day 3: 5h ou no events.
Le code fourni lit les événements sous forme de lignes title,day,start,end et affiche la réponse pour chacun, puis l’agenda (un événement par ligne) et le jour le plus chargé.
Votre code doit être placé dans Event.swift et Scheduler.swift. main.swift contient le code fourni d’entrée/sortie et ne peut pas être modifié.
Essayez vous-même
// Code d'entrée/sortie fourni : le garder tel quel
var input: [String] = []
while let line = readLine() { input.append(line) }
let scheduler = Scheduler()
for line in input {
let p = line.split(separator: ",").map(String.init)
print(scheduler.add(Event(title: p[0], day: Int(p[1])!, start: Int(p[2])!, end: Int(p[3])!)))
}
for e in scheduler.agenda() { print(e) }
print(scheduler.busiestDay())
Toutes les leçons de Programmation orientée objet
1Classes et objets
Travailler avec des fichiersDéfinir des classesMéthodes et selfInitialiseursLes classes sont des référencesRécapitulatif - Carte de bibliothèque4Encapsulation
Contrôle d’accèsLecture seule depuis l’extérieurProtection de l’étatInitialiseurs pouvant échouerRécapitulatif - Compte bancaire7Polymorphisme et génériques
PolymorphismeConversion de typeFonctions génériquesTypes génériquesRécapitulatif - Calculateur de formes2Structures et types valeur
StructuresSémantique de valeurMéthodes mutantesStructure ou classeRécapitulatif - article d’inventaire5Héritage
Sous-classesRedéfinition des méthodesInitialiseurs et superfinal et hiérarchiesRécapitulatif - hiérarchie des employés8Protocoles standard
CustomStringConvertibleEquatableComparableHashableRécapitulatif - Tri personnalisé11Projet : Gestion de bibliothèque
Livres et membresEmprunter des livresEntraînez-vous par vous-même : Playground Swift