객체
객체(object)란 보고 만질 수 있는 것, 지성적으로 이해할 수 있는 것, 생각이나 행동이 추구하는 바를 말한다. 또는 문제영역에서 잘 정의된 역할을 갖고 있는 각각에 대해서 구별할 수 있는 품목(item), 단위(unit), 개체(entity)라 정의하기도 하며 단순히, 정의된 경계를 갖고 구별되는 어떤 것이라 말할 수도 있다.
다시 말해서 객체는 학생, 교실, 책 같은 생각할 수 있는 모든 사물이나 공부, 수학 같은 개념상으로 존재하는 것 등 모든 것이 될 수 있다. 좀 더 구체적으로, 문제영역에 속한 사물 중에 관리의 필요성이 있거나 중요한 개념이라면 더 좋은 객체가 될 수 있다.
시스템의 관점에서 본다면 어떤 상태(state)를 나타내는 데이터의 구조와 동작을 수행하는 연산(operation)으로 이루어진 프로그램의 한 요소이다. 여기서의 연산을 객체지향에선 메소드(method)라고 한다. 이렇게 객체의 상태는 데이터에 의해 결정되고 동작은 메소드에 의해 결정된다.
메시지
홀로 존재하는 객체는 아무런 의미가 없다. 대부분의 객체는 무언가를 실행하기 위해서 다른 객체를 필요로 한다. 예를 들어, 선생님은 학생과의 관계에서 존재의 의미가 있고 수업을 하고 평가를 하는 등의 상호작용을 일으킨다. 이러한 상호작용은 메시지(message)를 통해서 이루어진다.
메시지는 세부분, 즉 메시지를 받는 수신자 객체(receiver)의 이름과 수신자가 수행할 메소드(method)의 이름, 메소드 수행시 전달되는 인자(argument)로 구성된다. 객체지향 프로그래밍에서 쓰는 용어인 메소드(method)는 메시지와 동의어이며 일반적으로 함수(function)와도 같은 개념이다.
예를 들어 myCustomer라는 객체에게 메시지를 보내는 Java 문장에서,
myCustomer.addToOrder(itemNumber, price, quantity);
수신자는 myCustomer, 메소드는 addToOrder, 인자는 itemNumber, price, quantity의 3개가 된다.
클래스
모든 객체는 반드시 클래스를 통해서만 정의될 수 있다. 클래스는 객체의 타입을 정의하는 템플릿(template)으로서, 여러 객체의 공통적인 속성(attribute)과 메소드(method)를 가지고 있는 클래스가 먼저 정의되면, 이 클래스를 통해서 다시 객체가 정의되는 것이다.
이를 테면 회사라는 조직에는 많은 사원들이 있고, 이들 중에는 이과장도 있고 김대리도 있다고 하자.
이들을 시스템으로 표현하려면 많은 공통적인 요소, 즉 속성들이 있는데, 성명, 사번, 부서, 급호 등이 그것이다. 급여계산이나 업무처리는 메소드가 될 것이다. 이러한 속성과 메소드를 가지는 사원은 클래스가 되고 이를 통해 이과장, 김대리 등의 객체가 만들어진다.
이렇게 한 클래스에 속하는 각각의 객체를 그 클래스의 인스턴스(instance)라고 하고, 객체들의 유형이 되는 클래스를 객체의 타입(object type)이라고 한다.
'프로그래밍이야기 > 기타 등등' 카테고리의 다른 글
| 서블릿(Servlet) -> JSP -> EL/JSTL[ 왜... Sun은 웹에 java를 올리기 싫어하는가??] (0) | 2024.01.18 |
|---|---|
| Call by Value & Call by Reference[콜바이벨류 & 콜바이레퍼런스] (0) | 2024.01.18 |
| 헷갈리는 콜백(CallBack)함수 (0) | 2024.01.18 |
| 객체지향의 핵심원리 - 추상화/캡슐화/상속성/다형성 (0) | 2024.01.18 |
| 객체지향 프로그래밍이란? 간단하게 개념부터 잡기 (0) | 2024.01.18 |