Protocol Oriented Programming과 Object Oriented Programming의 차이점을 설명하시오.

Object Oriented Programming
- 객체지향 프로그래밍은 쉽게 말하면 클래스의 특징을 나열한 프로그래밍이라고 생각하면 된다.
- 객체지향 프로그래밍은
1-1) 하나의 클래스만 상속할 수 있으며 (여러 클래스를 상속할 수 없음)
1-2) 필요없는 "프로퍼티"나 "메소드"가 자동으로 상속되고
1-3) 클래스에서만 상속 가능하다. (struct에서는 사용 불가능)
Protocol Oriented Programming
- 객체 지향 프로그래밍의 단점을 보완하기 위해서 등장한 프로그래밍 패러다임.
- 프로토콜 지향 프로그래밍은
2-1) 한 객체가 여러 개의 프로토콜을 채택할 수 있다.
2-2) struct나 enum에도 프로토콜을 채택할 수 있다.
2-3) 필요한 곳에서만 프로토콜을 채택해 구현할 수 있음 (class는 상위 클래스의 프로퍼티나 메소드가 자동으로 상속되는 문제가 존재함)