전통적인 관점의 객체지향

MinHwi·2022년 11월 18일
0
  • 공부 내용 : 객체지향의 사실과 오해 1장
  • 공부 기간 : 2022년 11월 8일 화요일

질문

  1. 객체 지향이 실세계의 모방이라는 설명은 왜 비현실적인가? 그럼에도 사용하는 이유는 무엇인가?
  2. 객체 지향 애플리케이션의 윤곽을 결정하는 것은 무엇인가?
  3. 협력에 참여하기 위해 객체는 어떤 조건을 만족해야 하는가?
  4. 객체 지향에서 객체는 어떻게 협력하는가?

기억하고 싶은 것

객체지향 애플리케이션의 공동 목표는 애플리케이션 기능이며, 작은 역할을 가진 객체들이 각자의 책임을 다하여 협력해서 목표를 이룬다. 객체는 협력적이어야 하며 동시에 자율적이어야 한다. 객체는 메시지를 통해 다른 객체에게 책임을 수행할 것을 요청한다.

1. 객체 지향이 실세계의 모방이라는 설명은 왜 비현실적인가? 그럼에도 사용하는 이유는 무엇인가?

현실의 객체에 직접적으로 대응되는 소프트웨어 객체의 유사성은 거의 없다. 그럼에도 이 비유는 객체지향 설계의 핵심 사상인 연결완전성을 설명하는데 적합하다.

  • 캡슐화, 자율성 : 객체를 스스로 생각하고 스스로 결정하는 현실 세계의 생명체에 비유
  • 메시지, 협력 : 현실 세계의 사람들이 암묵적인 약속과 명시적인 계약을 기반으로 협력하여 목표를 달성하는 과정

2. 객체 지향 애플리케이션의 윤곽을 결정하는 것은 무엇인가?

역할, 책임, 협력이다. 객체 지향 애플리케이션의 공동의 목표는 기능이다. 애플리케이션의 기능은 더 작은 책임으로 분할되고 책임은 적절한 역할을 수행할 수 있는 객체에 의해 수행된다. 객체는 자신의 책임을 수행하는 도중에 다른 객체에게 도움을 요청하기도 한다. 결론적으로 시스템은 연쇄적인 요청과 응답의 흐름으로 구성된 협력으로 구현된다.

3. 협력에 참여하기 위해 객체는 어떤 조건을 만족해야 하는가?

객체는 충분히 협력적이어야 한다. 객체는 다른 객체의 요청을 수신할 수 있고 다른 객체에게 도움을 요청할 수 있을 정도로 열려있어야 한다.

객체는 충분히 자율적이어야 한다. 외부가 아닌 자신이 스스로 자신의 상태를 결정할 수 있어야 한다. 다른 객체의 요청에 응할지 여부는 객체가 스스로 결정한다. 요청에 응해 책임을 수행할 때도 다른 객체의 명령에 복종하는 것이 아니라 요청이 응답할 뿐이다.

4. 객체 지향에서 객체는 어떻게 협력하는가?

객체는 다른 객체와 협력하기 위해 메시지를 전송한다. 메시지의 수신자는 요청에 응할 것인지를 판단하고 자신만의 방법에 따라 메시지를 처리하는데, 이처럼 객체가 수신된 메시지를 처리하는 방법을 메서드라고 부른다. 메시지를 수신한 객체는 실행 시간에 메서드를 선택할 수 있다. 커피 주문에서 바리스타는 커피 머신을 이용해 커피를 제조할 수도 있고, 커피머신을 사용하지 않고 수작업으로 커피를 제조할 수도 있다. 이렇게 외부의 요청을 표현하는 메시지와 요청을 처리하는 구체적인 방법인 메서드를 분리하는 것은 객체의 자율성을 높이는 핵심 메커니즘이다.


profile
딩가딩가 백엔드 개발자

0개의 댓글