POP와 OOP의 가장 큰 차이점은 클래스들이 수직적인 구성이나 수평적인 구성으로 이루어져 있다는 것이다. POP(Protocol Oriented Programming) POP는 필요한 부분만 프로토콜로 분리해서 만들 수 있고 다중 프로토콜을 구현할 수 있다. 프로토콜 규칙을 class, struct, enum에 적용할 수 있기 때문에 확장 부분에서도 OOP보다 유연하다. POP는 HAS-A 관계로 구성되어 있어 수평적인 구조로서 묘사할 수 있다. 예를 들어 강아지의 특성을 구현한다면 protocol Eatable{ func eat() } extension Eatable{ func eat(){ print("I can Eat") } } protocol EatAlot{ func eatAlot() } exte..