#객체지향프로그래밍 ( OOP: object-oriented programming)
#자바스크립트는 객체지향언어는 아니지만, 객체지향 패턴으로 작성할수있다.
#OOP는 객체로 그룹화된다.
객체내에는 데이터와 기능이 함께 있다 라는 원칙에 따라 메서드와 속성이 존재한다.
OOP의 4가지 주요개념을 통해 재사용성을 얻을수 있다.
<객체지향 프로그래밍의 기본 4가지 개념>
- 캡슐화 Encapsulation
- 추상화 Abstraction
- 상속 Inheritance
- 다형성 Polymorphism
#캡슐화 Encapsulation
-데이터(속성)와 기능(메서드)을 하나의 단위로 묶는것 (느슨한결합)
-느슨한결합: 코드 실행 순서에 따라 절차적으로 코드를 작성하는 것이 아니라, 코드가 상징하는 실제 모습과 닮게 코드를 모아 결합하는 것을 의미한다.
-코드만 보고도 인스턴스 객체의 기능을 상상할수 있게 작성하는 것이 느슨한 결합을 추구하는 코드 작성법이다.
-은닉화: 내부데이터나 내부 구현이 외부로 노출되지 않도록 만드는 것,외부의 영향을 받지않게 보호받는것.
-코드가 복잡하지 않게 만들고, 재사용성을 높인다!
#추상화 Abstraction
- 내부 구현은 아주 복잡한데, 실제로 노출되는 부분은 단순하게 만든다는 개념이다. (ex. 전화기)
-인터페이스의 단순화를 의미한다!
-추상화를 통해 인터페이스가 단순해진다.
-코드가 복잡하지 않게 만들고, 단순화된 사용으로 변화에 대한 영향을 최소화한다.!!
-캡슐화의 은닉화랑 비교하면
은닉화는 코드나 데이터의 은닉에 포커스가 맞춰져있다면,
추상화는 클래스를 사용하는 사람이 필요하지 않은 메서드 등을 노출시키지 않고 단순한 이름으로 정의하는 것에 포커스가 맞춰져 있다.
#상속 Inheritance
-부모 클래스의 특징을 자식클래스가 물려받는것
-객체지향의 가장 큰 장점.
-기본클래스(base class)의 특징을 파생클래스(derived class)가 상속받는다
ex. 사람과학생
학생의 본질은 사람이므로, 상속을 이용하여 학생클래스는 사람클래스를 상속받을수있다.
학생은 추가적으로 학습내용, 공부하다 와 같은 속성/메서드를 추가한다.
#다형성 Polymorphism
-다양한 형태
-같은 이름을 가진 메서드라도 조금씩 다르게 작동한다.
-동일한 메서드에 대해 조건문 대신 객체의 특성에 맞게 달리 작성하는 것이 가능해진다!
-라면끓이는 똑같은 메소드여도 다양한 라면을 끓일수있다.
#typeScript는 보다 객체 지향적으로 디자인되었다.
#은닉화의 한계 => private키워드
클래스내부에서만 쓰이는 속성 및 메서드를 구분시키기 위해 private이라는 키워드를 제공한다.
자바스크립트에서는 널리 쓰이지 않는다. (ES2019부터 #이라는 키워드가 도입되었습니다.)
(자바스크립트에서는 은닉화를 돕기 위해서 일반적으로 클로저 모듈 패턴을 사용한다.)
#추상화 기능의 부재 => interface키워드
Java나 TypeScript 언어는 언어의 주요 기능으로 interface를 구현해놓았습니다.
그러나 이러한 부분은 JavaScript에는 존재하지 않는 기능입니다.
'부트캠프교육중 > JavaScript' 카테고리의 다른 글
클래스와 인스턴스2 (0) | 2023.01.13 |
---|---|
프로토타입 (Prototype) (0) | 2023.01.13 |
클래스와 인스턴스 1 (0) | 2023.01.13 |
메서드 호출 (0) | 2023.01.13 |
[JavaScript] default parameter (0) | 2023.01.04 |