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

Min Seong Kim·2022년 7월 22일
0

객체 지향 프로그래밍

  • 컴퓨터 프로그래밍의 패러다임 중 하나이다.
  • 객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 객체들의 모임으로 파악하고자 하는 것이다.
  • 각각의 객체는 메시지를 주고받고, 데이터를 처리할 수 있다.

캡슐화(Encapsulation)

  • 데이터(속성)기능(메서드)을 따로 정의하는 것이 아닌, 하나의 객체 안에 넣어서 묶는 것입니다.
  • 데이터(속성)기능(메서드)들이 느슨하게 결합되는 것

🤔느슨한 결합?

  • 느슨한 결합은 코드 실행 순서에 따라 절차적으로 코드를 작성하는 것이 아니라, 코드가 상징하는 실제 모습과 닮게 코드를 모아 결합하는 것을 의미한다.

은닉화

  • 은닉화는 내부 데이터나 내부 구현이 외부로 노출되지 않도록 만드는 것이다. 따라서 디테일한 구현이나 데이터는 숨기고, 객체 외부에서 필요한 동작(메서드)만 노출시켜야 한다.

  • 은닉화의 특징을 살려서 코드를 작성하면 객체 내 메서드의 구현만 수정하고, 노출된 메서드를 사용하는 코드 흐름은 바뀌지 않도록 만들 수 있다.

추상화(Abstraction)

  • 내부 구현은 복잡하지만 노출되는 부분은 단순하게 만드는 것으로, 추상화를 통해서 인터페이스를 단순화할 수 있다.

  • 너무 많은 기능들이 노출되지 않은 덕분에 예기치 못한 사용상의 변화가 일어나지 않도록 만들 수 있다.

  • class 정의 시, 메서드와 속성만 정의한 것을 인터페이스 부르고 추상화의 본질이다.

상속(Inheritance)

  • 부모 클래스의 특징을 자식 클래스가 물려받는 것이다.

예를 들어 사람(Human)이라는 클래스가 있다고 가정해 보면 사람은 기본적으로 이름, 성별, 나이와 같은 속성, 그리고 먹다, 자다 등과 같은 메서드가 있다고 볼 수 있다.

추가적으로 학생(Student)이라는 클래스를 작성한다고 생각해보자

그런데 이때 앞서 구현했던 사람(Human) 클래스의 속성과 메서드를 다시 구현한다면 비효율적일 것이다.

학생의 본질은 결국 사람이므로, 상속을 이용하여 학생(Student) 클래스는 사람(Human) 클래스를 상속받을 수 있다.

다형성(Polymorphism)

  • 말하다 라는 동작의 본질은 소리를 내다"를 의미하는데 각기 다른 동물들이 말할 때 제각각의 소리를 내는 것처럼 객체 역시 똑같은 메서드라 하더라도, 다른 방식으로 구현될 수 있다.

  • 동일한 메소드를 다양한 형태를 쓰는 것을 다형성이라고 한다.

HTML에 적용시켜보면 화면에 요소를 출력해주는 render라는 메소드를 정의했을 때 Textbox checkbox selector 에 따라 다르게 동작할 것이다.

profile
의미 있는 개발자

0개의 댓글