프로토콜지향 프로그래밍 (POP)

임주희·2022년 9월 22일
0

스위프트2, 세계 최초의 프로토콜지향 프로그래밍 언어
Protocol Oriented Programming

프로토콜

프로토콜은 프로토콜을 따르는 타입에 명시된 이름과 타입을 갖는 특정 프로퍼티, 메소드를 제공할 것을 요구할 수 있다. 프로토콜은 한 개 이상의 프로토콜로부터 요구 사항을 상속받을 수 있으며, 요구 사항을 추가할 수도 있다. 때로는 선택 가능한 요구사항을 정의할 수 있다.

프로토콜 컴포지션

프로토콜 컴포지션은 타입이 여러 프로토클을 채용할 수 있게 해준다.
// 스위프트나 다른 단일 상속 언어에서 클래스는 한 개의 슈퍼클래스만 상속 할 수 있다.

프로토콜 지향 프로그래밍에서는 슈퍼클래스 대신 프로토콜을 사용하며, 이는 모든 요구 사항을 단일 프로토콜이나 단일 클래스에서 상속하지 않고 요구 사항을 여러 작은 컴포넌트로 나눌 수 있게 해준다.

→ 각 프로토콜은 특정 타입에서 필요한 구체적인 요구 사항만을 포함하며, 각 타입에서 필요한 프로토콜만 골라 채택할 수 있다.


(각 상자는 프로토콜을 의미)

센서 프로토콜을 상속받은 온습도,무선,밝기감지,움직임 센서 프로토콜과
2차원 움직임을 상속받은 3차원 움직임 프로토콜이 있다.

Q. 여기에서 광량에 따라 온습도를 조절하여 불을 키는 로봇을 만들고 싶다. 
	불을 켜기 위해서는 위,아래 움직임이 필요하다.

→ 로봇은 온습도 센서, 밝기감지, 3차원 움직임 프로토콜을 채택하면 된다.


[출처] 스위프트4 프로토콜지향 프로그래밍 3/e, 존 호프만 저

0개의 댓글