객체 지향의 개념을 설명할 때는 보통 아래의 4가지 특징을 설명한다.
Encapsulation
객체 지향 프로그래밍을 하면 비슷한 변수와 함수를 한 곳에 모아 놓는다.
예를 들어 버튼을 만드는 객체를 정의할 때
버튼의 글자를 표시해주기 위한 변수와
버튼을 클릭했을 때 어떤 이벤트가 발생하게 하는 함수 등이 필요하다.
이 둘을 하나의 객체에 넣어준다.
객체 안에 변수와 메소드를 넣고 외부에서 접근을 못하게 막을 수도 있다.
이 두 가지 특성을 두고 객체 지향 프로그래밍은 Encapsulation(캡슐화)이라는 특징을 갖는다고 한다.
Abstraction
리모콘 안의 장치는 복잡하지만 사용하는 버튼은 얼마 되지 않는다.
전원 버튼, 채널이나 볼륨을 조절하는 버튼 등이 있을 뿐이다.
리모콘 사용자는 밖에 나와 있는 버튼만 알면 되지 나머지 복잡한 내부 로직을 알 필요가 없다.
이렇게 복잡한 객체를 간소화하는 작업을 Abstraction(추상화)이라 한다.
리모콘 버튼에 해당하는 메소드 몇 개만 파악하면 되기 때문에 객체를 사용하기 쉽고
다른 코드와 연결된 버튼 메소드를 제외한 나머지를 의존성 걱정없이 수정할 수 있다.
Inheritance
객체 지향 프로그래밍은 Inheritance(상속)를 통해서 중복을 줄여준다.
DOM 엘리먼트를 예로 들면 innerHTML 프로퍼티는 모든 엘리먼트에 존재한다.
각 엘리먼트마다 innerHTML이 작동하는 방식을 정의하는 건 불필요한 중복이고
대신 innerHTML을 부모 객체에 정의한 후 각 엘리먼트가 부모 객체를 상속하는 방법을 쓸 수 있다.
Polymorphism
말 그대로 다양한 형태로 사용할 수 있는 특징이다.
생성자가 받는 인자에 따라 객체의 내용을 바꿀 수 있고
오버라이드를 통해서 부모에게서 상속 받은 메소드를 수정할 수도 있다.
'자바스크립트 > 객체' 카테고리의 다른 글
자바스크립트의 this 마스터 하기 (0) | 2020.09.26 |
---|---|
자바스크립트 객체의 속성을 확인하는 팁 (0) | 2020.05.02 |
자바스크립트 new를 이용한 객체 생성 과정 (0) | 2020.03.27 |
자바스크립트 함수 내부의 변수는 private이다? private 구현하는 법 (0) | 2020.03.26 |
클래스 사용법과 2가지 상속 (class, pseudoclassical) (0) | 2020.03.25 |