티스토리 뷰


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로 전달하는것

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG more
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함