Pianificatore di eventi
Fa parte della sezione Programmazione orientata agli oggetti del percorso Swift di Coddy. Lezione 56 di 57.
Sfida
DifficileCrea un pianificatore di eventi con i protocolli standard. Event è una struct con title, day (1-31), start e end come orari. È Comparable (per giorno, poi per orario di inizio, poi per titolo), Hashable ed Equatable solo in base al titolo e al giorno (lo stesso evento inserito due volte), e CustomStringConvertible, come in day 3 09-11 standup. La classe Scheduler ha add(_:), che restituisce added, duplicate (stesso titolo nello stesso giorno) oppure conflicts with <title> (un evento esistente in quel giorno i cui orari si sovrappongono: uno inizia prima che l'altro finisca). agenda() restituisce gli eventi ordinati e busiestDay() restituisce busiest day 3: 5h oppure no events.
Il codice fornito legge gli eventi da righe nel formato title,day,start,end e stampa la risposta per ciascuno, poi l'agenda (un evento per riga) e il giorno più impegnativo.
Inserisci il tuo codice in Event.swift e Scheduler.swift. main.swift contiene il codice fornito per l'input/output e non può essere modificato.
Provalo tu
// Código de entrada/salida proporcionado: mantenlo tal como está
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())
Tutte le lezioni di Programmazione orientata agli oggetti
1Classi e oggetti
Lavorare con i fileDefinire le classiMetodi e selfInizializzatoriLe classi sono riferimentiRiepilogo - Tessera della biblioteca4Incapsulamento
Controllo degli accessiSola lettura dall’esternoProteggere lo statoInizializzatori che possono fallireRiepilogo - Conto bancario7Polimorfismo e tipi generici
PolimorfismoCasting dei tipiFunzioni genericheTipi genericiRipasso - Calcolatore di forme2Struct e tipi valore
Le structSemantica dei valoriMetodi mutantiStruct o classeRiepilogo - Articolo di inventario5Ereditarietà
SottoclassiSovrascrivere i metodiInizializzatori e superfinal e gerarchieRiepilogo - Gerarchia dei dipendenti8Protocolli standard
CustomStringConvertibleEquatableComparableHashableRiepilogo - Ordinamento personalizzato11Progetto: Gestione della biblioteca
Libri e utentiPrestito dei libriEsercitati da solo: Playground Swift