현실세계의 실체를 관점과 목적에 따라 표현한 것을 객체라고 합니다.
객체는 상태(멤버필드)와 상태를 다루는 행동(메소드)으로 이루어져 있습니다.
현실세계를 보면 컴퓨터를 예로 들겠습니다. 컴퓨터를 보면 내부에 다양한 부품들이 존재합니다. 하지만 그 부품들을 저희는 전부 볼수는 없습니다. 내부부품은 볼 수 없지만 키보드, 마우스, 모니터 등은 볼 수가 있습니다. 그리고 키보드를 누르거나, 마우스는 움직이는 등의 행동을 통하여 컴퓨터를 사용하게 됩니다.
이렇듯 현실세상의 객체는 상태값(부품)을 가지고 행동(작동방법)을 하게 됩니다.
즉, 컴퓨터라는 객체는 마우스, 키보드 사용을 통해서 그 컴퓨터의 상태를 바꾸게 하는 것입니다.
이러한 객체는 클래스를 통해서 생성을 하게 되어 실질적으로 메모리(동적바인딩)에 올라가서 프로그램을 실행시키는 주체가 됩니다.
클래스를 만들 때 캡슐화와 정보은닉의 과정을 거쳐서 만들기에 그러한 클래스에서 생성된 객체는 캡슐화와 정보은닉을 제공하게 됩니다. 즉 이러한 객체는 내부정보가 외부에 노출되지 않기 때문에 프로그램의 추상화 정도가 높아지게 됩니다. 결론적으로 재사용성을 높이게 할 뿐 아니라 유지보수를 용이하게 합니다.
클래스에서 만들어진 것이 객체이기에 클래스처럼 유일한 식별자를 가져야 하고, 상태정보를 가져야 하며, 메소드를 가집니다. 이러한 객체가 의미 있는 모듈이 되기 위해서는 객체를 표현 할 수 있는 모든 조작방법을 만들어야 합니다.
객체가 소프트웨어의 주체이고 메모리 상에서 살아있는 모듈 단위이기 때문에 객체는 생명주기를 가집니다. 객체는 new operator로 생성되어 생성된 이후 객체들의 상태가 변경되기도 하고 메시지 전송을 통해 서로 다른 객체들 간에 정보를 주고 받고 상호작용을 하면서 프로그램을 실행하게 됩니다.
'IT > 개발' 카테고리의 다른 글
다형성(polymorphism) (0) | 2013.08.15 |
---|---|
상속(inheritance)과 확장(extend) (0) | 2013.08.15 |
레퍼런스(reference) 타입 (0) | 2013.08.14 |
클래스(class) (0) | 2013.08.13 |
객체지향(object oriented)의 개념 (0) | 2013.08.13 |