Veranstaltungsplaner
Teil des Abschnitts Objektorientierte Programmierung der Swift-Journey von Coddy. Lektion 56 von 57.
Aufgabe
SchwerErstelle einen Event-Scheduler mit den Standardprotokollen. Event ist eine Struktur mit title, day (1-31), den Stunden start und end. Sie ist Comparable (zuerst nach Tag, dann nach Startzeit und anschließend nach Titel), Hashable und Equatable, wobei nur Titel und Tag berücksichtigt werden (dasselbe Event wurde zweimal eingegeben), sowie CustomStringConvertible mit der Darstellung day 3 09-11 standup. Die Klasse Scheduler verfügt über add(_:), das added, duplicate (derselbe Titel am selben Tag) oder conflicts with <title> zurückgibt (ein vorhandenes Event an diesem Tag, dessen Zeit sich überschneidet: Eines beginnt, bevor das andere endet). agenda() gibt die sortierten Events zurück, und busiestDay() gibt busiest day 3: 5h oder no events zurück.
Der bereitgestellte Code liest Events als Zeilen im Format title,day,start,end ein und gibt für jedes die Antwort aus, anschließend die Agenda (ein Event pro Zeile) und den Tag mit den meisten Aktivitäten.
Dein Code gehört in Event.swift und Scheduler.swift. main.swift enthält den bereitgestellten Eingabe-/Ausgabecode und darf nicht bearbeitet werden.
Probier es selbst
// Bereitgestellter Ein-/Ausgabe-Code: belasse ihn wie er ist
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())
Alle Lektionen in Objektorientierte Programmierung
1Klassen und Objekte
Arbeiten mit DateienKlassen definierenMethoden und selfInitialisiererKlassen sind ReferenzenRückblick – Bibliotheksausweis4Kapselung
ZugriffskontrolleVon außen schreibgeschütztZustand schützenFehlschlagende InitialisiererRückblick – Bankkonto7Polymorphismus und Generika
PolymorphismusTypumwandlungGenerische FunktionenGenerische TypenZusammenfassung – Shape-Rechner2Strukturen und Werttypen
StrukturenWertsemantikVerändernde MethodenStruktur oder KlasseZusammenfassung – Inventarelement5Vererbung
UnterklassenMethoden überschreibenInitialisierer und superfinal und HierarchienRückblick – Mitarbeiterhierarchie8Standardprotokolle
CustomStringConvertibleEquatableComparableHashableRückblick – Benutzerdefiniertes Sortieren11Projekt: Bibliotheksverwaltung
Bücher und MitgliederBücher ausleihenÜbe selbstständig: Swift-Playground