※클래스, 객체, 인스턴스, 인스턴스화는 분명 정의된 용어입니다. 얼추 보면 다 고만고만하고 비슷비슷해 보이지만
뜻하는 바는 다르다는걸 아시길 바랍니다!!
설명하기에 앞서 예시를 하나 보겠습니다.
(직접 만들었습니다.....^^;;)
위 그림을 설명하자면.....;;;
쫄라맨이 과자를 만들 계획을 세우고 재료들을 구성하고 배합하여 과자를 만드는 과정입니다.!?
여기서 과자를 만들 계획을 세우고 어떤 재료가 들어갈지 틀을 구상하는 것이 클래스가 됩니다.
클래스를 기반으로 어떤 과자를 만들지 결정하는 단계를 객체라고 합니다.
어떤 과자(객체)를 만들지 결정했으면 그에 맞는 배합물을 넣고 섞어 완성품을 만들어내는 일련의 과정들을 인스턴스라고 합니다.
그리고 객체에서 인스턴스로 넘어가는 것을 가르켜 인스턴스화 라고 하는 것입니다.
코드로 보겠습니다.
객체와 인스턴스 부분입니다.
(배합물은 귀찮아서..... 걍 안바꿨습니다.^^)
여기서 new Creaker로 된 부분을 가르켜 객체 라고 합니다.
그리고 Creaker(100, 20, 10, 100, 10, "DieJe")이렇게 인자값을 받으면서 코드가 돌아가는 걸 인스턴스라고 합니다.
이 과정을 인스턴스화 라고 부르는 것이지요.
사전적인 의미를 가져와 보겠습니다.
객체(Object)는 현실의 대상(Object)과 비슷하여, 상태나 행동 등을 가지지만, 소프트웨어 관점에서는 그저 콘셉에 불과하다. 소프트웨어에서 객체를 구현하기 위해서는 콘셉 이상으로 많은 것들을 사고하여 구현해야 하므로, 이를 위한 설계도로 클래스를 작성한다. 설계도를 바탕으로 객체를 소프트웨어에 실체화 하면 그것이 인스턴스(Instance)가 되고, 이 과정을 인스턴스화(instantiation)라고 한다. 실체화된 인스턴스는 메모리에 할당된다.
출처: http://cerulean85.tistory.com/149 [카르페디엠!]
알 것 같으면서도 종잡을수 없는 말입니다....
이 글은 객체와 클래스, 인스턴스, 인스턴스화를 햇갈려 하는 난민 분들을 위한 글입니다.
최대한 이해하기 쉽게 작성했습니다.
행여 잘못된 점이 있거나 지적할 부분이 있으면 댓글 달아주시기 바랍니다.^^
수용해서 고치도록 하겠습니다.
'프로그래밍 > C++' 카테고리의 다른 글
C++ public, protected, private에 대한 설명 (1) | 2019.02.19 |
---|---|
c++ new의 사용법, malloc과의 차이(free, delete) (2) | 2019.01.19 |
C++ 클래스 정의, 구조체와 차이점(접근제어 지시자) (0) | 2019.01.17 |
C와 C++의 차이, 절차지향과 객체지향의 차이점!!(객체지향 사용 이유) (0) | 2019.01.17 |
C++의 참조자 (0) | 2018.06.24 |
댓글