Java를 흔히 객체지향언어라고 한다. 객체란 무엇인가? 객체는 현실 세계에서 접할 수 있는 모든 사물과 같은 개념이다. 가령 개를 예로 들겠다. 현실 세계에서 접하는 개라는 객체는 기본적으로 속성과 행동을 갖고 있다. 물론 이런 설명이 조금은 딱딱해 보이지만 궁극적인 목표는 프로그래밍이므로 객체지향 프로그래밍 방법론에 맞춰서 설명을 해야한다.
다시 개로 돌아가보자. 다시 한 번 얘기하지만 개는 속성과 행동을 가지고 있고 이것이 객체의 중요한 두가지 요소가 된다.
객체 (Object) = 속성 (Attribute) + 행동 (Operation)
조금 어려워졌다. 계속 진행해보자. 개를 다음과 같이 표현해보았다.

Java 언어로 코딩을 하기위해서는 위의 표현을 그대로 사용해도 좋겠지만 (유니코드를 지원하기 때문에 한글 이름 사용이 가능하다) 영어로 다시 설계를 해보겠다.

지금부터는 관례적인 표현임을 알려두겠다. 문법적으로 틀린 표현은 아니나 관례상 다음과 같이 사용한다.
클래스 이름은 대문자로 시작한다. 속성(필드, 멤버변수) 이름은 소문자로 시작한다. 동작(메서드) 역시 소문자로 시작한다. 2개 이상 단어가 사용될 때는 띄어 쓰기를 할 수 없기 때문에 두번째 단어의 첫글자를 대문자로 시작하여 읽기 편하게 한다.
그럼 위의 설계를 실제 Java 코드로 바꿔보겠다.
/**
* 클래스명 : Dog
* @author 정승용 (jeongsy10@empal.com)
*
*/
class Dog {
String kind; // 품종
int age; // 나이
String name; // 이름
String size; // 크기
String color; // 털 색깔
void seat() { } // 앉다
void standUp() { } // 일어서다
void run() { } // 달린다
void stop() { } // 멈춘다
void bark() { } // 짖는다
}이제 개의 설계도가 완성되었으니 개를 만들어 보겠다. 당연히 여기서 만들어지는 개는 컴퓨터의 메모리상에 존재하며 메모리상에 만들어진 개를 가리킬 변수가 필요하다.
/* 메모리상의 개를 가리키는 참조변수 사용 */
Dog d = new Dog();'d'는 메모리상에 실제로 만들어진 개(객체; Object)를 가리키는 객체참조 (object reference)이다. 'd'의 타입은 Dog 클래스와 같은 타입으로 선언한다. 메모리에 개를 만드는 명령은 'new' 연산자 이다. 결론적으로 위의 명령은 다음과 같다.
Dog 클래스 구조로 객체를 만들고, 이 객체를 Dog 타입의 d라는 이름의 객체참조로 가리킨다.이제부터 우리는 d라는 이름의 객체참조를 이용하여 Dog 객체를 사용할 수 있게 된다.
그럼 개에게 이름을 지어줘야겠다.
/* 개에게 이름짓기 */
d.name = "바둑이";d가 가리키는 객체의 필드(멤버변수)인 'name'에 '바둑이'라는 문자열을 할당한다.Java 문법책에는 멤버변수와 필드라는 이름이 사용된다. 여기서는 필드라고 부르겠다. 필드는 변수이다. 변수란 값을 저장하는 기억공간이며 그릇이다. 결국 name이라는 이름의 그릇에 '바둑이'라는 값을 할당(대입)한 것이다.
이번에는 개 객체(?)에게 짖도록 명령을 내려보겠다.
/* 객체가 짖도록 명령을 내림 */
d.bark();bark()는 메서드라고 하며 위의 문장은 다음과 같은 뜻을 갖는다.
d가 가리키는 객체에게 'bark()'라는 메세지(message)를 전달한다.bark() 메세지를 전달하기 위해서는 bark() 메서드를 호출(call)하면 된다.
(계속...)
Posted by 정샘
