티스토리 뷰

728x90

객체 VS 인스턴스 차이점 




객체의 사전적인 정의는 실제로 존재하는 것 이고 

프로그래밍에서의 객체는 메모리에 생성된 것을 뜻한다.  그럼 인스턴스도 이와 같은말인가? 


둘이 같은 의미이지만 문맥에 따라 구별하는 것이 좋다.


클래스로부터 객체를 만드는 과정을 클래스의 인스턴스화(instantiate) 라고 하며,

어떤 클래스로부터 만들어진 객체를 그 클래스의 인스턴스(instance)라고 한다.


예를 들자면, Tv 클래스로부터 만들어진 객체를 Tv클래스의 인스턴스라고 한다. 결국 인스턴스는 객체와 같은 의미지만,


"객체"는 모든 인스턴스를 대표하는 포괄적인 의미를 갖고 있으며, 

"인스턴스"는 어떤 클래스로부터 만들어진 것인지를 강조하는 것 보다 구체적인 의미를 갖고 있다.


책상은 인스턴스다 -> 책상은 객체다.


책상은 책상 클래스의 객체이다 -> 책상은 책상 클래스의 인스턴스다


라고 말하는 것이 더욱 자연스럽다.




// 위에 쓴 작성은 멀티캠퍼스 수료 전 포스팅이고 밑에는 멀티캠퍼스 수료 후 작성된 포스팅이다.


전체적으로 Object Instance의 그림을 그려보자면


Object -> Class -> Instance 순으로 그림을 그릴 수 있다.


Object란 무엇일까 object를 사전에서 찾아보면 객체,물체 라고 나타내있다. 

프로그래밍 언어에서 말하는 Object는 

내가 현재 바라보는 객체  즉, 개발자인 내가 현재 바라보는 객체 = 내가 관리하는 프로젝트 ( 내가 관리하는 class.. 등) 

내가 현재 부서에서 또는 학교에서 맡은 프로젝트를 말한다.


우리가 분석한 Object를 두가지로 나누어보자 Object를 나눌때는 무조건 두가지로 나눌 수 밖에 없다.

예를 들어 TV Object라면,  티비의 크기, 높이, 길이, 색상, 볼륨과 켜기, 끄기, 볼륨 높이기, 낮추기, 채널 변경하기 등이 있을것이다.


이 기능을 두가지로 나누었을때 전자는 티비의속성에 해당되고 후자는 티비의 기능이 된다.


Object [ 속성 / 기능 ] 으로 나누는 과정이 : Object Modeling 이라고 한다.


다음 화살표는 class

Class의 정의는 내가 Object Modeling한 것들을 왜곡 없이 전달해야한다. 그게 같이 프로젝트 하는 사람이든, 내가 코딩한 것이던

그럼 티비의 속성 중 채널은 int chanel 으로 선언할 수 있고, 기능은 chanelUp() 으로 메서드를 작성할 수 있다.


Class [ 속성(변수,상수) / 기능(메서드) ] 이 만들어진다.


그림 이 Class를 사용하기 위해서는 메모리에 올라가 있어야 하는데 이 올라가는 과정을 인스턴스화 라고 하고 

올라간 상태를 인스턴스라고 한다.


Instance를 만드는 과정은 우리는 익히 알고 있다. 바로 new를 사용하는 것.


Tv myTv = new Tv(); 이것이 인스턴스를 만들때 쓰는 문법이다.

인스턴스에 대해 더욱 자세히 포스팅 한 내용은 아래 링크에서 확인 바랍니다.

https://nibble2.tistory.com/14



사실은 Object Class Instance 이 세가지는 모두 같지만 다른 위치에 있을 뿐이다!

Object는 내 머리속, 공책속이 될 수 있고 Class 또한 머리속 혹은 eclipse안에 Instance는 메모리에 있을 뿐이다.






'프로그래밍 > java' 카테고리의 다른 글

인스턴스(instance)  (0) 2018.10.29
OverFolow의 발생  (0) 2018.10.22
변수(variabble)는 왜 사용할까  (0) 2018.10.22
하나의 패키지 안에 여러 클래스?  (0) 2018.10.22
method vs founction  (0) 2018.10.22