Menu
Coddy logo textTech

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.

challenge icon

Görev

Zor

Bir 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

Kendi başına pratik yap: Swift playground