Etkinlik Planlayıcı
Coddy'nin Swift Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 56 / 57.
Görev
ZorStandart protokolleri kullanarak bir etkinlik zamanlayıcısı oluşturun. Event, title, day (1-31), start ve end saatlerine sahip bir struct'tır. Comparable (önce güne, ardından başlangıç saatine, sonra başlığa göre), Hashable ve yalnızca başlık ile gün üzerinden Equatable'dır (aynı etkinliğin iki kez girilmesi). Ayrıca CustomStringConvertible olarak day 3 09-11 standup biçimindedir. Scheduler sınıfında, added, duplicate (aynı gün aynı başlık) veya conflicts with <title> (o gün mevcut olan ve saatleri çakışan bir etkinlik: biri diğerinin bitişinden önce başlar) döndüren add(_:) bulunur. agenda() etkinlikleri sıralanmış olarak döndürür ve busiestDay() busiest day 3: 5h veya no events döndürür.
Sağlanan kod, etkinlikleri title,day,start,end satırları olarak okur ve her biri için yanıtı yazdırır; ardından ajandayı (satır başına bir etkinlik) ve en yoğun günü yazdırır.
Kodunuz Event.swift ve Scheduler.swift dosyalarına gider. main.swift, sağlanan girdi/çıktı kodunu içerir ve düzenlenemez.
Kendin dene
// Sağlanan giriş/çıkış kodu: olduğu gibi bırakın
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())
Nesne Yönelimli Programlama bölümündeki tüm dersler
1Sınıflar ve Nesneler
Dosyalarla ÇalışmaSınıfları TanımlamaMetotlar ve selfBaşlatıcılarSınıflar ReferanstırTekrar - Kütüphane Kartı4Kapsülleme
Erişim DenetimiDışarıdan Salt OkunurDurumu KorumaBaşarısız Olabilen BaşlatıcılarTekrar - Banka Hesabı7Polimorfizm ve Generic'ler
PolimorfizmTür DönüşümüGeneric FonksiyonlarGeneric TürlerTekrar - Şekil Hesaplayıcı2Struct Yapıları ve Değer Türleri
Struct YapılarıDeğer SemantiğiDeğiştirici MetotlarStruct mı Class mıTekrar - Envanter Öğesi5Kalıtım
Alt sınıflarMetotları Geçersiz KılmaBaşlatıcılar ve superfinal ve HiyerarşilerTekrar - Çalışan Hiyerarşisi11Proje: Kütüphane Yönetimi
Kitaplar ve ÜyelerKitap Ödünç AlmaKendi başına pratik yap: Swift playground