In: Computer Science
Swift code
import Foundation
protocol TaksPerformer {
func doAThing()
}
class Employee: TaksPerformer {
let name: String
var boss: Boss?
init(name: String) {
self.name = name
}
func doAThing() {
print("\(name) is doing a thing")
}
}
class Boss {
var employee: Employee
let name: String
init(name: String, employee: Employee) {
self.name = name
self.employee = employee
employee.boss = self
}
func actLikeABoss() {
employee.doAThing()
}
}
// 1)
// A) What is wrong with the current implementation of Boss and Employee, why is it wrong, and how can we demonstrate that there is an issue?
//
// B) What pattern discussed in class does the Boss - Employee relationship remind you of? Give an example of the discussed pattern.
//
// C) Create a Person class that has the following property:
// let name: String
// Now have Employee and Boss inherit from Person
//
// D) You realize that there are speciffic tasks you would like an employee to perform. All tasks look like this:
// func makeCoffe(_ name: String) {
// print("\(name) made coffe")
// }
//
// func writeReport(_ name: String) {
// print("\(name) wrote a report")
// }
// Modify Boss, Employee and TaskPerformer in a way that a Boss can be instantiated with the following constructor:
// Boss(name: "Bossman", employee: anEmployee, tasks: [makeCoffe, writeReport])
// The employee instance should perform the tasks.