JavaScript 공부 - 객체지향 프로그래밍(OOP)

그래도 아무튼 개발자·2023년 3월 15일
0

JavaScript

목록 보기
4/11
post-thumbnail

객체지향 프로그래밍이란 "클래스"라고 부르는 데이터 모델의 청사진을 사용하여 코드를 작성하는 프로그래밍으로, 대표적으로 Java, C++, C# 등이 있다. 이 이전에는 객체지향이 아닌 절차지향 언어로 C, 포트 등이 절차치향 언어에 해당한다.

JavaScript 또한 객체 지향으로 코드 작성이 가능하다.

객체지향 프로그래밍에서 중요한 역할을 하는 클래스는, 속성이 들어가지 않은 청사진이다. 여기에 세부적인 속성을 넣는다면 객체가 되는 것입니다. JavaScript에서 사용하는 용어와 별개로 클래스를 통해 만들어진 객체를 특별히 인스턴스 객체, 줄여서 인스턴스라고 부른다.

이러한 속성을 클래스에 넣는 방법은 이전 글에서 다루었다.

객체지향 프로그래밍의 주요 개념

  1. 캡슐화
  2. 상속
  3. 추상화
  4. 다형성

캡슐화

(정처기 준비할때 잔뜩 외웠던거 같은데...)
캡슐화란 데이터(속성)와 기능들(메서드)을 따로 정의하는 것이 아닌, 느슨하게 결합하여 하나로 묶는 것을 의미하며, 은닉화의 특징도 가지고 있다(내부 구현은 숨기고 동작만 노출).
✅느슨한 결합 : 절차적으로 코드를 결합하는 것이 아니라 그냥 코드 구현의 실제 모습과 닮도록 관련 코드들을 모아 결합하는 것을 의미 -> 구현 수정에 용이

추상화

내부 구현 정도는 매우매우 복잡하더라도, 밖에 보여지는 부분은 최대한 단순하게 만든다는 개념이다. 추상화를 통해 인터페이스를 단순하게 만들 수 있고, 사용하지 않는 기능들은 노출되지 않게 함으로써 예기치 못한 사용의 변화를 사전에 차단한다.

상속

쉽게 말하면 부모 클래스의 특징을 자식 클래스가 물려받는 것이다.

사람 클래스 -> 남자 클래스 -> 남학생 클래스

사람 클래스의 모든 속성은 남자 클래스가 상속받고, 성별과 같은 속성이 추가된다. 이렇게 생성된 자식클래스도 누군가의 부모클래스가 될 수 있다. 남학생 클래스가 이에 해당하는데, 남자 클래스의 모든 속성을 물려받으면서, 학생이므로 학년, 반, 수강과목 등의 학생 고유의 속성을 추가할 수 있다.

다형성

같은 메서드라 할지라도, 다른 방식, 다양한 방식으로 구현될 수 있다는 것을 의미한다.
HTML 엘리먼트를 예로 들어보자
TextBox / Select Box / CheckBox
모두가 같은 HTML 엘리먼트들로, 공통의 부모를 가지고 있으며, 같은 이름의 render메서드를 가지고 있다. 하지만 결론적으로 이들을 조금씩 다르게 동작한다. 이처럼 이렇게 다양한 방식으로 동작하는 것을 일종의 다형성이라고 말할 수 있다.

0개의 댓글