JS 객체지향 프로그래밍 웁시...! Part 2 - OOP의 특성 4가지

이예빈·2022년 7월 22일
0

JavaScript

목록 보기
14/26
post-thumbnail

객체지향프로그래밍(Object Oriented Programming, OOP)에는 4가지 주요 컨셉이 있다.

1. 캡슐화(Encapsulation)

캡슐화는 말 그대로 데이터(속성)와 기능(메서드)를 한 객체 안에 캡슐처럼 묶어놓는 것을 말한다. 이는 데이터와 기능의 느슨한 결합이라고도 하는데, 코드의 실행 순서와 절차에 따라 코드를 작성하는 것이 아니라, 코드가 상징하는 실제 모습과 닮게 코드를 모아 결합하는 것을 말한다. 캡슐화를 통해 코드의 리팩토링이 쉬워지고 내부의 데이터나 구현 사항이 외부로 노출되지 않을 수 있다.
캡슐화는 코드를 복잡하지 않게 만들고 재사용성을 높인다.

2. 추상화(Abstraction)

추상화는 내부 구현은 복잡하지만 실제로 노출되는 부분은 단순하게 만든다는 개념이다. 예를 들면 자동차 시동을 걸 때 전기 신호가 가고 모터를 돌리고 피스톤을 움직이고를 생각할 것이 없이 그냥 직관적으로 키를 꽂아 시동을 거는 것이다. 캡슐화와 구별되는 점은 캡슐화가 데이터의 은닉에 포커스가 있다면 추상화는 클래스 사용자에게 불필요한 정보를 노출시키지 않고 인터페이스를 단순화하는 것에 포커스가 있다.
클래스도 캡슐화와 같이 코드를 복잡하지 않게 하고, 단순화된 사용으로 변화에 대한 영향을 최소화한다.

3. 상속(Inheritance)

상속은 부모 클래스(기본 클래스: base class)의 특징을 자식 클래스(파생 클래스: derived class)가 물려받는 것을 말한다.
예를 들어 붕어빵이라는 클래스가 있으면 기본적으로 밀가루 반죽이 들어가고 붕어모양이라는 속성이 있다면 이에서 파생된 피자 붕어빵 클래스는 기본 클래스의 속성을 그대로 상속 받을 수 있다.
상속은 불필요한 코드를 줄여서 효율성과 재사용성을 높인다.

4. 다형성(Polymorphism)

polymorphism의 poly는 '많은', morph는 '형태'라는 뜻을 가지고 있다. 즉, 다양한 형태를 가질 수 있다는 말이다. 같은 붕어빵 클래스지만 별도로 부여되는 속성에 따라 피자 붕어빵이 되고 팥 붕어빵이 되고 슈크림 붕어빵이 된다.
다형성을 통해 if 등의 조건문을 사용하지 않고 객체의 특성에 맞게 코드를 작성하는 것이 가능해진다.

profile
temporary potato

0개의 댓글