C# :: For Beginners

[C#] 도대체 객체란 무엇인가?

Overview

‘객체란 무엇인가’ 라는 이 질문에 명확하고 간결한 답은 존재하지 않습니다. 처음 프로그래밍을 공부하시는 분이 객체라는 개념을 완전히 이해하기 위해서는 평균적으로 빠르면 6 개월에서 길면 2 년까지의 기간이 필요합니다.

그리고 가장 중요한 사실은 객체가 무엇인지 이해를 하신 분이 있다고 하여 반드시 그 분이 객체 지향적인 프로그래밍을 하고 있다는 논제도 올바른 것은 아닙니다.

객체라는 개념을 제대로 이해하시기 위해서는 객체가 가지고 있는 여러가지 특성들을 살펴보고 스스로 연구해보고 설계해보는 절대적인 노력이 필요합니다.

이러한 노력들이 쌓여서 그것이 습관으로 나타나게 될 때 바로 우리는 객체지향적인 프로그래밍을 하고 있다고 말할 수 있게 될 것입니다.

그럼 이번 포스팅에서는 먼저 객체라는 단어가 낮선 분들을 위해서 객체의 정의를 보다 명확하게 다져보고 또, 객체와 클래스의 관계 역시 이해해보도록 하겠습니다.

OOP 기법, OOP 언어라는 표현들을 많이 들어보셨을 것입니다. OOP 를 직역해보면 Object Oriented Programming, 즉 객체를 지향하는 프로그래밍이라는 뜻인데요, 이러한 객체 지향 프로그래밍을 하기 위해 가장 먼저 알아야 할 개념이 객체입니다. 이제 몇 가지 예시를 통해서 객체라는 것이 무엇인지 알아보도록 합시다.

 

Grammar

여러분이 국어 시간에 공부했던 내용을 복습해보도록 하겠습니다.
국어 사전을 참고해보시면 객체를 다음과 같이 정의하고 있습니다.

 

객체 : 작용이나 동작의 ~~ 대상, ~~ 이 되는 것, 다시 말해. 행위가 미치는 목적물.

 

그렇다면 국어 시간에 배운 내용을 기반으로 여러분의 응용력을 한번 테스트 해 볼까요?

 

아래 세 가지 문장에서 객체는 어떠한 것인지 한번 생각해보세요.
(함정도 있으니 주의하시구요!)

1.  어머니께 갖다 드려라.
2.  할머니께서 오셨다.
3.  할아버지를 찾아 봽겠습니다.

 

사전에서 정의하고 있는 그 객체를 찾아 보셨나요? 너무 어렵나요? 에이… 국어는 저희 모국어이기 때문에 아주 쉽게 사전 그대로 이해하셔서 풀어보시면 답이 보이실 거에요

사전에서 객체는 ‘대상이 되는 것’, 그리고 ‘목적물’ 이라고 정의하고 있습니다. 그렇다면 1번 문장부터 차례대로 같이 풀이해볼까요?

 

1번 )
이 문장은 ‘어머니’ 가 객체가 되고 ‘갖다 드려라’ 가 행동이 됩니다. 사전에서 정의하고 있는 대상이 되는 것과 목적물이 명확하죠. 갖다 드리는데, 어머니께 갖다 드리라는 의미이죠.

 

2번 )
이 문장은 함정이었습니다. 이 문장에는 객체가 존재하지 않습니다. 문제를 푸시면서 ‘문장이 이상한데’ 라는 생각이 드셨던 분들에게 작은 박수를 보내드리겠습니다. 일단 깊게 생각하시지 마시고, 다음 문제로 넘어가도록 할게요.

 

3번 )
이 문장에서는 ‘할아버지’ 가 객체가 되고, ‘찾아뵙는 것’ 이 행동이 됩니다,

 

문법적으로 설명하고 있는 객체라는 의미는 이러합니다. 이제 어느정도 객체에 대해 이해를 하셨나요? 여기서는 ‘대상이 되는 것’ 과 ‘목적물’ 정도로 대략 머리에 넣어 두고 다음으로 넘어가도록 하겠습니다.

 

예화로 이해해보는 객체.

앞의 예제들이 이해가 잘 되지 않았다고 너무 소침해지실 필요는 없습니다. 더욱 더 쉬운 예제를 준비해보았거든요. 요즈음 N 세대 사이에서 많이 알려진 N 세대판 토끼와 거북이 이야기를 공유해드리도록 하겠습니다. 제목은 ‘거북이를 사랑한 토끼 이야기’ 입니다.

 

[ 거북이를 사랑한 토끼 이야기 ]

 

Turtle_and_Rabbit

 

옛날에 거북이를 사랑한 토끼가 있었습니다. 토끼는 혼자 속으로만 사랑했기 때문에 아무도 토끼가 거북이를 사랑하는 줄 몰랐고, 거북이도 눈치채지 못했습니다. 그런데 토끼는 한 가지 아픔을 가지고 있었습니다. 그것은 거북이가 자신의 느린 걸음을 너무 자학한다는 것이었습니다. 그런 거북이의 모습을 볼 때마다 토끼는 마음이 너무 아파서 거북이에게 자신감을 심어주고 싶었습니다.

그래서 어느 날 거북이에게 말했습니다. “거북아! 나랑 달리기 해 보지 않을래?” 그 날 따라 거북이는 투지가 생겼습니다. 질 때는 지더라도 토끼와 같이 달려봐야지 하고 마음먹었습니다. “그래! 한 번 붙어보자!” 그렇게 토끼와 거북이의 경주가 시작되자, 순식간에 토끼는 저만치 앞서갔습니다. 그러면서도 뒤따라오는 거북이만 생각했습니다. “포기하면 어떡하지? 중간 쯤 가서 기다려주자!” 그런데 그냥 눈을 뜨고 거북이를 쳐다보며 기다리면 북이가 자존심이 상할까봐 토끼는 길에 누워 자는 척 했습니다. 거북이가 가까이 오면 잠자던 자기를 깨워주고 함께 나란히 언덕으로 올라가는 아름다운 꿈을 꾸고 있었습니다. 그러나 거북이는 토끼 옆을 지나면서도 토끼를 깨워주지 않았습니다. 자는 척 하던 토끼는 눈물을 흘렸습니다.

결국 거북이가 경주에서 이기게 되었습니다. 경주 후에 동물 식구들과 후세 사람들로부터 거북이는 “근면하고 성실하다” 라는 칭찬을 듣게 되었고, 토끼는 ‘교만하고 경솔하다’ 는 비난을 받게 되었습니다. 그러나 토끼는 남 몰래 눈물을 흘리며 그 모든 비난을 감수했습니다. 왜냐하면 사랑하는 거북이의 기쁨이 자기 기쁨이었기 때문입니다.

사랑이 무엇입니까? 티 내지 않는 것이 사랑이고, 소리 없는 헌신이 사랑이고, 양보하는 것이 사랑이고, 사랑하는 대상이 높여지고 내가 무너지기를 기뻐하는 것이 바로 사랑입니다.

 

너무 슬픈가요? 일단 공부를 해야 하므로 슬프셔도 눈물은 자제해주시기를 부탁드립니다. >0< 객체를 쉽게 설명하기 위해 N 세대판 토끼와 거북이 예화를 끌어들여 보았습니다. 여기서 일반적으로 알려진 토끼와 이 예화에 소개된 토끼를 비교해보도록 하겠습니다.

 

Object_Example

 

객체란 이런 것이다.

객체에 대한 이야기의 본론으로 들어가 보겠습니다. 공유해드린 이야기 안에서 객체 (Object) 는 바로 토끼가 되는 것입니다. 토끼는 실제로 존재하지만 실제로 존재하지 않는 가상의 객체도 [객체] 가 될 수 있는 것입니다. 이야기 안의 토끼는 글쓴이의 생각에 따라서 여러가지 관점으로 표현할 수 있습니다. 하지만 각자 자신이 생각하고 있는 특징이나 행동들은 필수적으로 뚜렷하게 가지고 있습니다. 그럼 객체에 대해 마지막으로 정리해보도록 하겠습니다.

 

  •  객체는 고유 이름이 존재합니다 : 거북이를 사랑한 토끼 소녀, 경솔한 토끼
  •  객체는 특징과 행동이 있습니다.
  •  객체의 수는 무제한으로 늘어날 수 있습니다.

 

객체 지향 개념에서 가장 기본이 되는 것, 바로 객체에 대해 이야기를 나누어 보았습니다.

지금은 이해가 되실 지 몰라도 다음 시간에 다룰 클래스, 인스턴스와 같은 개념과 충돌이 생길 확률이 높으므로 여기까지 다루었던 객체 개념은 반드시 이해를 하고 넘어가도록 합시다. ^0^

고맙습니다.

Advertisements

2 comments

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