Language
한국어

객체, 클래스, 인스턴스

조회 수 2753 추천 수 0 2007.09.27 10:53:18

객체와 클래스와 인스턴스의 관계... 

객체는 속성(데이타)과 행위(함수)를 갖는 것을 말합니다. 객체지향형프로그램이란 이런한 객체를 만들수 있는 프로그램을 의미합니다.

프로그래밍이 아닌 실세계에서 동물은 모두 객체라고 할 수 있겠지요. 왜냐하면 동물은 속성(무게, 길이, 나이 등)이 있고 행위(숨쉰다, 달린다, 날아간다, 먹는다)

클래스는 그런 객체들을 같은 속성과 행위를 가진 것으로 분류해 놓은 것을 말합니다.

동물에서 같은 속성과 행위를 가진 것으로 분류를 하면, 동물은 어류,조류,포유류로 나누어 질 수 있지요. 어류는 헤엄치고, 물속의 산소로 호흡합니다. 또 조류는 날아다니고, 알을 낳습니다. 포유류는 젖을 먹고 육지에서 걸어다니지요.

클래스는 좀더 상세하게 나누어 질 수 있습니다. 예를 들어 포유류는 사람, 개, 고양이, 말 등등으로 나누어질 수 있습니다. 사람, 개, 고양이, 말은 모두 젖을 먹고 육지에서 걸어다니지만, 속성이나 행위가 다른 부분도 있습니다. 사람은 말을 하고, 두발로 걷고, 팅도하고 등등..
따라서 클래스는 상위클래스와 하위클래스로 확장될 수 있습니다. 즉 동물(상위)과 포유류(하위), 포유류(상위)와 사람(하위)와 같이 말입니다.

인스턴스는 클래스에 의해 생성되는 각각을 지칭합니다.
예를들어 사람이라는 클래스 안에는 홍길동, 성춘향, 임꺽정, 죠지 부시, 후세인 등의 인스턴스가 있습니다.

프로그램에서는 class라고 선언하고 만드는 부분이 클래스이고 new라고 해서 객체를 만들면 이 것이 인스턴스가 되지요. 인스턴스는 필요한 만큼 만들 수 있지요. 또한 각각의 인스턴스가 생겨날 때마다 컴퓨터 메모리를 차지하지요.

종종 객체(object)라는 용어는 클래스나 인스턴스와 혼용해서 사용하기도 합니다. 
 

메시지

연결된 객체 사이에는 메시지(Message)를 전달하여 오퍼레이션을 수행하게 합니다. 예를 들어 TV 와  리모콘이 있습니다. 리모콘은 센서를 통하여 티비의 센서에게 메시지를 전달하여 채널이동이나 다른 작동을 하게 됩니다. 객체지향 프로그램에서는 마치 데이타 통신에서와 같이 정보를 메시지라는 덩어리는 서로 주고 받으며, 이 메시지 교환이 객체들 사이에 정보를 주고 받는 유일한 수단이다. 따라서, 하나의 객체지향 프로그램은 메시지 교환을 하며 통신하는 여러개의 객체들로 이루어진다고 정의할 수 있다.   객체는  여러  가지의  인터페이스를  제공 합니다. 예를들어 TV의 인터페이스 (사람에게 제공하는 인터페이스: 버튼, 리모콘에게 제공하는 인터페이스: 적외선  수신기)를 통해 제공합니다. 하나의 메시지는 메시지를 받을 수신 객체(receive object)가 누구인가를 명시하며, 그 수신 객체가 수행해야 할 함수의 이름을 지정하고 그 함수를 실행시 요구되는 인자들(arguments)을 포함하고 있다. 실제로 메시지를 보내는 구문은 언어에 따라서 다소 차이가 있지만, 대체로 다음과 같은 것이 메시지의 일반적인 형태이다. <수신 객체><- <함수이름><필요한 인자들> 예를 들어, 한 '점'이라는 객체에 C++에서는 다음과 같이 메시지를 보낸다. myPoint.move(10, 15) 여기서 "myPoint"는 한 점을 나타내는 객체이며 다음 부호 "."는 "move"라는 메시지가 "myPoint"라는 객체에게로 전해진다는 메시지 전달의 표현이다. 괄호 안의 숫자들은 인자들이다. 
 

List of Articles
번호 제목 날짜 조회 수