본문 바로가기

프론트엔드/자바스크립트

객체지향 프로그래밍

OOP

  • 객체 지향 프로그래밍 (Object-oriented programming)
  • 컴퓨터 프로그래밍의 패러다임 중 하나
  • 컴퓨터 프로그램을 명령어의 목록으로 보는 시각이 아닌 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것이다. 따라서 OOP의 모든 것은 객체로 그룹화 됨.

Encapsulation(캡슐화)

  • 데이터(속성)와 기능(메서드)을 하나의 단위(하나의 객체)로 묶는 것
  • 은닉화: 구현은 숨기고, 동작은 노출시킴 즉, 내부 데이터나 내부 구현이 외부로 노출되지 않도록 만드는 것.
  • 느슨한 결합(Loose Coupling)에 유리
    - 언제든 구현을 수정할 수 있음
    - 코드 실행 순서에 따라 절차적으로 코드를 작성하는 것이 아니라, 코드가 상징하는 실제 모습과 닮게 코드를 모아 결합하는 것을 의미한다.
  • 캡술화는 코드가 복잡하지 않게 만들고, 재사용성을 높인다.

Inheritance(상속)

  • 부모 클래스의 특징을 자식 클래스가 물려받는 것을 말함.
  • 부모 / 자식이라는 키워드 보다 전문성 있는 키워드를 사용하자
  • "기본 클래스(base class)의 특징을 파생 클래스(derived class)가 상속받는다" 라고 표현하는 것이 적합하다.

Abstraction(추상화)

  • 내부 구현은 아주 복잡한데, 실제로 노출되는 부분은 단순하게 만든다는 개념
  • 추상화와 캡슐화는 다른 것!
  • 캡슐화가 코드나 데이터의 은닉에 포커스가 있다면,
    추상화는 클래스 사용자가 필요하지 않는 메서드 등을 노출시키지 않고, 단순한 이름으로 정의한다는 것에 포커스.

Polymorphism(다형성)

 

  • Poly는 많은, morph는 형태라는 뜻을 가진다. 따라서 다양한 형태를 가질 수 있다는 의미이다.
  • 객체 역시 똑같은 메서드라 하여도, 다른 방식으로 구현될 수 있다.
  • 만약 다형성을 제공하지 않는다면, 기본 클래스에 종류별로 분기를 시켜 하나하나 다르게 만들어야 할 것이다.

-------------------------------------------------------------------------------

OOP 정리

  • 캡슐화는 코드가 복잡하지 않게 만들고, 재사용성을 높인다.
  • 추상화는 마찬가지로 코드가 복잡하지 않게 만들고, 단순화된 사용으로 변화에 대한 영향을 최소화한다.
  • 상속 역시 불필요한 코드를 줄여 재사용성을 높인다.
  • 다형성으로 인해 동일한 메서드에 대해 if/else if와 같은 조건문 대신 객체의 특성에 맞게 달리 작성하는 것이 가능해진다.

 

'프론트엔드 > 자바스크립트' 카테고리의 다른 글

js 소수점처리 .tofixed()  (0) 2022.08.15
프로토타입체인  (0) 2022.07.25
클래스와 인스턴스  (0) 2022.07.22
Typeof  (0) 2022.06.24
forEach 반복문 같은의미  (0) 2022.05.13