2023년 1월 1일
08:00 AM
Buffering ...

최근 글 👑

[Swift-TIL] 프로토콜 - 설계하고 설계대로 만드는 방법 (이론편)

2024. 11. 7. 23:51ㆍIOS/Swift-TIL
SMALL

오늘은 프로토콜에 대하여 알아봤다.

 설계이다보니

설명이 길어질것 같지만,

사실 설명보다 실습이 길어질 것 같다.

 

사실 말로 하는것보단,

직접 설계를 하며

그걸구현하는 걸 위주로 보여주겠다.

그래도 일단은 이론적으로

알고 진행을 해보고자 이론편을 올린다.

 

프로토콜을 찾아보면,

통신규약,규범 이러한

조금 알기 어려운 단어가 나오는데,

실제로는 많은 문장의 맥락에서는

"지켜야하는 규약"으로 많이 쓰인다.

 

이게 너무 어렵다보니

일상에서 한번 찾아보면

자동차가 지키는 프로토콜에 대해

예로 들어볼 수 있겠다.

 

뭐......

바퀴가 있다, 창문이 있다

이런 프로토콜이 있나?

"자동차는 무조건 바퀴가 있어야 하나?"
"자동차는 무조건 창문이 있어야 하나?"

 

이게 고민할 필요가 있는가?

저 두개는... 당연히 있어야한다..

이건 자동차가 무조건

지켜줘야 되는 거다.

 

그렇기 때문에 차를 만들 때는

브레이크와 창문열기 기능을

처음에 고려하면서 만들 수 있다.

 

자동차를 디자인할 때

"요번 브레이크 장치는 이렇게 해야 하지 않나?"

 

먼저 고민을 할 수 있는 이유가

자동차에 무조건 바퀴와 제동장치가

있을 것이기 때문이다.

 

그렇기에 먼저 약속을 해주는 거다.

이 자동차는 이러 이러한 규약을 지킨다..

라고 이야기를 해주면,

"그렇군 바퀴가 있다면
브레이크 기능을 고민해야지"

 

그러니까 바퀴를 만들고

그 바퀴를 다 달고 나서

그것을 보고

"브레이크를 이러이러하게 해야하지 않을까?"

 

이렇게 순서대로 가는것도 가능하지만,

 

"자동차가 바퀴가 있다는 프로토콜을 지킨다면
이런것들도 가능하겠구나~"

 

라는 생각도 가능하다.

 

프로토콜의 생김새는

이렇게 생겼다.

protocol Driveable 이라고 한다면,

var speed: Int { get set }

즉, 만약의 주행이 가능하다고 한다면

무조건 스피드가 있어야 할 거고

속도를 줄이는 함수가 있어야 할 것이다.

 

간단하게 정리해보겠다.

프로토콜은 프로토콜을 알려주는 키워드와

키워드 뒤에 프로토콜의 이름이 오는데,

보통은 어떠한 객체의 설계라면..

무조건 명사로 온다.

 

예를들어,

"학생은 무조건 학년이 있어야지"

이런것이라 한다면,

프로토콜 이름이 명사로 많이 온다.

 

그런데, 이게 만약에

어떠한 행동에 가까워 진다면,

형용사로 오게 된다.

 

자동차로 예를 들면,

"얘는 운전 주행이 가능해야지" 라고 한다면,

그냥 드라이브, 드라이브 에이블

이런식으로 동사에 형용사를 더해서 만들어준다.

 

그리고 나서 프로토콜이 지켜야 할

프로퍼티, 메소드

"이건 무조건 있어야 하는 것이다!"

라고 제약을 걸어주는 거다.

 

당연히 이론적으로만 들었을 때..

이건 이해하기가 어렵다.

 

실습편으로 넘어가자.

728x90