오브젝트 (1)

2025. 4. 1. 13:04·Book/DEV

이 포스팅은 오브젝트(조영호)를 읽으면서 정리한 글입니다

객체지향 설계

서로 협력하고 의존하는 객체들의 공동체를 구성하는 과정.
불필요한 의존성을 제거하고, 최소한의 의존성만 유지하여 유연하고 확장 가능한 시스템을 만들자.


객체지향 프로그래밍

데이터와 프로세스(행위)가 하나의 객체(모듈) 안에 함께 존재하도록 구성하는 프로그래밍 방식.
→ 즉, 데이터와 해당 데이터를 다루는 로직이 같은 객체 안에 캡슐화된다.


객체지향 설계 요소

협력

시스템 기능을 구현하기 위해 객체들이 메시지를 주고받으며 상호작용하는 과정

역할

객체가 협력 안에서 수행해야 할 책임의 집합.
→ 동일한 역할을 여러 객체가 구현할 수 있음 (인터페이스 기반 설계)

책임

객체가 수행해야 할 행동(로직) 또는 데이터 관리의 의무
→ 객체는 자신의 역할에 맞는 책임을 수행함으로써 협력에 기여한다.

책임 할당하기 – 책임 주도 설계(Responsibility-Driven Design)

책임 주도 설계의 단계

  • 시스템이 제공해야 하는 기능(책임)을 파악한다.
  • 각 기능을 작은 책임 단위로 분해한다.
  • 책임을 수행할 수 있는 객체 또는 역할을 식별한다.
  • 책임 수행을 위해 다른 객체의 도움이 필요할 경우, 협력할 객체를 찾는다.

GRASP 패턴 (General Responsibility Assignment Software Patterns)

책임을 적절히 할당하기 위한 객체지향 설계 패턴

주요 질문

  • 전송할 객체는 무엇을 원하는가
  • 수신에 적합한 객체는 누구인가

낮은 결합도 (LOW-DECOUPLING)

객체 간 연결을 최소화하여 변경에 대한 영향을 줄이는 설계.

예약  ➡️`screening` ➡️ 계산 ➡️  `movie` ➡️ 할인 적용 ➡️ `discountPolicy`
`screening`이 직접 `discountPolicy`에 직접적으로 결합되지 않는다.

높은 응집도 패턴(HIGH COHESION)

하나의 객체가 하나의 명확한 책임에 집중하도록 설계.

예약  ➡️`screening` ➡️ 계산 ➡️  `movie` ➡️ 할인 적용 ➡️ `discountPolicy`

  • `movie`는 계산에 대한 책임만 가짐
  • `screening`은 예매 생성 책임만을 가진다.

CREATOR 패턴

객체 생성 책임을 가장 잘 알고, 가장 많이 사용하는 객체에게 부여.
➡️ 만약 클래스 A가 클래스 B에 대해 잘 알고 자주 교류한다면 A에게 B의 생성을 맡기자

POLYMOTPHISM(다형성) 패턴

조건문으로 동작을 구분하지 않고, 다형성을 이용해 객체가 스스로의 동작을 결정하도록 한다.
인터페이스 또는 상속을 기반으로 유연하고 확장 가능한 구조를 구현한다.

PROTECTED VARAIATIONS 패턴

변화 가능성이 높은 설계 요소는 외부에 직접 노출하지 않고, 인터페이스나 추상화 계층 뒤에 감춰서 캡슐화한다.

➡️ 변화로부터 나머지 시스템을 보호할 수 있다.

 

저작자표시 비영리 변경금지 (새창열림)

'Book > DEV' 카테고리의 다른 글

오브젝트 (3)  (0) 2025.04.09
오브젝트 (2)  (0) 2025.04.08
만들면서 배우는 클린 아키텍쳐 (2)  (0) 2025.03.14
만들면서 배우는 클린 아키텍쳐  (1) 2024.12.11
Effective Java - 상속과 합성  (0) 2022.11.28
'Book/DEV' 카테고리의 다른 글
  • 오브젝트 (3)
  • 오브젝트 (2)
  • 만들면서 배우는 클린 아키텍쳐 (2)
  • 만들면서 배우는 클린 아키텍쳐
코드파고
코드파고
  • 코드파고
    Digging Code
    코드파고
  • 전체
    오늘
    어제
    • 분류 전체보기 (99)
      • Memorization (12)
      • Spring (18)
      • Java (1)
      • Algorithm (40)
      • Server (2)
      • DB (0)
      • CS (0)
      • CI & CD (4)
      • Architecture (0)
      • Design Patterns (0)
      • Study (1)
      • Book (9)
        • DEV (7)
        • Non-DEV (0)
      • Infra (1)
        • Kafka (6)
        • AWS (4)
      • TroubleShooting (1)
        • Etc (1)
      • Tools (0)
  • 블로그 메뉴

    • 홈
    • Github
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    클린아키텍쳐
    architecture
    SpringFramework
    Spring독학
    헥사고날아키텍쳐
    clean architecture
    Clean Code
    알고리즘
    Spring
    Spring Boot
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
코드파고
오브젝트 (1)
상단으로

티스토리툴바