객체 지향 JavaScript

EBinY·2021년 10월 5일
0

Class와 instance

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

하나의 모델이 되는 청사진을 만들고(Class)
청사진을 바탕으로 한 객체를 만드는 프로그래밍 패턴(instance)
모델의 청사진을 만들 때 쓰는 원형 객체(prototype)
인스턴트가 초기화될 때 실행하는 생성자 함수(constructor)
함수가 실행될 때, 해당 scope마다 생성되는 고유한 실행 context(this)
(new 키워드로 인스턴스를 생성했을 때에는, 해당 인스턴스가 바로 this의 값이 됨)

프로그램 설계 철학, 모든 것은 '객체'로 그룹화 됨, 4가지 주요 개념을 통해 재사용성을 획득
class는 일종의 원형(original form), 객체를 생성하기 위한 아이디어 또는 청사진
instance는 클래스의 사례(instance object)
class는 객체를 만들기 위한 생성자(constructor) 함수를 포함

Encapsulation (캡슐화)

데이터(속성)와 기능(메소드)을 하나의 단위로 묶는 것
hiding(은닉): 구현은 숨기고, 동작은 노출시킴
loose coupling(느슨한 결합)에 유리: 언제든 구현을 수정할 수 있음
캡슐화는 코드가 복잡하지 않게 만들고, 재사용성을 높입니다.

Abstraction (추상화)

내부 구현은 복잡하지만, 실제 노출되는 부분은 단순하게 만든다는 개념, 전화기를 들고 번호를 눌러 통화하듯
복잡한 과정을 단순화 하여, 인터페이스(interface)를 단순화
추상화는 마찬가지로 코드가 복잡하지 않게 만들고, 단순화된 사용으로 인해 변화에 대한 영향을 최소화합니다

Inheritance (상속)

부모 클래스의 특징을 자식 클래스가 물려받는 것, 사람의 특성을, 학생이 물려받는 것
상속 역시 불필요한 코드를 줄여 재사용성을 높입니다.

Polymorphism (다형성)

DOM의 엘리먼트에 render되는 TextBox, Select, Checkbox, 조금씩 다르게 작동한다
각자 render의 개념을 가져도 되지만, 부모 클래스에서 render를 가지고, 각각의 자식 클래스에서 다른 부분만을 가지고 render의 개념은 물려받는게 합리적이다.
다형성으로 인해 동일한 메소드에 대해 if/else if와 같은 조건문 대신 객체의 특성에 맞게 달리 작성하는 것이 가능해집니다.

절차지향 vs 객체지향

메모리 관리가 중요하다면 절차지향
메모리 저, 속도 고, 재사용성 저, 유지/보수 저
사람들과의 협업이 중요하다면 객체지향
메모리 고, 속도 저, 재사용성 고, 유지/보수 고

0개의 댓글