[JavaScript]객체 지향 프로그래밍

신보연·2023년 3월 15일

객체지향 프로그래밍:

기존의 절차적 프로그래밍은 함수를 순차적으로 작동했는데 복잡한 어플리케이션을 만듦에 있어 직관적이지 않았다.
이후에 등장한 객체지향 프로그래밍은 사람이 세계를 보고 이해하는 방법을 흉내낸 프로그램 설계 철학이다.
자바스크립트는 객체 지향 언어는 아니지만, 객체지향적으로 코드를 짤 수 있고 현대의 언어들은 대부분 객체 지향의 특징을 갖고 있다. (대표적으로 Java, C++, C# 등)
클래스는, 세부 사항(속성)이 들어가지 않는다.
생성자를 통해 속성을 넣어서 인스턴스를 생성.

객체지향의 주요개념

캡슐화(Encapsulation):

  • 데이터와 기능을 하나의 단위로 묶는 것.
  • 은닉(hiding): 구현은 숨기고, 동작은 노출.
  • 느슨한 결합(Loose Coupling)에 유리: 언제든 구현을 수정할 수 있음.

은닉화의 기능을 통해 내부 구현과 내부 데이터를 숨기고 객체 외부에서 필요한 동작(메서드)만 노출.

추상화(Abstraction):

  • 복잡하게 보이는 것을 단순화

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

상속(Inheritance):

하나의 클래스가 부모클래스의 속성과 행동을 얻게 되는 방법.
상속은 코드의 재사용성과 유지보수를 위해 사용.

다형성(Polymorphism):

  • 같은 자료형에 여러가지 객체를 대입하여 다양한 결과를 얻어내는 성질.

동일한 메서드에 대해 if/else if와 같은 조건문 대신 객체의 특성에 맞게 달리 작성하는 것이 가능, 같은 행위를 하지만 용도와 목적에 부합하도록 다양한 기능수행과 처리, 결과를 낳을 수 있다.

0개의 댓글