객체 지향 언어 란?
- 단순히 별개의 변수와 함수로 작동하는 것 뿐만 아니라, 데이터의 접근과, 데이터의 처리 과정에 대한 모형을 만들어 내는 방식
- "클래스"라고 부르는 데이터 모델의 틀을 사용해 코드 작성
좋은 어플리케이션을 만들 기 위한 객체 지향 프로그래밍의 주요 개념
OOP Basic Concepts [ 객체 지향 프로그래밍의 주요 개념 ]
- Encapsulation (캡슐화) : 코드가 복잡하지 않게 만들고, 재사용성을 높임
- Inheritance (상속) : 불필요한 코드를 줄여 재사용성을 높임
- Abstraction (추상화) : 코드가 복잡하지 않게 만들고, 단순화된 사용으로 변화에 대한 영향을 최소화
- Polymorphism (다형성) : 동일한 메서드에 대해 if/else if와 같은 조건문 대신 객체의 특성에 맞게 달리 작성하는 것이 가능
Encapsulation(캡슐화)
- 하나의 객체 안에 넣어서 묶는 것
- 코드 실행 순서에 따라 절차적으로 코드를 작성하는 것이 아니라, 코드가 상징하는 실제 모습과 닮게 코드를 모아 결합하는 것을 의미
- " 은닉화 "의 특징 : 은닉화는 내부 데이터나 내부 구현이 외부로 노출되지 않도록 만드는 것
- 객체 내 메서드의 구현만 수정하고, 노출된 메서드를 사용하는 코드 흐름은 바뀌지 않도록 만들 수 있습니다.
Abstraction (추상화)
- 내부 구현은 아주 복잡한데, 실제로 노출되는 부분은 단순하게 만든다는 개념
- 캡슐화가 코드나 데이터의 은닉에 포커스가 맞춰져있다면, 추상화는 클래스의 필요하지 않은 메서드 등을 노출시키지 않고, 단순한 이름으로 정의하는 것에 포커스가 맞춰져 있다.
- 클래스 정의 시, 메서드와 속성만 정의한 것을 인터페이스라고 한다.(캡슐화의 은닉과 다름)
Inheritance (상속)
- 상속은 부모 클래스의 특징을 자식 클래스가 물려받는 것
Polymorphism(다형성)
- Polymorphism이라는 단어의 poly는 "많은", 그리고 morph는 "형태"라는 뜻
- HTMLElement 라는 부모 클래스에 render() 라는 메서드를 만들고, 자식 클래스로 상속을 받게 만듭니다.
똑같이 상속을 받아도 조금씩 다르게 작동하는 것이 핵심 - TextBox는 가로로 긴 네모 상자와 커서가 있는 형태일 것이고, Select 박스는 눌렀을 때 선택지가 나오도록 화면에 그려야 할 것. 이처럼 같은 이름을 가진 메서드라도 조금씩 다르게 작동한다.
'프론트엔드 개발 > Javascript' 카테고리의 다른 글
객체 지향 프로그래밍 - 프로토타입 체인 (0) | 2022.11.18 |
---|---|
객체 지향 프로그래밍 - 프로토타입과 클래스 (0) | 2022.11.18 |
javascript 고차함수 (0) | 2022.11.18 |
javascript 클로저 함수 (0) | 2022.11.10 |
javascript 변수 선언과 스코프 그리고 호이스팅 (0) | 2022.11.09 |