객체지향 역할, 책임, 협력 쉽게 이해하기
AI Store에서 AI코딩으로 만들어진 앱을 만나보세요!
지금 바로 방문하기

객체지향의 역할, 책임, 그리고 협력 쉽게 이해하기

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

개발 툴

대상자

소프트웨어 개발자(초보~중급), 객체지향 설계 원리 이해 및 실무 적용을 원하는 개발자

핵심 요약

  • 협력은 객체 간 메시지 주고받으며 공동 목표를 달성하는 상호작용 과정이다.
  • 역할은 협력 내에서 객체가 수행해야 할 기대되는 임무의 집합이며, 객체의 구체적 타입과 무관하게 정의된다.
  • 책임은 객체가 수행해야 할 행동(Doing) 또는 정보(Knowing)이며, 캡슐화협력의 일관성을 보장한다.

섹션별 세부 요약

  1. 협력의 정의
  • 협력은 시스템의 공동 목표를 달성하기 위해 객체 간 메시지 교환을 통해 이루어지는 과정이다.
  • 예: '커피 주문하기'는 손님, 캐시어, 바리스타의 협력을 통해 이루어진다.
  1. 협력의 중요성
  • 문제 해결: 복잡한 작업을 분할해 효율적으로 처리.
  • 유연성: 객체의 내부 구현 변경 시 다른 객체에 미치는 영향 최소화.
  • 재사용성: 협력 구조를 다른 시스템에 적용 가능.
  1. 역할의 정의와 중요성
  • 역할은 협력 내에서 기대되는 행동으로, 객체의 구체적 타입과 무관하게 정의된다.
  • 예: 캐시어 역할은 '주문 받기', '결제 처리' 등 여러 책임을 포함.
  • 유연성: 동일한 역할을 수행하는 다른 객체로 쉽게 대체 가능.
  1. 책임의 정의와 중요성
  • 행동(Doing): 객체가 수행해야 할 구체적 작업 (예: 캐시어가 주문 처리).
  • 정보(Knowing): 객체가 알고 있어야 할 데이터 (예: 바리스타가 커피 레시피를 안다).
  • 캡슐화: 내부 구현은 외부에 숨겨져야 하며, 협력의 일관성 유지.
  1. 역할과 책임 할당의 예시
  • 손님: 주문 결정, 결제, 커피 수령.
  • 캐시어: 주문 처리, 결제, 바리스타와의 전달.
  • 바리스타: 커피 제조, 완제품 전달.
  • 과도한 책임: 손님이 커피 제조까지 맡으면 역할 분리 실패로 시스템 복잡화.
  1. 협력, 역할, 책임의 관계
  • 협력역할 도출책임 할당 순서로 설계.
  • 예: '날기' 역할은 장난감 오리에게 부적합, '수영하기' 역할은 두 오리 모두 수행 가능.

결론

  • *객체지향 설계의 핵심은 협력 정의 → 역할 도출 → 책임 할당의 순서를 따르는 것이다. 협력의 맥락에 따라 역할과 책임이 결정되므로, 설계 시 협력의 문맥을 먼저 고려**해야 한다. 예시를 통해 보았듯, 책임 분리 실패는 시스템 유지보수를 어렵게 만들 수 있으므로, 각 객체의 역할과 책임을 명확히 정의하는 것이 중요하다.