OOP
- OOP는 프로그램 설계 철학
- OOP의 모든 것은 '객체'로 그룹화
- OOP의 4가지 주요 개념을 통해 재사용성을 얻을 수 있다.
클래스와 인스턴스
- 클래스는 일종의 원형(original form)으로, 객체를 생성하기 위한 아이디어나 청사진
- 인스턴스는 클래스의 사례(instance object)
- 클래스는 객체를 만들기 위한 생성자(constructor) 함수를 포함
속성과 메서드..
색상, 가격, 속력과 같은 고유의 속성
그리고 시작, 후진, 전진, 멈춤과 같은 기능들이 메서드로 존재한다.
OOP의 네 가지 개념
(Encapsulation, Inheritance, Abstraction, Polymorphism)
캡슐화 (Encapsulation)
- 캡슐화는 데이터(속성), 기능(메서드)를 따로 정의하는 게 아니라, 하나의 객체 안에 넣어서 묶는 것. (느슨~~)
-느슨한 결합은 코드 실행 순서에 따라 절차적으로 작성하는 것이 아니라,
- 코드가 상징하는 실제 모습과 닮게 코드를 모아 결합하는 것을 의미한다.
- 은닉화도 포함 (내부 데이터나 내부 구현이 외부로 노출되지 않도록 만드는 것)
추상화 (Abstraction)
- 추상화는 내부구현은 아주 복잡한데, 실제로 노출되는 부분은 단순하게 만든다는 개념
- 예를 들면 전화라는 객체에서, 스피커와 마이크, 서킷 보드 등이 존재하는 등의 내부구현이 있을 지언정 우리가 사용할 때에는 단순히 수화기를 들고 버튼을 눌러서 해결한다.
- 캡슐화가 코드나 데이터의 은닉에 포커스가 맞춰져있다면, 추상화는 클래스를 사용하는 사람이 필요하지 않은 메서드 등을 노출시키지 않고, 단순한 이름으로 정의하는 것에 포커스가 맞춰져 있다.
상속 (Inheritance)
상속은 부모 클래스(기본클래스-base class)의 특징을 자식 클래스(파생클래스-derived class)가 물려받는 것.
다형성 (Polymorphism)
다형성을 HTML 엘리먼트를 예로 들어
DOM을 배울 때 Textarea(TextBox), Select, 그리고 Checkbox 등
HTML에서는 이와 같이 모든 요소가 전부 Element
TextBox, Select, Checkbox의 공통의 부모인 HTML Element라는 클래스에 render라는 메서드를 만들고 상속을 받게 만들 수 있다.
다형성의 핵심은 이 같은 이름의 render라는 메서드가 조금씩 다르게 작동한다는 데 있다.
TextBox는 가로로 긴 네모 상자와 커서가 있는 형태일 것이고, Select 박스는 눌렀을 때 선택지가 나오도록 화면에 그려야 할 것입니다. 이처럼 같은 이름을 가진 메서드라도 조금씩 다르게 작동하는데, 이것이 바로 다형성이다