TIL 13 day Class, Object, Instance 나름의 정리

Winney·2020년 9월 11일
0

Javascript 개념

목록 보기
8/8
post-thumbnail

JavaScript는 객체지향프로그래밍 언어(object-oriented programming language,OOP)이다. C#이나 JAVA와 비교하자면 논란의 여지는 있다고는 하나 어쨌거나 class와 object의 OOP개념이 존재한다. 그렇기에 JavaScript를 배우며 class, object에 대해 이해하고 OOP에 대한 이해는 필수적이다.
하지만 class와 object에 대해 배우면서 둘의 차이에 대해서는 어느정도 감을 잡았지만 object와 instance의 용어는 헷갈리게 사용되어서 새로 정리 할 필요성을 느끼게 되었다.

매우 주관적인 정리

유튜브 중에서 class와 object, 객체지향에 대한 이해를 높일 수 있는 영상을 보았다. 플라톤의 이데아론을 이용한 설명이었는데 개인적으로는 class가 설계도라는 설명보다 객체지향에 대한 근본적인 이해를 도운 영상이었다.
또 내가 instance라는 단어를 봤을 때 떠올렸던건 게임이었다. 줄여서 인던!
RPG 게임을 하면 으레있는 시스템이다. 유튜브의 설명과 구글 검색, 내가 인던을 즐겼던 때를 생각하며 대충 정리해보았다.

class는 던전이다. 구체적인 던전은 엄청 많지만 어쨌건 던전은 던전이다. 던전은 입장하고 보스를 물리치면 나올 수 있다.
object는 구체적인 던전이다. 그냥 던전 가자고 하면 어디?라고 할 것이다. 그러면 나는 그림자던전!! 이라고 말 할 수 있다. 구체적인 던전의 종류는 무수히 많을 것이다. 이 던전은 어쨌거나 추상적인 던전의 실체화이다.
instance는 내가 던전에 들어갈 때마다 새롭게 생기는 던전이다! 내가 인던 돌 때를 생각하면 난 인던을 계속 뺑뺑이 돈다. 내가 원하는 템을 먹을 때까지! 내가 5번 입장을 하면 5번 다 똑같은 그림자던전이지만 내가 첫번째 들어가는 던전과 두번째 들어가는 던전은 엄연히 다른 던전이다. 5번내내 그림자 던전을 도는 동안 나는 계속 새롭게 생기는 인스턴트 던전을 도는 것이다!

웃기게도 여기까지 생각하니 대충 class, object, instance라는 용어에 대한 개념이 잡혔다. 정확히는 이를 설명한 코드의 의미를 알게되었다.


'객체(Object)는 소프트웨어 세계에 구현할 대상이고, 이를 구현하기 위한 설계도가 클래스(Class)이며, 이 설계도에 따라 소프트웨어 세계에 구현된 실체가 인스턴스(Instance)이다.'

구글링을 하다가 본 문장인데 처음에는 무슨말이지 하다가 금방 이해하게 되었다.

  • 객체(Object)는 소프트웨어 세계에 구현할 대상
    => 내가 그림자던전에 들어가면 구현 될 대상은 그림자던전(object)이다.
  • 소프트웨어 세계에 구현된 실체가 인스턴스(Instance)
    => 내가 그림자던전에 들어가면 실제로 내가 돌 수 있는 첫번째 인스턴스 던전이 만들어진다!
    두번째 들어가면 두번째 인스턴스 던전, 세번째 들어가면 세번째 인스턴스 던전이 생성된다. 내가 실제로 그림자던전에 들어가야지만 던전은 생성되고 내가 돌 수 있다. 각각은 인스턴스지만 어쨌건 다 그림자던전(object)이다.
//생성자 함수 사용

function OriginObject() {
    this.name = 'javascript'
}

var obj = new OriginObject();
obj.name = 'jQuery';
console.log(obj.name); // jQuery => obj는 인스턴스다.

var obj2 = new OriginObject();
console.log(obj2.name) // javascript => obj2는 인스턴스다.

console.log(origin)

obj, obj2는 각각 인스턴스이다. 그리고 객체이다.


구현대상은 object다.
구현된 실체는 instance다.

Object가 메모리에 할당되어 실제 사용될 때 Instance라고 부른다.


더 배워나가면서 개념은 조금씩 바뀌며 새롭게 다져질 수 있겠지만 지금으로는 가장 기억에 남는 방법인 것같다!

출처

profile
프론트엔드 엔지니어

0개의 댓글