C# :: For Beginners

[C#] 그렇다면 클래스는 무엇인가?

Overview

객체가 무엇인지에 대해서 문법과 예화를 통해 알아보았습니다. 객체란, 대상이 되는 목적물이라고 했습니다. 객체의 특징을 다시 한번 귀띔해드리자면 각각의 물체마다 고유한 명칭 (이름) 을 가지고 있다라는 점과 무한대의 개수로 늘어날 수도 있고 여러가지 행동들과 특성이 있다고 정의했었습니다. 자, 그렇다면 이제 클래스가 무엇인지를 어느 초등학교의 소녀이야기를 예를 들어 살펴보도록 하겠습니다.

 

Class

어느 초등학교에 다니는 한 소녀가 선생님께서 들려주시는 토끼와 거북이 이야기를 듣게 되었습니다. (선생님은 N 세대가 아닙니다.) 그리고 토끼는 거만하게 낮잠을 자다가 거북이한테 진 것이다. 하는 생각을 하면서 집으로 돌아왔습니다. 이 소녀는 인터넷 항해를 하다가 오늘 선생님께서 들려주신 토끼와 거북이 이야기를  읽게 되었습니다. 그런데 선생님께서 들려주신 토끼 이야기와는 너무 다르게 전개된 이야기였습니다. (어떤 이야기인지는 이전 게시물 “[C#] 도대체 객체란 무엇인가?” 를 참고해주세요.) 토끼가 거북이를 위해 헌신했다는 거북이를 사랑한 토끼 이야기 였으니 소녀가 큰 충격을 받았겠죠? 다음 날 등교하자마자 선생님과 이야기를 나누기 시작합니다.

초등 소녀 : 선생님!! 어제 들려주신 이야기에 토끼가 경솔해서 졌다고 말씀하셨잖아요, 그거 거짓말이에요.

선생님 : 그게 무슨 소리니?

초등 소녀 : 토끼는 거북이를 사랑했고요, 그래서 자신감을 갖게 해 주기 위해서 경주를 한 것이래요.

선생님 : 세상에는 여러가지 성향의 토끼 이야기들이 존재할 수 있는 거란다.

초등 소녀 : 어쨌든 선생님, 토끼를 너무 미워하지 마세요.

초등학생 소녀는 여러가지 성격의 토끼를 접하게 되었습니다. 그렇습니다. 각각의 이야기 속에는 한 마리의 토끼가 등장하지만 여러가지 성향의 토끼가 존재하는 것입니다. 그럼 이제 위의 초등학생 소녀 이야기를 토대로 클래스는 무엇이며, 클래스와 객체와의 관계를 살펴보도록 하겠습니다.

 

Class_and_Object

 

이번 개념을 꾸준히, 잘 이해하신 분이시라면 위의 그림으로 클래스의 개념을 단방에 이해 하셨으리라 생각합니다. 이제 객체와 클래스를 정의해보겠습니다.

객체라는 것은 클래스의 구체화라고 표현할 수 있습니다. 토끼의 성격은 따로 존재하지 않습니다. 글쓴이 혹은 생각하는 사람에 따라 구체화되는 추상적인 것이죠. 객체는 그 추상적인 것을 구체적으로 나타내고 있습니다. 이것이 클래스와 객체라는 것입니다.

다시 말해 클래스는 추상적인 개념이고, 객체는 각각의 특성을 가질 수 있습니다. 클래스는 객체들을 통해서만 실현됩니다. 반면 객체는 모체 (母體) 인 클래스를 알아야 올바르게 이해 할 수 있습니다. 클래스는 하나이지만 객체의 개수는 무한하게 늘어날 수 있습니다.

 

인스턴스 (Instance) 화의 개념.

‘인스턴스 (Instance)’ 낮설게 느껴지는 단어입니다. 많은 분들이 N 모 검색사이트 용어 사전을 많이 찾아보는 용어 중 하나일 것입니다. 사전에서 정의된 의미로는 이 단어가 의미하는 바를 쉽게 이해할 수 없습니다. 하지만 예제로서 살펴보고 모두 소화하셨다면 쉽게 이해하실 수 있습니다. 이제 인스턴스 라는 단어에 찝찝함을 느끼지 않으셔도 됩니다.

인스턴스란, 앞에서 설명했던 바와 같이 “토끼 클래스를 꾀 많은 토끼 객체로 구체화한다.” 라는 개념 안에 바로 인스턴스의 의미를 가지고 있습니다. 바로 구체화한다는 작업 자체를 ‘인스턴스화 한다’ 라고 합니다. 바꾸어 표현해 보면, “토끼 클래스를 꾀 많은 토끼 객체로 인스턴스화 한다” 라고 표현 할 수 있는 것이죠. 모든 객체는 인스턴스화 되지 않으면 사용할 수 없다는 것도 언급해두겠습니다. 우리가 .NET 프로그래밍을 하다가 흔히 마주치게 되는 에러 메시지가 바로 인스턴스화가 이루어지지 않았다는 메시지입니다. 인스턴스화 의 의미를 아셨으니 이제 이러한 에러 메시지를 만나도 당황하실 일이 없겠죠? ^^

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s