Rekap: Hierarki Karyawan
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan Swift di Coddy. Pelajaran 26 dari 57.
Tantangan
SulitBuat direktori staf. Person menyimpan name dan memiliki role() yang mengembalikan person, serta card() yang mengembalikan Ada (person), yang dibuat dari role(). Staff: Person menambahkan department, yang diatur dalam initializer-nya sendiri sebelum super.init, dan meng-override role() agar mengembalikan staff in <department>. Manager: Staff menambahkan team (sebuah array berisi Staff, yang awalnya kosong), sebuah method hire(_:), dan meng-override role() agar mengembalikan role Staff yang diikuti , 2 reports. Contractor: Person bersifat final, menambahkan days, dan meng-override role() agar mengembalikan contractor for 30 days.
Kode yang disediakan membaca baris staff,name,dept, manager,name,dept, contractor,name,days, dan hire,manager,staff (manager merekrut anggota staf berdasarkan nama). Kode mencetak card() untuk setiap orang sesuai urutan pembuatannya.
Tulis kodemu di Person.swift, Staff.swift, Manager.swift, dan Contractor.swift. main.swift berisi kode input/output yang disediakan dan tidak boleh diedit.
Coba sendiri
// Kode input/output yang disediakan: biarkan apa adanya
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()) }
Semua pelajaran di Pemrograman Berorientasi Objek
1Class dan Object
Bekerja dengan FileMendefinisikan ClassMethod dan selfInitializerClass adalah ReferensiUlasan: Kartu Perpustakaan4Enkapsulasi
Kontrol AksesHanya Bisa Dibaca dari LuarMelindungi StateInitializer yang Bisa GagalRangkuman: Rekening Bank7Polimorfisme dan Generik
PolimorfismeKonversi TipeFungsi GenerikTipe GenerikRangkuman: Kalkulator Bentuk2Struct dan Tipe Nilai
StructSemantik NilaiMethod yang Mengubah NilaiStruct atau classRangkuman, Item Inventaris11Proyek: Manajemen Perpustakaan
Buku dan AnggotaPeminjaman BukuLatihan sendiri: Playground Swift