Skip to content

Latest commit

ย 

History

History
58 lines (41 loc) ยท 1.54 KB

Protocol.md

File metadata and controls

58 lines (41 loc) ยท 1.54 KB

Protocol

ํ”„๋กœํ† ์ฝœ์€ ์ฝ”๋“œ๋ฅผ ์„ค๊ณ„ํ•˜๊ณ  ์„ค๊ณ„ํ•œ๋Œ€๋กœ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.

  • ์ง€์ผœ์•ผํ•˜๋Š” ๊ทœ์•ฝ
  • ex) ์ž๋™์ฐจ๊ฐ€ ์ง€ํ‚ค๋Š” ํ”„๋กœํ† ์ฝœ โ†’ ๋ฐ”ํ€ด๊ฐ€ ์žˆ๋‹ค, ์ฐฝ๋ฌธ์ด ์žˆ๋‹ค.
    • ๊ทธ๋ ‡๊ธฐ์— ์ฐจ๋ฅผ ๋งŒ๋“ค ๋•Œ๋Š” ๋ธŒ๋ ˆ์ดํฌ์™€ ์ฐฝ๋ฌธ์—ด๊ธฐ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€
protocol Driveable {
        var speed: Int { get set }
        func speedDown() -> () 
}

์šฐ๋ฆฌ๊ฐ€ ๋งŒ๋“  Driveable ํ”„๋กœํ† ์ฝœ์„ ์ฒดํƒํ•˜๋Š” class๋ฅผ ๋งŒ๋“ค์–ด๋ณด์ž

class Kia: Driveable {

}

์œ„ ์ฝ”๋“œ๋Š” ์˜ค๋ฅ˜๊ฐ€ ๋‚  ๊ฒƒ์ด๋‹ค.

๊ทธ ์ด์œ ๋Š” Kia๋ผ๋Š” ํด๋ž˜์Šค๋Š” Driveable์ด๋ผ๋Š” ํ”„๋กœํ† ์ฝœ์„ ์ฑ„ํƒํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ํ”„๋กœํ† ์ฝœ์—์„œ ์ง€์ •ํ•ด์ค€ ํ”„๋กœํผํ‹ฐ์™€ ๋ฉ”์†Œ๋“œ๋ฅผ ๋ฌด์กฐ๊ฑด์ ์œผ๋กœ ๊ฐ€์ ธ์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

class Kia: Driveable {
        var speed: Int
    init(speed: Int) {
        self.speed = speed
    }

    func speedDown(with downSpeed: Int) {
        speed -= downSpeed
    }

}

์ด๋ ‡๊ฒŒ ํ•œ๋‹ค๋ฉด ์˜ค๋ฅ˜๋Š” ์‚ฌ๋ผ์ง€๊ฒŒ ๋œ๋‹ค.

์ด์ฒ˜๋Ÿผ ํ”„๋กœํ† ์ฝœ์„ ๋งŒ๋“ค์–ด์„œ ํ•ด๋‹น ํ”„๋กœํ† ์ฝœ์„ ์ฑ„ํƒํ•˜๋Š” ๊ฒƒ๋“ค์ด ๋ฌด์Šจ ์—ญํ• ์„ ํ•˜๋Š”์ง€, ์–ด๋–ค ๊ฒƒ๋“ค์„ ๊ฐ–๊ณ ์žˆ๋Š”์ง€๋ฅผ ๋ฏธ๋ฆฌ ๊ณ„ํšํ•˜๊ณ  ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค.

๋˜ํ•œ ํ•ด๋‹น ํ”„๋กœํ† ์ฝœ์„ ์ฑ„ํƒํ•˜๋Š” ๋ฐฐ์—ด๋กœ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

var cars: [Driveable] = [Kia(speed: 3), Hyundai(speed: 3)]

์ด๋ ‡๊ฒŒ ๋œ๋‹ค๋ฉด ํ•ด๋‹น ๋ฐฐ์—ด์— ์š”์†Œ๋“ค์ด ์–ด๋–ค ์—ญํ• ์„ ํ•˜๋Š”์ง€ ์ด๋ฏธ ์•Œ๊ณ  ์žˆ์–ด ์—ฌ๋Ÿฌ๊ฐ€์ง€๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

for car in cars {
    car.speedDown(with: 3)
}