编辑代码

//20190401031杨小可
//练习5
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