[JavaScript] 객체 지향 프로그래밍(Object Oriented Programming)

rsuubinn·2023년 1월 13일
0

JavaScript

목록 보기
6/10
post-thumbnail

📍 절차적 언어와 객체 지향 언어

절차적 언어

  • 초기의 프로그래밍 언어는 일반적으로 절차적 언어라고 부름(C, 포트란 등)
  • 절차적 언어는 순차적인 명령의 조합

객체 지향 언어

  • 클래스 라고 부르는 데이터 모델의 청사진을 사용해 코드 작성
  • 현대의 언어들은 대부분 객체 지향의 특징을 갖고 있음(Java, C++, C# 등)
  • JavaScript는 객체 지향으로 작성 가능

📍 클래스와 인스턴스

클래스

  • 일종의 원형(original form)으로, 객체를 생성하기 위한 아이디어나 청사진이다.
  • 클래스는 객체를 만들기 위한 생성자(constructor) 함수를 포함한다.
class Car {
  // properties, attribute
  constructor(color, price, speed){
    this.color = color;
    this.price = price;
    this.speed = speed;
  }
  // methods, behaviours
  start() {};
  backward() {};
  forward() {};
  stop() {};
}

인스턴스

  • 클래스의 사례(instance object)이다.

📍 객체 지향 프로그래밍의 4가지 개념

캡슐화(Encapsulation)

  • 데이터와 기능을 하나의 단위로 묶는 것
  • 은닉(hiding) : 구현은 숨기고, 동작은 노출시킴
  • 느슨한 결합(Loose Coupling)에 유리 : 언제든지 구현을 수정할 수 있음
  • 장점 : 코드가 복잡하지 않게 만들고, 재사용성을 높임

상속(Inheritance)

  • 부모 클래스의 특징을 자식 클래스가 물려받는 것
  • 기본 클래스(base class)의 특징을 파생 클래스(derived class)가 상속받는 것
  • 장점 : 불필요한 코드를 줄여 재사용성을 높임

추상화(Abstraction)

  • 내부 구현은 아주 복잡한데, 실제로 노출되는 부분은 단순하게 만듦
  • 캡슐화가 코드나 데이터의 은닉에 포커스가 맞춰져 있다면, 추상화는 클래스를 사용하는 사람이 필요하지 않은 메서드 등을 노출시키지 않고, 단순한 이름으로 정의하는 것에 포커스
  • 장점 : 코드를 복잡하지 않게 만들고, 단순화된 사용으로 변화에 대한 영향을 최소화

다형성(Polymorphism)

  • 같은 이름을 가진 메서드라도 조금씩 다르게 작동함
  • 장점 동일한 메서드에 대해 조건문 대신 객체의 특성에 맞게 달리 작성하는 것이 가능
profile
@rsuubinn

0개의 댓글