protocol Ownership {
func updateOwnership(newOwner: String, registerDate: Date)
}
protocol Vehicle {
func movingVehicle(hour: Int)
}
class Car {
var owner: String
var registerDate: Date
var serialNo: String
var license: String
var producer: String
var speed: Int
var hour: Int
var weight: Double
var distance: Int {
get {
return speed * hour
}
set {
hour = distance / speed
}
}
init(owner: String, registerDate: Date, serialNo: String, license: String, producer: String, speed: Int, hour: Int, weight: Double) {
self.owner = owner
self.registerDate = registerDate
self.serialNo = serialNo
self.license = license
self.producer = producer
self.speed = speed
self.hour = hour
self.weight = weight
}
}
extension Car: Ownership, Vehicle {
func updateOwnership(newOwner: String, registerDate: Date) {
owner = newOwner
self.registerDate = registerDate
}
func movingVehicle(hour: Int) {
self.hour += hour
}
}
let myCar = Car(owner: "Tom", registerDate: Date(), serialNo: "102008930", license: "BJ0515G", producer: "BMW", speed: 150, hour: 0, weight: 3.5)
myCar.movingVehicle(hour: 800)
myCar.updateOwnership(newOwner: "Sam", registerDate: Date(timeIntervalSinceNow: 10000))
myCar.distance