Swift 프로토콜 지향 프로그래밍

class Hotsix {
    var volume : Double!
    var caffeine : Double!
    var temperature : Double!
    var canSize : Double!
    var description : String!
    
    init(volume : Double, caffeine : Double, temperature : Double) {
        self.volume = volume
        self.caffeine = caffeine
        self.temperature = temperature
        self.description = "Jolt Energy Drink"
        self.canSize = 24
    }
    
    func drinking(amount : Double){
        volume = amount - 1
    }
    
    func temperatureChange(change : Double){
        temperature = change + 1
    }
}
class Cooler {
    var temprature : Double!
    var cansOfHotSix = [Hotsix]()
    var maxCans : Int!
    
    init(temprature : Double, maxCans : Int) {
        self.temprature = temprature
        self.maxCans = maxCans
    }
    
    func addHotSix(hotSix : Hotsix)-> Bool{
        if cansOfHotSix.count < maxCans {
            cansOfHotSix.append(hotSix)
            return true
        }else {
            return false
        }
    }
    
    func removeHoxSix() -> Hotsix? {
        if cansOfHotSix.count > 0 {
            return cansOfHotSix.removeFirst()
        }else {
            return nil
        }
    }
}
var cooler = Cooler(temprature: 38.0, maxCans: 12)

for _ in 0...5{
    let can = Hotsix(volume: 23.5, caffeine: 280, temperature: 45)
    let _ = cooler.addHotSix(hotSix: can)
}

let hotSix = cooler.removeHoxSix()
hotSix?.drinking(amount: 5)
print("HotSix Left in can : \((hotSix?.volume)!)")