본문 바로가기

개발 관련 지식

객체지향의 사실과 오해 정리 - 1장. 협력하는 객체들의 공동체

객체지향이란?

객체지향은 시스템을 상호작용하는 자율적인 객체들의 공동체로 바라보고, 객체를 이용해 시스템을 분할하는 방법이다.

객체지향의 목표

  • 고객과 사용자를 만족시킬 수 있는 소프트웨어를 만드는 것

 

잘못된 이해

  • 실세계의 사물을 최대한 유사하게 소프트웨어 내부에 대응시키는 것
  • 그러나 객체지향을 설명하기 위한 비유로 실세계의 사례를 사용하는 것은 효과적임
    • 예시) 카페에서의 커피 주문과정

핵심 개념 정리

 

역할 (Role)

  • 객체가 어떤 맥락에서 수행하는 기능 또는 위치
  • 예시: 손님, 캐시어, 바리스타

 

책임 (Responsibility)

  • 역할을 수행하기 위해 객체가 해야 할 구체적인 일들
    • 손님: 커피 주문
    • 캐시어: 주문 받기, 커피 제공
    • 바리스타: 커피 만들기

 

협력 (Collaboration)

  • 객체들이 서로 메시지를 주고받으며 함께 작업을 수행하는 것
  • 손님 ↔ 캐시어 ↔바리스타

 

메시지

  • 객체 간의 요청과 응답
  • sender: 메시지를 보내는 객체
  • receiver: 메시지를 받는 객체
  • method: 메시지를 처리하는 수단 (객체 내부의 함수, 프로시저 등)

객체란?

  • 협력에 참여하기 위한 행동에 필요한 상태를 지닌 실체

 

객체의 덕목

 

1. 협력적

  • 다른 객체와 요청과 응답을 주고받을 수 있어야 함
  • 모든 일을 혼자 처리하려고 하면 코드가 복잡해지고 유지보수 불가능

 

2. 자율적

  • 외부의 요청을 객체 내부의 규칙에 따라 판단하고 응답
  • 객체의 내부 상태는 외부에서 직접 접근 불가능
  • 허락된 방법으로만 외부와 의사소통 가능

클래스는 핵심이 아니다

  • 과거 자바스크립트와 같은 프로토타입 기반 언어는 클래스 없이도 객체지향이 가능했음
  • 객체지향의 본질은 클래스가 아닌 '객체 간의 메시지와 협력'
  • 어떤 클래스가 필요한가? [정적 정의] X
  • 어떤 객체들이 어떤 메시지를 주고받으며 협력하는가? [동적 관계] O

 

 

※ 본 글은 『객체지향의 사실과 오해』(조영호 저) 1장을 기반으로 학습 목적으로 요약한 글입니다.

※ 이 글은 책의 내용을 요약한 것으로, 원문 없이 읽을 경우 오해의 여지가 있을 수 있습니다. 정확한 이해를 위해 원서의 정독을 권장합니다.