본문 바로가기

programming/용어정리

[용어정리] 클래스 객체 인스턴스


안녕하세요. Bot - binoo 입니다.

오늘은 클래스 객체 인스턴스 대체 무엇일까라는 주제로 간단하게 정리 해볼까 합니다.


OOP 에서 유독 중요하게 다루어야할 것이 Object(객체)인데

최근까지 저는 객체(Object) 와 Instance 를 혼용한 것은 아닌지 되짚어 봅니다.



1. Class & Classification


- 최근 python 을 이용한 Classification 예제가 쏟아짐에 따라 확실한 구분과 명확한 용어 리마인드가 중요하다고 느껴졌습니다.


어려운 내용이 아닙다.


Class 가 대체 무엇인가 모르겠다면 Classification 을 살펴봅시다.

Classification 설명 영상 (동영상 1-1) - (너무 시끄러워서 짜름):  http://www.playrific.com/z/6493 1)


- 영상을 요약하자면 동물을 나누는 기준, 즉 분류(Classfication)를 설명하고 있습니다.

- 여기서는 동물로 한정하고 있지만, 분류의 기준에는 어떤 것이든 될 수 있습니다.

- 또한, 어떤 적당한 분류 혹은 세세한 분류도 기준에 따라 인정될 수 있습니다.


이는 다시말해 일종의 집합을 의미합니다.

지구에 사는 생물을 일련의 집합(여기서는 클래스)으로 볼 수 있습니다. 예컨데 이를 A 라고 하죠.

그런데, 이중에는 잎이 있는 것과 없는 것이 있습니다. 우리는 집합 A를 식물과 동물로서 다시 나눌 수 있습니다.

더 나아가 포유류, 조류, 양서류, 외떡잎, 쌍떡잎 등 세세하게 그 집합(클래스)을 정의할 수 있습니다.


이러한 일련의 과정을 Classification (분류) 이라 합니다.

이 과정의 결과를 모두 Class (집합) 로 볼 수 다.



1) Class 와 Classification 의 설명을 위해 가져온 영장류와 인류의 분류 (정작 본인은 창조론을 믿는다.)



2. Object & Instance


둘을 구분하기 이전에 먼저 객체란 무엇일까,

학부시절에 교수님께서는 이렇게 말씀하셨습니다.


Class 는 붕어빵을 찍어내는 형틀입니다.

Object 는 틀에서 구워낸 붕어빵입니다.

직전에 우리는 Class 를 알아보았습니다.

그것은 우리가 일련의 기준으로 분류하여 얻어낸 집합이었습니다.


붕어빵 형틀을 클래스라고 본다면,

슈크림이 든 붕어빵, 팥이 든 붕어빵, 마요네즈가 든 붕어빵, 쿠키반죽으로 만든 붕어빵 등은 객체가 될 것입니다.


그렇다면 인스턴스(Instance)는 무엇일까.

아래 짧은 코드를 언급하여 설명하고자 합니다.


class bread{
  String name;
  int cost;
  public bread(){
    // 인스턴스 생성자
  }
}

class main{
  public static void main(String[] args){
    bread nomalBread;            // (1)
    nomalBread = new bread();    // (2)
  }
}


Java 를 코드 예시로 들었지만, 실제로 MS 에서는 C# 으로 동일한 설명을 하고 있습니다. 2) 


상기의 코드에서 클래스는 bread 입니다.

객체는 nomalBread 입니다.


(1) 까지는 선언만 했기 때문에 객체 nomalBread 가 bread 에 속한다는 것만 알 수 있습니다.


다시말해 인스턴스라고 하는 그 친구는 이름만 주어지고 아직 태어나지 않았기 때문이죠. (Null 을 이해하는 본인의 표현)


(2) 에서 인스턴스 생성자를 호출해야 비로소 객체 nomalBread 는 bread의 인스턴스라고 할 수 있게 됩니다. (인스턴스는 객체에 인스턴스 생성자를 호출하여 생성하고 소멸할때까지만 존재합니다.)


정리하자면, Object 가 실체화한 형태가 Instance이며 이들을 아우르는 집합이 Class라고 할 수 있습니다.





반응형