# protocol oriented programming
프로토콜지향 프로그래밍(POP)
프로토콜 지향 프로그래밍(POP) 애플은 스위프트 2.0을 발표하며 '스위프트는 프로토콜 지향 언어다' 라고 발표했다. 그렇다면 이 프로토콜 지향 프로그래밍(Protocol-Oriented Programming, POP)이라는 개념은 무엇일까? POP? POP는 스위프트의 프로토콜 중심 설계에 초점을 맞춘다. 대부분 객체지향 프로그래밍 패러다임에 기반을 둔 언어는 클래스의 상속을 통해 타입에 공통된 기능을 구현한다. 하지만 스위프트는 상속이 불가한 구조체로 많은 타입들을 구현하고 있다. 이게 가능한 이유가 바로 프로토콜과 익스텐션의 활용이다. 프로토콜과 익스텐션 프로토콜은 채택한 타입에 원하는 기능을 강제로 구현해야 하는 요구사항을 정의하는 청사진이라고 했다. 익스텐션은 기존의 타입의 기능을 확장한다. 이 두가지를 결합하면 코드중복을 피하면서 타입에 원하는 기능을 제공할 수 있는 강력한 기능을 발휘할 수 있다. 이를 프로토콜의 초기구현이라고 한다.

WWDC 2015 Protocol Oriented Programming in Swift
Before introducing protocol oriented progrmming, Dave introduces advantage of Class Encapsulation Access Control Abstraction NameSpace Name Space Expressive Syntax Extensibility But Crusty(person who does not like Class)says it classes work can be replaced with struct and enum and saying 3 uncomfortable things of Class. Class shares data automatic, So from other sub class the change of super class could not be noticed and hard to know when the data has changed. Cla

[Swift]프로그래밍 패러다임이란? #3 프로토콜 지향 프로그래밍
도입부 애플은 2015년 WWDC에서 Swift 2.0을 출시하고, 이를 프로토콜 지향 프로그래밍 언어(Protocol-Oriented Language)라고 소개했습니다. 하지만 기존의 객체 지향 언어는 많이 들어봤어도, 새로운 패러다임인 프로토콜 지향 언어는 생소할거라 생각합니다. 이 패러다임을 이해하기 위해서는 먼저, 프로토콜에 대한 이해가 필요합니다. Protocol이란? 애플 공식 문서 Swift Language Guide에서 프로토콜을 아래와 같이 설명하고 있습니다. > A protocol defines a blueprint of methods, properties, and other requirements that suit a particular task or piece of functionality. **프로토콜은

Extension, Protocol, Generic
Extension과 Protocol은 Swift에서 자주 사용되는 기능이다. 값에 접근이 불가함에도 Extension으로 추가 기능을 구현할 수 있고, Protocol의 경우 POP라는 개념으로 Apple에서 밀어주는? 개념이다. Generic의 경우 코드 중복을 줄일 수 있는 좋은 기능이다. 잘 다뤄둔다면 중급(?) 이상의 개발자가 되는데 큰 도움을 줄 것이다.() 그럼 시작해보자! Extension class, struct, enum 확장 가능 원본 소스에 접근할 수 없어도 사용가능 Objective-C의 category와 유사한 기능 접근제어 가능 가능한 것들 computed property 추가 method 추가 initializer 추가 designated intializer, deinitializer 추가 불가 새로운 initializer, convenience initializer 추가 가능 -

WWDC 2015 Protocol Oriented Programming
WWDC 2015 Protocol Oriented Programming JAVA를 배우면서 객체지향에 대해서 배우고 또 그렇게 프로그래밍 하다보니 예전에 배운대로 OOP를 규칙으로 개발을 하게된다. 그치만 Swift는 Protocol Oriented Prograiming으로 객체지향 처럼 만들면 안 되겠다는 생각을했고, WWDC 2015를 복습하기위해 남겨놓는다. 영상에 나온 코드들을 한번에 이해하기는 힘들지만, 샘플 예제 코드를 통해 숙지하도록 노력해야겠다. 생각날 때 마다, 실력이 늘 때 마다 보기위해 기록해둔다.

TIL - 2021.05.20 (Thu)
야곰캠프 방학 중 TIL Notion -> Velog 이전하면서 복습하기 오늘의 활동 학습 POP(Protocol Oriented Programming) 상속이 가지는 문제점? 단점은? 반드시 필요하지 않아도 되는 기능을 가질 수 있다 상위 클래스를 변경하면 하위 클래스가 의도치 않게 전부 변경된다. 다중 상속이 불가능하다 struct, enum의 경우 상속이 불가 POP(Protocol Oriented Programming) 프로토콜의 장점 상속을 이용한 클래스 중심의 프로그래밍은 참조 추적에 비용이 발생한다 -> 값 타입의 구조체를 적극적으로 이용 가능, 비용 절약 기능의 모듈화 => 클래스가 상속할 수 있어도 다중 상속을 지원하는 언어는 많지 않음 class, struct, enum 에 적용할 수 있기 때문에 확장 부분에서도 OOP에 비해 더 유연하다 수직