- class라고 부르는 데이터 모델의 청사진을 사용해 코드를 작성
javascript 객체 지향 패턴으로 작성은 가능하지만 객체 지향 언어는 아님
- 프로그램의 설계 철학
- oop의 모든 것은 객체로 그룹화 된다.
-> 이 객체는 한번 생성하면 메모리 상에서 반환되기 전까지 객체 내의 모든 것이 유지된다.- oop의 4가지 주요 개념을 통해 "재사용성"을 얻을 수 있다.
- 캡슐화(encapsulation)
- 상속(inheritance)
- 추상화(abstraction)
- 다형성(polymorphism)
객체 지향 프로그래밍의 4가지 특징에 대해 알아보자.
- 데이터와 기능을 하나의 단위로 묶는 것
- 은닉(hiding): 구현은 숨기고, 동작은 노출시킨다
- 느슨한 결합(loose coupling)에 유리하다.
-> 언제든 구현을 수정할 수 있다.
코드가 상징하는 실제 모습과 닮게 코드를 모아 결합하는 것
실제로 노출되는 부분은 단순하게 만든다
불필요한 세부 사항들은 제거하고 가장 본질적이고 공통적인 부분만을 추출하여 표현하는 것
캡슐화는 코드나 데이터의 은닉!
추상화는 클래스를 사용하는 사람이 불필요한 메서드 등을 노출시키지 않고 단순한 이름으로 정의!
부모 클래스의 특징을 자식 클래스가 물려받는 것
보다 자세하게는 "기본 클래스(base class)"의 특징을 "파생 클래스(derived class)"가 상속받는다. 로 표현하는 것이 적합하다고 한다.
다양한 형태를 가질 수 있다. 즉, 어떠한 객체의 속성이나 기능이 상황에 따라 여러가지 형태로 가질 수 있는 성질

위 4가지 특징으로 객체 지향 프로그래밍은 코드를 재사용하기 쉽다 (상속, 캡슐화, 다형성으로 인해 재사용할 수 있다.)