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 코드스피츠
'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 |