[JavaScript] 객체지향프로그래밍 2.OOP란?

Hyun Jin·2023년 1월 13일
0

JavaScript

목록 보기
16/20

Chapter1-3. 객체 지향 프로그래밍

  • 절차적 언어 : 초기의 프로그래밍 언어
  • 객체지향 언어 : “클래스”라고 부르는 데이터 모델의 청사진을 사용해 코드를 작성하는 언어.
  • JavaScript : 객체지향 언어는 아니지만 객체 지향 패턴으로 작성 가능.

OOP(Object Oriented Programming)

  • 프로그램 설계 철학 중 하나로서, 실제 현실의 object 를 객체로 보고 그 객체의 속성, 기능 등을 프로그래밍 언어로 바꾸어서 프로그래밍하는 것.
  • OOP 의 모든 것은 객체로 그룹화 됨. 이 객체는 한번 만들고 나면, 메모리상에서 반환되기 전까지 객체 내의 모든 것이 유지됨..
    • 객체 내에는 메서드와 속성이 존재함
    • 클래스 : 일종의 원형(original form)으로, 객체를 생성하기 위한 아이디어나 청사진.
    • 인스턴스 : 클래스를 통해 만들어진 객체(incetance object).
  • OOP Basic Concepts

    1. Encapsulation (캡슐화)

      데이터와 기능을 하나의 단위로 묶는 것.
      은닉 : 구현은 숨기고, 동작은 노출시킴(Typescript 에서는 private 키워드가 있으나 JS 에서는 없음)
      느슨한 결합에 유리 : 언제든 구현을 수정할 수 있음

    2. Inheritance (상속)

      상속은 부모 클래스(기본 클래스(base class))의 특징을 자식 클래스(파생 클래스(derived class))가 물려받는 것.

    3. Abstraction (추상화)

      실제로 노출되는 인터페이스 단순화.
      캡슐화가 코드나 데이터의 은닉에 포커스가 맞춰져있다면, 추상화는 클래스를 사용하는 사람이 필요하지 않은 메서드 등을 노출시키지 않고, 단순한 이름으로 정의하는 것에 포커스가 맞춰져 있음.

    4. Polymorphism (다형성)

      같은 이름을 가진 메서드라도 조금씩 다르게 작동하는 것

  • OOP의 주요 개념에 대한 장점

    • 캡슐화 : 코드를 수정 없이 재활용하는 것을 목적으로 하여 코드 단순화, 모듈화, 재사용성 증가.
    • 추상화 : 코드 단순화, 중요한 정보만 표현함으로써 공통의 속성과 기능을 묶어서 표현함.
    • 상속 : 자식 클래스에서 불필요한 코드를 줄이게 됨, 코드 단순화.
    • 다형성 : 동일한 메서드에 대해 부모(base) 클래스 내에서 일일히 조건을 주는 대신 자식(derived) 클래스에서 객체의 특성에 맞게 작성하는 것이 가능함.
profile
새싹 프론트엔드 개발자

0개의 댓글