[객체지향의 사실과 오해 | 조영호]06장: 객체 지도

2025. 11. 14. 23:27·IT서적/객체지향의사실과오해
728x90

06 / 객체지도

1. 기능 설계 vs 구조 설계

  • 기능 설계: 사용자를 위해 무엇을 할 수 있는가에 초점 (행위, 책임)
  • 구조 설계: 제품의 형태가 어떠해야 하는가에 초점 (개념, 관계)
  • 두 가지는 함께 조화를 이루어야 하며,
    → 좋은 기능 + 빠르고 안정적인 확장성을 동시에 달성해야 한다.

2. 두 가지 재료

안정적인 재료: 구조

  • 사용자/이해관계자의 관점을 반영한 도메인 모델이 핵심.
  • 도메인: 사용자가 프로그램을 사용하는 대상 분야 (예: 게임, 은행, 병원 진료).
  • 도메인 모델: 도메인 개념과 관계를 추상화한 사용자 관점의 구조적 모델.
  • 소프트웨어 객체는 도메인 객체를 은유해야 한다.

불안정한 재료: 기능

  • 사용자의 목표를 충족하기 위해 필요한 시스템의 행위.
  • 유스케이스: 사용자와 시스템 간의 상호작용 흐름을 이야기 형식으로 정리.
  • 기능은 자주 바뀌므로 구조보다 불안정하다.
  • 유스케이스는 도메인/객체를 자동으로 만들지 않음 → 단지 힌트와 영감 제공.

3. 기능과 구조의 통합

  • 책임-주도 설계(RDD)
    1. 요구사항 식별
    2. 도메인 모델 생성
    3. 클래스에 메서드 추가
    4. 객체 간 메시지 전송 정의
  • 원칙:
    • 안정적인 도메인 모델을 기반으로 시스템 기능을 구현한다.
    • 기능(책임)을 구조(도메인 모델)에 담아내어 변경 파급효과를 줄인다.
    • 도메인 모델과 코드를 최대한 밀접하게 연결해야 한다.

4. 도메인 모델과 유스케이스

  • 도메인 모델:
    • 이해관계자가 도메인을 바라보는 멘탈 모델.
    • 중요한 개념과 관계를 추상화하여 구조화.
    • 핵심은 사용자 관점 반영.
  • 유스케이스:
    • 사용자의 목표를 중심으로 상호작용과 흐름을 정리.
    • 기능적 요구사항을 스토리 형태로 표현.

5. 설계의 기본 능력

  • 불안정한 기능을 안정적인 구조에 담아내는 것.
  • 이렇게 하면 변경에 대한 파급효과 최소화 가능.
  • 훌륭한 객체지향 설계자는 이를 통해 유연하고 견고한 시스템을 만든다.

예시 인사이트

  • 도메인 개념: 정기 예금, 계좌, 이자율
  • 객체는 상태와 행위를 스스로 관리하는 자율적 존재.
  • "이자는 이자율에 의해 생성된다 → 이자를 계산하는 책임은 이자율 객체에게 있다."
    → 책임을 올바르게 분배한 좋은 예시

다형성: 객체 타입이 달라지면 메서드 동작이 달라짐 → SimpleInterest vs CompoundInterest.
전략 패턴: 객체는 그대로 두고 내부의 알고리즘(전략) 객체를 갈아끼움 → InterestRate 안에서 SimpleInterestStrategy ↔ CompoundInterestStrategy 교체.
차이점 = 무엇을 바꿔서 동작을 다르게 하느냐

다형성 → 클래스 자체
전략 패턴 → 행위(알고리즘) 객체


한 줄 정리:
객체지향 설계는 “변하기 쉬운 기능”을 “안정적인 도메인 구조” 위에 책임으로 배치해, 사용자 관점을 반영하면서도 유연하고 확장 가능한 시스템을 만드는 과정이다.

728x90
반응형

'IT서적 > 객체지향의사실과오해' 카테고리의 다른 글

[객체지향의 사실과 오해 | 조영호]07장: 함께 모으기  (0) 2025.11.14
[객체지향의 사실과 오해 | 조영호]05장: 책임과 메시지  (0) 2025.11.14
[객체지향의 사실과 오해 | 조영호]04장: 역할, 책임, 협력  (0) 2025.11.14
[객체지향의 사실과 오해 | 조영호]03장: 타입과 추상화  (0) 2025.11.14
[객체지향의 사실과 오해 | 조영호]02장: 이상한 나라의 객체  (0) 2025.11.14
'IT서적/객체지향의사실과오해' 카테고리의 다른 글
  • [객체지향의 사실과 오해 | 조영호]07장: 함께 모으기
  • [객체지향의 사실과 오해 | 조영호]05장: 책임과 메시지
  • [객체지향의 사실과 오해 | 조영호]04장: 역할, 책임, 협력
  • [객체지향의 사실과 오해 | 조영호]03장: 타입과 추상화
lakedata
lakedata
lakedata 님의 블로그 입니다.
  • lakedata
    lakedata 님의 블로그
    lakedata
  • 전체
    오늘
    어제
    • 분류 전체보기 (193)
      • cs (85)
        • dev (28)
        • sec (31)
        • ops (25)
      • 자격증 (32)
        • 정보처리기사 (20)
        • 정보보안기사 (1)
        • aws dva (6)
        • aws dop (2)
      • IT서적 (27)
        • 클린아키텍처 (10)
        • 객체지향의사실과오해 (7)
        • 오브젝트 (10)
      • 알고리즘과 CTF (44)
        • 알고리즘 (20)
        • 백준 (13)
        • 프로그래머스 (7)
        • CTF (2)
  • 블로그 메뉴

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

    • github
  • 공지사항

  • 인기 글

  • 태그

    docker
    Java
    알고리즘
    CS
    Security
    Spring
    AWS
    SQL
  • 최근 댓글

  • 최근 글

  • 반응형
    250x250
  • hELLO· Designed By정상우.v4.10.3
lakedata
[객체지향의 사실과 오해 | 조영호]06장: 객체 지도
상단으로

티스토리툴바