Object (객체)

분류없음 2007.04.02 09:31
객체란 이 세상 속의 여러가지 눈에 보이는 모든 것을 프로그래밍 언어로 옮겨오기 위한 기법이다.

이 세상 속에 존재하는 모든 것들은 각각 그것들의 특징과 행동을 갖고 있다. 흔한 예제는 자동차이지만 자동차는 잘 모르므로-_- 자전거를 예로 들면 자전거는 이런 특징(properties)을 가지고 있다.
  • 자전거의 종류(산악용, 경주용 등)
  • 경적의 유무
  • 라이트 플래시의 유무
  • 바퀴의 직경
  • 기어의 변속비
  • 짐칸의 여부
  • 기타 등등
그리고 자전거가 행할 수 있는 행동(method)에는 이런 것들이 있다.
  • 페달 밟기 (달리기)
  • 브레이크 (멈추기)
  • 기어 변속
  • 라이트 플래시 켜기
  • 라이트 플래시 끄기
  • 경적 울리기
자연계의 모든 존재들은 이러한 속성(properties- C++에서는 멤버 변수라 칭한다)과 메소드(method- C++에서는 멤버 함수라 칭한다)를 갖고 있다는 기본 발상 하에 프로그래머가 표현하려는 존재(이하 존재)를 구조체와 같이 여러가지 특징을 담을 수 있는 그릇을 생성한 후 그 존재의 속성과 메소드를 하나의 그릇 안에 담아서 생성해 낸 것을 객체라고 한다. 이 객체는 자연상의 존재를 표현할 수도 있지만 컴퓨터에서 사용하는 각종 UI용 컨트롤(버튼, 입력창 등)도 객체로 표현할 수 있다.

물론 이것은 어디까지나 개념적인 이야기이고 머릿속에 객체를 프로그램적으로 어떻게 표현할 것인가 하는 내용은 굳이 생각하지 않아도 된다. 그것은 클래스를 이해한 뒤 직접 클래스를 만들고 객체를 생성해 보면서 이해할 수 있기 때문이다. 객체를 어떻게 프로그램적으로 표현하는가 하면 클래스의 도움을 받아 객체를 표현하기 때문에 객체란 "현실 세계에 존재하는 사물을 프로그램으로 옮겨오기 위한, 특징과 행위를 가지는 하나의 단위"라고만 생각해 두는 것이 좋을 것 같다.

객체는 객체 지향 프로그래밍(OOP - Object-Oriented Programming)의 가장 핵심이 되는 기본적인 개념이다. 절차적 프로그래밍(Procedural Programming)과 구조적 프로그래밍(Structured Programming)을 사용할 때 함수의 개념이 없이는 아무것도 할 수 없듯이 객체 지향 프로그래밍시에는 객체에 대한 개념 없이는 객체 지향 프로그래밍의 특징을 이해할 수 없기 때문에 객체에 대한 정확한 이해는 필수적이다.
Posted by マサキ君