객체지향이란?
객체지향은 시스템을 상호작용하는 자율적인 객체들의 공동체로 바라보고, 객체를 이용해 시스템을 분할하는 방법이다.
객체지향의 목표
- 고객과 사용자를 만족시킬 수 있는 소프트웨어를 만드는 것
잘못된 이해
- 실세계의 사물을 최대한 유사하게 소프트웨어 내부에 대응시키는 것
- 그러나 객체지향을 설명하기 위한 비유로 실세계의 사례를 사용하는 것은 효과적임
- 예시) 카페에서의 커피 주문과정
핵심 개념 정리
역할 (Role)
- 객체가 어떤 맥락에서 수행하는 기능 또는 위치
- 예시: 손님, 캐시어, 바리스타
책임 (Responsibility)
- 역할을 수행하기 위해 객체가 해야 할 구체적인 일들
- 손님: 커피 주문
- 캐시어: 주문 받기, 커피 제공
- 바리스타: 커피 만들기
협력 (Collaboration)
- 객체들이 서로 메시지를 주고받으며 함께 작업을 수행하는 것
- 손님 ↔ 캐시어 ↔바리스타
메시지
- 객체 간의 요청과 응답
- sender: 메시지를 보내는 객체
- receiver: 메시지를 받는 객체
- method: 메시지를 처리하는 수단 (객체 내부의 함수, 프로시저 등)
객체란?
- 협력에 참여하기 위한 행동에 필요한 상태를 지닌 실체
객체의 덕목
1. 협력적
- 다른 객체와 요청과 응답을 주고받을 수 있어야 함
- 모든 일을 혼자 처리하려고 하면 코드가 복잡해지고 유지보수 불가능
2. 자율적
- 외부의 요청을 객체 내부의 규칙에 따라 판단하고 응답
- 객체의 내부 상태는 외부에서 직접 접근 불가능
- 허락된 방법으로만 외부와 의사소통 가능
클래스는 핵심이 아니다
- 과거 자바스크립트와 같은 프로토타입 기반 언어는 클래스 없이도 객체지향이 가능했음
- 객체지향의 본질은 클래스가 아닌 '객체 간의 메시지와 협력'
- 어떤 클래스가 필요한가? [정적 정의] X
- 어떤 객체들이 어떤 메시지를 주고받으며 협력하는가? [동적 관계] O
※ 본 글은 『객체지향의 사실과 오해』(조영호 저) 1장을 기반으로 학습 목적으로 요약한 글입니다.
※ 이 글은 책의 내용을 요약한 것으로, 원문 없이 읽을 경우 오해의 여지가 있을 수 있습니다. 정확한 이해를 위해 원서의 정독을 권장합니다.
'개발 관련 지식' 카테고리의 다른 글
객체지향의 사실과 오해 정리 - 4장. 역할, 책임, 협력 (0) | 2025.04.23 |
---|---|
객체지향의 사실과 오해 정리 - 3장. 타입과 추상화 (0) | 2025.04.21 |
객체지향의 사실과 오해 정리 - 2장. 이상한 나라의 객체 (0) | 2025.04.19 |
TDD는 정말 최고의 설계 도구일까? – Bob Martin vs Jim Coplien의 토론 정리 (0) | 2025.04.12 |
Mock이란 (0) | 2025.04.07 |