본문 바로가기
탐구생활/독서

[객체지향의 사실과 오해] 01_협력하는 객체들의 공동체

by 왹져박사 2025. 2. 10.

01_협력하는 객체들의 공동체

“객체들의 패러다임의 핵심은 자율적인 객체들의 협력

객체지향의 목표는 실세계를 모방하는 것이 아니라,

고객과 사용자를 만족시키는 신세계를 창조하는 것.

 

협력하는 사람들

요청-응답-협력, 역할-책임

 

역할, 책임, 협력

적절한 객체에게 적절한 책임을 할당하는 것.

책임은 객체지향 설계의 품질을 결정하는 가장 중요한 요소.

객체의 역할

  • 여러 객체가 동일한 역할을 수행할 수 있다.
  • 역할은 대체 가능성을 의미한다.
  • 각 객체는 책임을 수행하는 방법을 자율적으로 선택할 수 있다.
  • 하나의 객체가 동시에 여러 역할을 수행할 수 있다.

 

협력 속에 사는 객체

객체는 어플리케이션의 기능을 구현하기 위해 존재한다.

객체지향 어플리케이션의 아름다움을 결정하는 것 → 협력

협력이 얼마나 조화를 이루는 가를 결정하는 것 → 객체

결국, 협력(어플리케이션)의 품질을 결정하는 것은 객체의 품질

 

이를 위해, 객체가 갖춰야 할 덕목

  1. 객체는 충분히 ‘협력적’이어야 한다. 스스로 모든 것을 처리하려는 객체는 내부적인 복잡도에 의해 자멸하고 만다.
  2. 다른 객체의 요청, 다른 객체에게 요청에 열려 있어야 한다.
  3. 객체는 충분히 ‘자율적’이어야 한다.
  4. 다른 객체가 요청한 응답 여부나, 응답 방식은 객체 스스로 판단하고 결정한다.

 

객체지향 설계의 묘미

다른 객체와 조화롭게 협력할 수 있을 만큼 충분히 개방적인 동시에

협력에 참여하는 방법을 스스로 결정할 수 있을 만큼 충분히 자율적인 객체들의 공동체를 설계하는 것!

 

과거의 전통적인 개발 방법과는 다른 객체지향의 핵심은,

데이터(상태)와 프로세스(행동)를 객체라는 하나의 틀 안에 함께 묶어 객체의 자율성을 보장한다.

이러한 자율적인 객체로 구성된 공동체는 유지보수가 쉽고,

재사용이 용이한 시스템을 구축할 수 있는 가능성을 제시한다.

 

객체 간의 의사소통 수단: 메시지

수신된 메시지를 처리하는 방법: 메서드

 

다른 프로그래밍 언어와 구별되는 핵심적인 특징

메시지를 수신한 객체가 실행 시간에 메서드를 선택할 수 있다.

메시지와 메서드의 분리 → 객체의 협력에 참여하는 객체들 간의 자율성 증진.

캡슐화(encapsulation)와 깊은 관련.

 

객체지향의 본질

“객체”지향 어플리케이션이란,

역학을 가진 객체들이 그 책임을 다하며, 메시지를 주고받으며 협력하는 동적인 관계.

클래스는 이를 구현하는 메커니즘일 뿐!