티스토리 뷰
value vs Identifier
value
- 값이란 string number 등의 primitive 속성
- 메모리 주소와 상관없이 그 안의 값이 같으면 같다고 한다.(a=3, b=3이면 다른 메모리주소이지만 안의 값이 같기에 같다고하는 것)
- 계속 복사본을 만들기 때문에 상태 변화에 안전하다
- 연산을 기반으로 로직 전개하게 된다
identifier ✔ => 객체지향적 코드작성시에는 identifier!!
- 주소값을 비교한다.
- 하나의 원본 (참조)
- 연산이 아니라 메세지를 기반으로 로직 전개
다형성 polymorphism = 대체가능성 + 내적일관성
대체가능성이란?
- 자식은 부모를 대체할 수 있는 것.
- 확장된 클래스는 대상 클래스의 대체 할 수 있다. => 콘솔을 보면 TRUE가 나온다.
const Worker = class{
run(){ console.log("working")}
print(){ this.run() }
}
const Hardworker = class extends Worker{
run(){ console.log("hard working")}
}
const worker = new Hardworker();
console.log(worker instanceof Worker) // TRUE
worker.print() // hard working
내적일관성이란?
- 원본 class를 유지하려는 속성 따라서 worker.print()를 하면 내적일관성에의해 자기자신부터 찾게되어 hard working이 나오게된다.
Object essentials 객체의 본질적 측면. Encapsulation of Funcionality + Maintenance of State
const EssentialObject = class {
private name = ""; //hide state
private screen = null;
constructor(name){
this.name = name;
}
camouflage(){
this.screen = (Math.random()*10).toString(16).replace(".","")
}
get name(){ //encapsulation
return this.screen || this.name
}
}
- hide state 모든속성이 private되어야한다. 데이터 은닉을 해야한다. 은닉하지않으면? 값이다. 우리는 value x identifier 해야함 프레임이 값컨텐츠로 움직이게 하면안된다. 객체지향이 무너진다.
- encapsulation 캡슐화. 캡슐화란? 쉽게 카드넣으면 돈줌. 실제로는? 카드인증 보안인증 잔고확인 등등 이런 절차? 우리는 모르고 돈만뽑아먹는다. 이것이 캡슐화. 외부에 기능을 잘 정리해서 간단한 api로 전달하는것
'Javascript > [JS&Node] 객체 지향' 카테고리의 다른 글
객체지향 OOP = Object Oriented Programming (0) | 2023.05.26 |
---|---|
[javascript]객체지향 프로그래밍과 함수형프로그래밍 (0) | 2022.05.28 |
JSON이란?? (0) | 2021.11.21 |
class를 복사하는 extends/super (0) | 2021.11.21 |
Object 생성기계인 constructor (0) | 2021.11.20 |