[객체지향의 사실과 오해] 역할, 책임, 협력 -3

2025. 3. 27. 14:51·📚 개발자의 서재/객체지향의 사실과 오해
해당 포스팅은 조영호 작가님의  객체지향의 사실과 오해 (P.~)를 읽고 정리한 글입니다.

 

역할

협력의 추상화

역할의 가장 큰 가치는 하나의 협력 안에 여러 종류의 객체가 참여할 수 있게 함으로써 협력을 추상화할 수 있다는 것이다. 역할을 이용하면 협력을 추상화함으로써 단순화할 수 있다. 구체적인 객체로 추상적인 역할을 대체해서 동일한 구조의 협력을 다양한 문맥에서 재사용할 수 있는 능력은 과거의 전통적인 패러다임과 구분되는 객체지향만의 힘이다. 그리고 그 힘은 근본적으로 역할의 대체 가능성에서 비롯된다.

 

대체 가능성

역할은 협력 안에서 구체적인 객체로 대체될 수 있는 추상적인 협력자이다. 객체가 역할을 대체하기 위해서는 행동이 호환돼야 한다는 점을 주목해야 한다.

 

객체가 역할에 주어진 책임 이외에 다른 책임도 수행할 수도 있다. 즉, 객체는 역할이 암시하는 책임보다 더 많은 책임을 가질 수 있다. 따라서 대부분의 경우에 객체의 타입과 역할 사이에는 일반화/특수화 관계가 성립하는 것이 일반적이다.

 

역할의 대체 가능성은 행위 호환성을 의미하고, 행위 호환성은 동일한 책임의 수행을 의미한다.

 

객체의 모양을 결정하는 협력

흔한 오류

객체가 존재하는 이유는 행위를 수행하며 협력에 참여하기 위해서이다. 따라서 실제로 중요한 것은 객체의 행동, 즉 책임이다. 객체지향의 핵심은 클래스를 어떻게 구현할 것인가가 아니라 객체가 협력 안에서 어떤 책임과 역할을 수행할 것인지를 결정하는 것이다. 애플리케이션에 적합한 객체를 설계하기 위해서 협력이라는 문맥 안에서 모든 걸 고려해야 한다.

 

협력을 따라 흐르는 객체의 책임

  1. 깔끔한 협력을 설계
  2. 객체들이 주고받을 요청과 응답의 흐름이 결정
  3. 요청과 응답의 흐름이 객체가 협력에 참여하기 위해 수행될 책임이 됨
  4. 책임은 객체가 외부에 제공하게 될 행동이 됨
  5. 행동을 정하게 되면 수행하는데 필요한 데이터를 고려
  6. 필요한 데이터와 행동이 결정된 후 클래스의 구현 방법을 결정

객체지향이 올바른 객체에 올바른 책임을 할당하는 것과 관련된 모든 것이라면 협력이라는 문맥 안에서 객체를 생각하는 것은 올바른 객체지향 애플리케이션을 구현하는 것과 관련된 모든 것이다. 

 

저작자표시 비영리 변경금지

'📚 개발자의 서재 > 객체지향의 사실과 오해' 카테고리의 다른 글

[객체지향의 사실과 오해] 책임과 메시지 -1  (0) 2025.03.29
[객체지향의 사실과 오해] 역할, 책임, 협력 -4  (0) 2025.03.28
[객체지향의 사실과 오해] 역할, 책임, 협력 -2  (0) 2025.03.26
[객체지향의 사실과 오해] 역할, 책임, 협력 -1  (0) 2025.03.25
[객체지향의 사실과 오해] 타입과 추상화 -5  (0) 2025.03.24
'📚 개발자의 서재/객체지향의 사실과 오해' 카테고리의 다른 글
  • [객체지향의 사실과 오해] 책임과 메시지 -1
  • [객체지향의 사실과 오해] 역할, 책임, 협력 -4
  • [객체지향의 사실과 오해] 역할, 책임, 협력 -2
  • [객체지향의 사실과 오해] 역할, 책임, 협력 -1
l'avenirJun
l'avenirJun
  • l'avenirJun
    오늘도 꾸준히 개발
    l'avenirJun
  • 전체
    오늘
    어제
    • 분류 전체보기 N
      • 📚 개발자의 서재 N
        • 객체지향의 사실과 오해
        • Good Code, Bad Code
        • 도메인 주도 개발 시작하기 N
      • 🔧 트러블 슈팅
      • Java
      • Spring
      • 운영체제
        • 공룡책 학습
      • 알고리즘
      • GIT
      • 면접 지식
      • Spring 단기심화 2기
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    애그리거트 루트
    모듈화
    티스토리챌린지
    추상화
    유스케이스
    코드 계약
    캡슐화
    코드트리
    애그리거트
    책임-주도 설계
    매핑 구현
    도메인 모델
    good code bad code
    타입
    DIP
    객체
    책임
    인터페이스
    리포지터리
    객체지향의 사실과 오해
    도메인 주도 개발 시작하기
    표현 영역
    코딩테스트
    협력
    가독성
    specification
    메시지
    역할
    오블완
    코딩트리조별과제
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
l'avenirJun
[객체지향의 사실과 오해] 역할, 책임, 협력 -3
상단으로

티스토리툴바