OOP
- 객체 지향 프로그래밍 (Object-oriented programming)
- 컴퓨터 프로그래밍의 패러다임 중 하나
- 컴퓨터 프로그램을 명령어의 목록으로 보는 시각이 아닌 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것이다. 따라서 OOP의 모든 것은 객체로 그룹화 됨.
Encapsulation(캡슐화)
- 데이터(속성)와 기능(메서드)을 하나의 단위(하나의 객체)로 묶는 것
- 은닉화: 구현은 숨기고, 동작은 노출시킴 즉, 내부 데이터나 내부 구현이 외부로 노출되지 않도록 만드는 것.
- 느슨한 결합(Loose Coupling)에 유리
- 언제든 구현을 수정할 수 있음
- 코드 실행 순서에 따라 절차적으로 코드를 작성하는 것이 아니라, 코드가 상징하는 실제 모습과 닮게 코드를 모아 결합하는 것을 의미한다. - 캡술화는 코드가 복잡하지 않게 만들고, 재사용성을 높인다.
Inheritance(상속)
- 부모 클래스의 특징을 자식 클래스가 물려받는 것을 말함.
- 부모 / 자식이라는 키워드 보다 전문성 있는 키워드를 사용하자
- "기본 클래스(base class)의 특징을 파생 클래스(derived class)가 상속받는다" 라고 표현하는 것이 적합하다.
Abstraction(추상화)
- 내부 구현은 아주 복잡한데, 실제로 노출되는 부분은 단순하게 만든다는 개념
- 추상화와 캡슐화는 다른 것!
- 캡슐화가 코드나 데이터의 은닉에 포커스가 있다면,
추상화는 클래스 사용자가 필요하지 않는 메서드 등을 노출시키지 않고, 단순한 이름으로 정의한다는 것에 포커스.
Polymorphism(다형성)
- Poly는 많은, morph는 형태라는 뜻을 가진다. 따라서 다양한 형태를 가질 수 있다는 의미이다.
- 객체 역시 똑같은 메서드라 하여도, 다른 방식으로 구현될 수 있다.
- 만약 다형성을 제공하지 않는다면, 기본 클래스에 종류별로 분기를 시켜 하나하나 다르게 만들어야 할 것이다.
-------------------------------------------------------------------------------
OOP 정리
- 캡슐화는 코드가 복잡하지 않게 만들고, 재사용성을 높인다.
- 추상화는 마찬가지로 코드가 복잡하지 않게 만들고, 단순화된 사용으로 변화에 대한 영향을 최소화한다.
- 상속 역시 불필요한 코드를 줄여 재사용성을 높인다.
- 다형성으로 인해 동일한 메서드에 대해 if/else if와 같은 조건문 대신 객체의 특성에 맞게 달리 작성하는 것이 가능해진다.
'프론트엔드 > 자바스크립트' 카테고리의 다른 글
js 소수점처리 .tofixed() (0) | 2022.08.15 |
---|---|
프로토타입체인 (0) | 2022.07.25 |
클래스와 인스턴스 (0) | 2022.07.22 |
Typeof (0) | 2022.06.24 |
forEach 반복문 같은의미 (0) | 2022.05.13 |