[JAVASCRIPT] 객체 지향 (OOP)

Ethan Jeong·2022년 7월 22일
0

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


  • OOP는 프로그램 설계 철학입니다.

  • OOP의 모든 것은 "객체"로 그룹화됩니다.

  • OOP의 4가지 주요 개념을 통해 재사용성을 얻을 수 있습니다.

객체 내에는 "데이터와 기능이 함께 있다"라는 원칙에 따라 메서드와 속성이 존재합니다. 예를 한번 들어보겠습니다. 모든 자동차는 공통적인 기능과 고유의 속성이 있습니다. 속도를 낸다든지, 주유를 한다든지 등의 기능이 존재하며, 속성으로는 색상, 최고 속력 혹은 탑승인원 등과 같은 고유의 데이터가 존재하죠.


OOP의 핵심 개념 4가지

  1. Encapsulation (캡슐화)

  2. Inheritance (상속)

  3. Abstraction (추상화)

  4. Polymorphism (다형성)

Encapsulation (캡슐화)

  • 캡슐화는 데이터와 그 데이터를 활용하는 함수를 캡슐 혹은 컨테이너(class) 안에 두는 것을
    의미한다. (데이터와 기능을 하나로 묶는 것)
  • 캡슐화를 통해서 우리가 원하는 데이터를 은닉할 수 있다.
  • 느슨한 결합은 (아직 이해 X)

Inheritance (상속)

  • 부모/자식으로 이야기하기도 하지만, 보다 그 특징을 자세하게 설명하는 용어는 "기본 클래스(base class)의 특징을 파생 클래스(derived class)가 상속받는다"로 표현하는 것이 적합하다.
  • 코드를 더 작은 단위로 사용이 가능하고, 재사용이 가능하다.
  • 클래스를 extending (extends, super) 하면 자식 클래스는 부모 클래스의 모든 속성과 메소드를 수신하게 된다

Abstraction (추상화)

  • 추상화는 내부 구현은 아주 복잡한데, 실제로 노출되는 부분은 단순하게 만든다는 개념이다.

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

    클래스 정의 시, 메서드와 속성만 정의한 것을 인터페이스라고 부릅니다. 이것이 추상화의 본질입니다.

Polymorphism (다형성)

  • 다형성은 상속과 밀접한 관계가 있다. 자식에게 상속한 메서드의 리턴값을 바꾸고 싶다면, 우리는 메서드 오버라이딩을 통해서 상속한 메서드의 리턴값을 바꿀 수 있다. 하지만 그 리턴한 값의 타입은 오리지널 메서드의 리턴 타입과 동일해야 한다.

  • 만일 언어 자체에서 다형성을 제공하지 않는다면, 기본(부모) 클래스에 종류별로 분기를 시켜서 하나하나 다르게 만들어야 할 것입니다.

  • 똑같은 메서드라 하더라도, 다른 방식으로 구현 될 수 있다. (다양한 형태로 나타난다.)

profile
효율매니아

0개의 댓글