Tekrar - Çalışan Hiyerarşisi
Coddy'nin Swift Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 26 / 57.
Görev
ZorBir personel dizini oluşturun. Person, name değerini saklar ve person döndüren role() ile role() temel alınarak oluşturulan Ada (person) döndüren card() metoduna sahiptir. Staff: Person, kendi başlatıcısında super.init çağrısından önce ayarlanan department özelliğini ekler ve role() metodunu staff in <department> döndürecek şekilde geçersiz kılar. Manager: Staff, bir Staff dizisi olan ve başlangıçta boş bulunan team özelliğini, hire(_:) metodunu ve Staff rolünün ardından , 2 reports döndürecek şekilde geçersiz kıldığı role() metodunu ekler. Contractor: Person final sınıfıdır, days özelliğini ekler ve role() metodunu contractor for 30 days döndürecek şekilde geçersiz kılar.
Sağlanan kod satırları staff,name,dept, manager,name,dept, contractor,name,days ve hire,manager,staff biçiminde okur (yönetici, adına göre bir personel çalışanı işe alır). Oluşturulma sıralarına göre her kişi için card() çıktısını yazdırır.
Kodunuz Person.swift, Staff.swift, Manager.swift ve Contractor.swift dosyalarına yazılmalıdır. main.swift, sağlanan giriş/çıkış kodunu içerir ve düzenlenemez.
Kendin dene
// Sağlanan girdi/çıktı kodu: olduğu gibi bırakın
var input: [String] = []
while let line = readLine() { input.append(line) }
var people: [Person] = []
for line in input {
let p = line.split(separator: ",").map(String.init)
switch p[0] {
case "staff": people.append(Staff(name: p[1], department: p[2]))
case "manager": people.append(Manager(name: p[1], department: p[2]))
case "contractor": people.append(Contractor(name: p[1], days: Int(p[2])!))
default:
let boss = people.first { $0.name == p[1] } as? Manager
let member = people.first { $0.name == p[2] } as? Staff
if let boss = boss, let member = member { boss.hire(member) }
}
}
for person in people { print(person.card()) }
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