Menu
Coddy logo textTech

Riepilogo - Gerarchia dei dipendenti

Fa parte della sezione Programmazione orientata agli oggetti del percorso Swift di Coddy. Lezione 26 di 57.

challenge icon

Sfida

Difficile

Crea un elenco del personale. Person memorizza name e ha role(), che restituisce person, e card(), che restituisce Ada (person), costruito a partire da role(). Staff: Person aggiunge department, impostato nel proprio inizializzatore prima di super.init, e sovrascrive role() per restituire staff in <department>. Manager: Staff aggiunge team (un array di Staff, inizialmente vuoto), un metodo hire(_:) e sovrascrive role() per restituire il ruolo di Staff seguito da , 2 reports. Contractor: Person è final, aggiunge days e sovrascrive role() per restituire contractor for 30 days.

Il codice fornito legge righe staff,name,dept, manager,name,dept, contractor,name,days e hire,manager,staff (il manager assume un membro del personale usando il nome). Stampa card() per ogni persona, nell’ordine in cui è stata creata.

Il tuo codice va inserito in Person.swift, Staff.swift, Manager.swift e Contractor.swift. main.swift contiene il codice di input/output fornito e non può essere modificato.

Provalo tu

// Codice di input/output fornito: lascialo così com'è
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()) }

Tutte le lezioni di Programmazione orientata agli oggetti

Esercitati da solo: Playground Swift