Menu
Coddy logo textTech

Rückblick – Mitarbeiterhierarchie

Teil des Abschnitts Objektorientierte Programmierung der Swift-Journey von Coddy. Lektion 26 von 57.

challenge icon

Aufgabe

Schwer

Erstelle ein Mitarbeiterverzeichnis. Person speichert name und hat role(), das person zurückgibt, sowie card(), das Ada (person) zurückgibt und aus role() erstellt wird. Staff: Person fügt department hinzu, das in seinem eigenen Initialisierer vor super.init gesetzt wird, und überschreibt role(), sodass staff in <department> zurückgegeben wird. Manager: Staff fügt team hinzu (ein Array aus Staff, anfangs leer), eine Methode hire(_:) und überschreibt role(), sodass die Staff-Rolle gefolgt von , 2 reports zurückgegeben wird. Contractor: Person ist final, fügt days hinzu und überschreibt role(), sodass contractor for 30 days zurückgegeben wird.

Der bereitgestellte Code liest Zeilen im Format staff,name,dept, manager,name,dept, contractor,name,days und hire,manager,staff (der Manager stellt ein Teammitglied anhand seines Namens ein). Er gibt für jede Person in der Reihenfolge ihrer Erstellung card() aus.

Dein Code gehört in Person.swift, Staff.swift, Manager.swift und Contractor.swift. main.swift enthält den bereitgestellten Eingabe-/Ausgabecode und darf nicht bearbeitet werden.

Probier es selbst

// Gelieferter Ein-/Ausgabecode: belasse ihn wie er ist
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()) }

Alle Lektionen in Objektorientierte Programmierung

Übe selbstständig: Swift-Playground