본문 바로가기

Study Output for Myself/Javascript

객체지향 자바스크립트(1)

Polymorphism

<대체가능성 substitution> 

HardWorker가 Worker를 대체할 수 있음.

=자식은 부모를 대체할 수 있음. 

=확장된 클래스확장할 대상을 대체할 수 있음. 

console.log(worker instanceof Worker) // true;

<내적일관성 internal identity>

worker는 Hardworker의 instance이기 때문에 HardWorker의 속성을 먼저 가져온다.

worker.print() //'hardworking'

위 두가지, 내적일관성과 대체가능성인 폴리모피즘을 가지고 있다면 객체지향언어라고 할 수 있다.


Object Essentials

'객체지향언어'의 본질

<hide state>

속성의 조건은 private #

외부에 상태를 숨겨야 한다. 그냥 상태가 아닌 보여주면 값(value)가 된다. 값은 다른 사람이 수정할 수도 있음.

상태관리의 책임(Maintenance of State)이 따른다.

<encapsulation>

method를 노출하지 않는다. 기능을 노출하지 않는다.

외부에서는 진짜 이름(name)을 쓰는지 camoflage(가명)을 쓰는지 알 수 없다. 

 

=>Isolation of Change(변화에 대한 격리)

모든 부분에 다 적용되어 있어야 객체지향이라고 볼 수 있다. 하나라도 빠뜨리면 다른 것에 영향을 줌.

해당 공간의 변화가 다른 공간에 영향을 주지 않아야 함. 

ex) 신제품 배너 추가를 했는데 고객의 소리가 먹통이 됨.


기본설계요령

더보기

여기서 부터 이해 못함 ^^^

항상 2.다른 객체에게 의뢰한다! 로 가야한다. 

오퍼레이션 - 밖에서 메소드를 부르는 것. 어떤 메소드가 호출될지는 알 수 없음. 런타임에 따라 다를 수 있음.

메소드-객체 안에 있는 함수들


Dependency

후자로 가는 것을 지향

상속->연관->의존

 

의존성이 높을 때 생겨나는 문제

1.수정 여파 규모 증가 2. 수정하기 어려운 구조 생성 3. 순환 의존성


Dependency Inversion


Inversion of Control

From 코드스피츠

https://www.youtube.com/watch?v=E9NZ0YEZrYU&t=3120s

'Study Output for Myself > Javascript' 카테고리의 다른 글

[JS]함수표현식 vs 함수선언식  (0) 2022.06.21
[JS]Bitwise operators  (0) 2022.05.22
객체지향 자바스크립트(2)  (0) 2022.05.20
단축평가 논리 계산법  (0) 2022.05.19
객체의 비구조화 할당  (0) 2022.05.19