프로그래밍 정리본 - OOP/POP

기술면접을 대비한 프로그래밍편 OOP/POP
오니's avatar
Jun 16, 2024
프로그래밍 정리본 - OOP/POP

객체지향 프로그래밍 OOP

Object Oriented Programming
  • 수직적 방향 설계
  • override를 통한 다형성에 초점
  • 캡슐화를 통한 보안성

용어 정리

  • 캡슐화: 연관있는 함수와 변수를 묶는 방법
  • 은닉화: 외부에서 객체 속성에 접근 못하도록 막는 법

SOLID

  • Single responsibility principle
    • 1개의 객체에는 1개의 책임만
  • Open-Closed principle
    • 확장에는 열려있으나 변경은 폐쇄적이여야 한다.
  • Liskov substitution principle
    • 정확성을 유지하면서 하위 타입의 인스턴스로 바꿀 수 있어야 한다.
  • Interface segregation principle
    • 특정 클라이언트를 위한 인터페이스 여러개가 범용 인터페이스 하나보다 낫다.
    • 인터페이스를 크게 만들지말고 분리해서 사용할 것
  • Dependency inversion principle
    • 의존 역전 원칙
    • 추상화에 의존해야지 구체화에 의존하면 안된다.
    • 하위 모듈에 의존하지 않고 인터페이스에 의존해야 한다.

OOP의 단점

  1. 암시적 공유: 의도치 않더라도 부모의 모든 것을 공유 받는다.
  1. 단일 부모
  1. 참조타입만 가능

Swift의 OOP

  • private은 상속되지 않는다. → Static으로 작동한다.

프로토콜 지향 프로그래밍, POP

Protocol-Oriented Programming
  • 수평적 방향 설계
    • 객체간 의존성이 낮다
  • 값 타입에도 적용이 가능하다.

Swift의 POP

  • let은 protocol에서 설정이 불가능하다.
  • @objc optional func으로 선택적으로 구현이 가능하게끔도 가능하다.
Share article

오니의 개발 블로그