객체지향 프로그래밍 OOP
Object Oriented Programming
- 수직적 방향 설계
- override를 통한 다형성에 초점
- 캡슐화를 통한 보안성
용어 정리
- 캡슐화: 연관있는 함수와 변수를 묶는 방법
- 은닉화: 외부에서 객체 속성에 접근 못하도록 막는 법
SOLID
- Single responsibility principle
- Open-Closed principle
- 확장에는 열려있으나 변경은 폐쇄적이여야 한다.
- Liskov substitution principle
- 정확성을 유지하면서 하위 타입의 인스턴스로 바꿀 수 있어야 한다.
- Interface segregation principle
- 특정 클라이언트를 위한 인터페이스 여러개가 범용 인터페이스 하나보다 낫다.
- 인터페이스를 크게 만들지말고 분리해서 사용할 것
- Dependency inversion principle
- 의존 역전 원칙
- 추상화에 의존해야지 구체화에 의존하면 안된다.
- 하위 모듈에 의존하지 않고 인터페이스에 의존해야 한다.
OOP의 단점
- 암시적 공유: 의도치 않더라도 부모의 모든 것을 공유 받는다.
- 단일 부모
- 참조타입만 가능
Swift의 OOP
- private은 상속되지 않는다. →
Static
으로 작동한다.