여러분 모두 ‘칼’(knife)이 무엇인지 알고 있다. 하지만 여러분 모두에게 칼을 그려 내라고 한다면 그 형태는 제각각일 것이다. 그 이유는 칼이라는 것이 너무 추상적이기 때문이다. 추상적인 대상은 다양한 방법으로 구체화될 수 있다. 대장장이가 일관된 형태의 칼을 떠낼 때 사용하는 거푸집은 추상적인 칼을 구체화하는 뼈대라고 볼 수 있다. 객체 모델(Object model)의 역할은 거푸집과 같다. 객체 모델은 임의의 추상적인 개념을 프로그래밍 언어의 실질적 형태로 어떻게 대응시킬 것인가를 정의하는 뼈대를 의미한다. 여러분들은 모두 스마트폰을 가지고 있을 것이다. 내 스마트폰을 어떻게 표현하는 것이 좋을까? 스마트폰을 설명하는 방법은 다양하다. 하지만 모든 사람들에게 이러한 양식에 맞추어 설명을 하라고 한다면 어떨까?
{
운영체제 : 안드로이드,
가로길이 : 10cm,
세로길이 : 15cm,
배터리용량 : 1000WH,
색상 : ...
기종 : ...
}
이런 양식을 사용한다면, 내 스마트폰도 양식에 맞춰 설명할 수 있고, 다른 사람들의 스마트폰도 위 포맷을 그대로 지키면서 설명할 수 있다. 이런 포맷을 객체 모델이라고 한다.
다양한 객체 모델
애플리케이션 모델