swift
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) {
//
// }
// 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.
// 2)
// Create a small app that takes user input and performs a useful
calculation with that user input
// - Using techniques we learned in class, make sure that absolutely no
input crashes the app.
// - Use layout constraints to make sure the app looks good in
portraint and landscape mode, as well as on small and large devices.
- // - Use MVC
- // - Bonus: Write unit tests for your model to make sure no input can
crash the app.
// 3) You created a bookshelf.
// A) How could you modify Shelve with a technique discussed in class so
that you can create Shelve instances that contain
- // Tools, Dishes or any other kind of object?
- // B) Create a function that takes in two shelves of the same type and
swaps their items
struct Book { let title: String
}
struct Shelve { var top: Book
var center: Book
var bottom: Book }
print("\(name) wrote a report")
6 years ago 12
Answer(0)