مراجعة - التسلسل الهرمي للموظفين
جزء من قسم البرمجة كائنية التوجه في رحلة Swift على Coddy. الدرس 26 من 57.
التحدي
صعبأنشئ دليلًا للموظفين. تخزّن Person قيمة name وتحتوي على role() التي تُرجع person، وعلى card() التي تُرجع Ada (person)، والمبنية باستخدام role(). تضيف Staff: Person قيمة department، التي يتم تعيينها في المُهيّئ الخاص بها قبل super.init، وتتجاوز role() لإرجاع staff in <department>. تضيف Manager: Staff قيمة team (وهي مصفوفة من Staff، وفارغة في البداية)، وطريقة hire(_:)، وتتجاوز role() لإرجاع دور Staff متبوعًا بـ , 2 reports. إن Contractor: Person فئة final، وتضيف days، وتتجاوز role() لإرجاع contractor for 30 days.
يقرأ الكود المزوّد الأسطر staff,name,dept وmanager,name,dept وcontractor,name,days وhire,manager,staff (حيث يعيّن المدير موظفًا باستخدام اسمه). ويطبع card() لكل شخص بالترتيب الذي أُنشئوا به.
ضع الكود الخاص بك في Person.swift وStaff.swift وManager.swift وContractor.swift. يحتوي main.swift على كود الإدخال/الإخراج المزوّد، ولا يمكن تعديله.
جرّب بنفسك
// كود الإدخال/الإخراج المُزوَّد: اتركه كما هو
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()) }
جميع دروس البرمجة كائنية التوجه
1الأصناف والكائنات
العمل مع الملفاتتعريف الأصنافالأساليب وselfالمُهيِّئاتالأصناف هي مراجعمراجعة - بطاقة المكتبة4التغليف
التحكم في الوصولللقراءة فقط من الخارجحماية الحالةالمهيئات القابلة للفشلمراجعة - الحساب البنكي7تعدد الأشكال والأنواع العامة
تعدد الأشكالتحويل الأنواعالدوال العامةالأنواع العامةمراجعة - حاسبة الأشكال5الوراثة
الفئات الفرعيةتجاوز الأساليبالتهيئة وsuperfinal والتسلسلات الهرميةمراجعة - التسلسل الهرمي للموظفينتدرّب بنفسك: Playground لـ Swift