Penjadwal Acara
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan Swift di Coddy. Pelajaran 56 dari 57.
Tantangan
SulitBuat scheduler acara dengan protokol standar. Event adalah struct dengan title, day (1-31), start, dan jam end. Struct ini Comparable (berdasarkan hari, lalu waktu mulai, lalu judul), Hashable dan Equatable hanya berdasarkan judul dan hari (acara yang sama dimasukkan dua kali), serta CustomStringConvertible dengan format day 3 09-11 standup. class Scheduler memiliki add(_:), yang mengembalikan added, duplicate (judul yang sama pada hari yang sama), atau conflicts with <title> (acara yang sudah ada pada hari tersebut dengan jam yang bertumpang tindih: salah satunya dimulai sebelum yang lain berakhir). agenda() mengembalikan acara yang sudah diurutkan, dan busiestDay() mengembalikan busiest day 3: 5h atau no events.
Kode yang disediakan membaca acara dalam baris berformat title,day,start,end dan mencetak balasan untuk setiap acara, lalu agenda (satu acara per baris) dan hari tersibuk.
Tulis kodemu di Event.swift dan Scheduler.swift. main.swift berisi kode input/output yang disediakan dan tidak boleh diedit.
Coba sendiri
// Kode input/output yang disediakan: biarkan apa adanya
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())
Semua pelajaran di Pemrograman Berorientasi Objek
1Class dan Object
Bekerja dengan FileMendefinisikan ClassMethod dan selfInitializerClass adalah ReferensiUlasan: Kartu Perpustakaan4Enkapsulasi
Kontrol AksesHanya Bisa Dibaca dari LuarMelindungi StateInitializer yang Bisa GagalRangkuman: Rekening Bank7Polimorfisme dan Generik
PolimorfismeKonversi TipeFungsi GenerikTipe GenerikRangkuman: Kalkulator Bentuk2Struct dan Tipe Nilai
StructSemantik NilaiMethod yang Mengubah NilaiStruct atau classRangkuman, Item Inventaris11Proyek: Manajemen Perpustakaan
Buku dan AnggotaPeminjaman BukuLatihan sendiri: Playground Swift