3. Inheritance Patterns - OOP, Object, prototype

Jungmin Lee·2020년 11월 17일
1

javascript

목록 보기
2/4

1.OOP

OOP(Object oriented programming)이란

프로그램의 철학, 사람이 세계를 보고 이해하는 방법을 흉내낸 방법론이다.
Oop의 기본 컨셉은 프로그램 내에서 표현하고자 하는 실세계의 일들을 모델링 하고 객체를 사용하지 않으면 불가능 또는 어려운 일을 쉽게 해주는 방법을 제공한다.

oop의 특징

1-1. EnCapsulation
EnCapsulation이란 여러 변수들과 함수를 한 클래스안에 담는 것을 의미한다.
캡슐화를 하면서 불필요한 코드들을 은닉할 수 있는 장점이 있다.

1-2. Inheritance
Inheritance는 상속을 의미하며 프로그램에서의 상속이란, 부모의 특징을 물려받아 부모가 가지고 있는 attribute와 method를 자식 또한 가지고 있을 것을 의미한다.
상속을 통해 코드의 재사용을 줄여 코드를 조금 더 간결하게 만들 수 있는 장점이 있다.

(출처: 코드스테이츠)

1-3. Abstraction
Abstraction은 추상화이다.
프로그래머의 의도에 맞추어 가장 중요한 것들만을 뽑아서 복잡한 것들을 단순한 모델로 변환하는 작업을 뜻한다.
예를 들어 자동차의 내부는 복잡하지만 실제로 사용자가 쓰는 기능은 내부에 비해 단순하다.

1-4. Polymorphism
Polymorphism는 다형성을 의미하며 다형성은 여러가지 객체 타입에 같은 기능을 정의할 수 있는 것을 말한다.
조금 더 쉽게 말해 다형성이란 큰 객체 안에 작은 객체를 넣어서 여러 형태로 변환하는 것을 의미한다.

위에 그림이 좋은 예다.
그리기 메소드를 활용해서 오버라이딩을 하여 여러 가지 모양으로 만들 수 있다.

2.Object 생성 방법

2-1. Functional
Functional방법은 말그대로 함수를 활용해서 만드는 생성방법이다.

2-2. Functional Shared
Functional Shard는 Functional의 불필요한 메모리 차지를 보완하기 위해 나온 방법이다.
Functional 과 Functional shared의 차이는 모든 인스턴스가 모든 메소드를 담고 있어서 메모미를 많이 차지하기 때문에 메소드를 따로 변수로 선언한 다음 extend라는 함수로 합쳐준다.

2-3. Prototypal
Object.create() 메소드를 사용하여 특정 객체를 프로토 타입으로 하는 객체를 생성해 주는 함수이다.

2-4. Pseudo classical
가장 많이 알려진 PseudoClassical 방법은 es5 방법이라고 불리는데 이것은 method를 Prototypal으로 만들어 줌으로써 사용할땐 new operator를 사용한다.

3.prototype 이란?

프로토타입(prototype)이란 일반적으로 원형이라는 뜻을 가진다.
자바스크립트에서 프로토타입은 자신을 만들어낸 객체의 원형을 뜻한다.
프로토타입을 쓰는 이유는 자신을 원형으로 만들어진 새로운 객체들과 연결하기 위해서이다.
prototype은 다음 블로그에서 proto와 다시 한번 더 정리해야 할 것 같다.

profile
Front-end developer who never gives up.

0개의 댓글