'객체지향의 사실과 오해' 책을 읽고, 개인적으로 공부한 내용을 요약한 것으로 공부 내용을 정리하는 과정에서 잘못된 정보가 있을 수 있으니 참고용으로만 봐주시면 감사하겠습니다. 피드백은 언제든 환영입니다! 😊
객체지향 패더라임의 목적
현실 세계를 모방하는 것 X
현실 세계를 기반으로 새로운 세계를 창조하는 것
객체의 정의
하나의 개별적인 실체로 식별 가능한 물리적인 또는 개념적인 사물
즉, 객체는 상태(state), 행동(Behavior), 식별자(identity)를 지닌 실체임
상태 (State)
과거에 발생한 행동의 이력을 통해, 현재 발생한 행동의 결과를 판단하는 방식은 복잡하고 번거로움
- 따라서 상태라는 개념을 고안함
- 상태를 이용하면 과거에 발생한 행동의 이력을 설명하지 않고, 현재 상태를 통해 객체의 행동을 설명 가능
프로퍼티 (Property)
모든 객체의 상태는 단순한 값과 객체의 조합으로 표현 가능하며, 이를 객체의 프로퍼티라고 함
- 즉, (단순한 값 + 객체) = 프로퍼티
- 변경되지 않고 고정되기 때문에 정적임 (ex. 키, 위치, 음료 ...)
프로퍼티 값 (Property Value)
- 시간의 흐름에 따라 변경되므로 동적임 (ex. 15cm, (15, -384) 위치 값, 음료의 양 ...)
링크 (Link)
객체와 객체 사이의 의미 있는 연결
- 객체는 링크를 통해서만 메시지를 주고 받으며 협력할 수 있음
- 링크를 통해 객체가 다른 객체를 참조 할 수 있음 → 즉, 한 객체는 다른 객체의 식별자를 알고 있음을 의미
행동 (Behavior)
- 객체의 행동에 의해 부수 효과 (side effect) 초래 (* 부수 효과 : 객체의 행동에 의해 상태가 변경됨)
- 객체는 자율적인 존재로, 다른 객체의 상태에 직접적으로 접근 및 상태 변경 불가
- 객체는 스스로의 행동에 의해서만 상태가 변경되는 것을 보장하며 객체의 자율성을 유지함
- 즉, 간접적으로 객체의 상태를 변경, 조회 해야함 → 행동을 통해 다른 객체에 간접적으로 접근 및 상태 변경
협력 (Collaboration)
- 객체는 다른 객체와 적극적으로 상호작용하며 협력하는 객체들의 공동체에 참여해야 함
- 다른 객체에게 요청을 보냄으로써 협력 가능
- 이때 (요청 == 메시지) 로, 객체는 다른 객체와 메시지를 통해서만 의사소통 가능
- 협력을 통해 객체는 자신의 상태뿐만 아니라 다른 객체의 상태 변경을 유발할 수 있음
상태 캡슐화
- 객체는 자신의 상태를 스스로 관리하는 자율적인 존재
- 따라서, 다른 객체의 상태 변경 불가
- 단지 다른 객체의 상태 변경을 유발하기 위해 메시지만 전달 가능
- 메시지 송신자는 메시지 수신자의 상태 변경에 대해서는 전혀 알지 못함
- 객체는 캡슐화를 통해 상태를 노출하지 않고, 오로지 행동만 노출 가능
- 즉, 캡슐화는 객체의 자율성을 높이고, 협력을 단순하고 유연하게 만듦
✔️ Reference
- 객체지향의 사실과 오해 (조영호 저)
'✔️ Etc > Book' 카테고리의 다른 글
[객체지향의 사실과 오해] chaper 1. 협력하는 객체들의 공동체 (0) | 2024.04.06 |
---|
댓글