협력하는 객체들의 공동체
자바의 정석에서도 그렇고 객체지향이란 실제 세상에 있는 것들을 코드상으로 가져오는 즉 직접적이고 직관적으로 모델링 할 수 있는 패러다임이라고 하기도 한다. 다만 실제 세상은 그런 객체는 많이 없고 유사성 찾기 어려운 경우가 일반적이다 .
객체지향의 목표는 실세계를 모방하는 것이 아닌 새로운 세계를 창조하는 것!
그럼에도 불구하고 객체와 실세계를 비교하면서 개념을 동일시하게 되는 이유는 객체의 특징인 캡슐화와 자율성을 설명하기에 실세계의 생명체와 비유하는것이 이해하기 쉽기 때문이다.
연결 완전성
정의 : 시스템의 구성 요소들이 서로 잘 연결되고 상호작용할 수 있도록 설계하는 것을 의미합니다. 이는 객체 간의 관계와 상호작용을 명확하게 정의하여 시스템의 유연성과 확장성을 높이는 데 기여합니다.
개념
- 객체 간의 관계: 객체는 서로 관계를 맺고 있으며, 이러한 관계는 객체의 행동과 상태에 영향을 미칩니다.
- 상호작용: 객체는 메시지를 주고받으며 상호작용을 통해 기능을 수행합니다.|
- 유연성: 잘 설계된 연결은 시스템의 변경이나 확장이 용이하게 합니다.
협력하는 사람들
위에서 설명한 거 같이 객체지향의 개념을 이해하기 쉽도록 커피 주문으로 예를 들어보자
1. 손님이 커피를 주문한다.
2. 캐시어가 커피를 제조하라고 요청한다
3. 바리스타가 커피를 제조한다
4. 바리스타가 완성된 커피를 캐시어에게 보낸다
5. 캐시어는 완성된 커피를 손님에게 제공한다.
6. 손님은 요청한 커피를 받는다
위와 같은 흐름으로 우리는 요청과 응답으로 만들어진 협력관계를 눈에 자주 보게 된다.
만약 협력이 없이 혼자 한다면 출근 전에 더 일찍 일어나서 커피 내리고 보온병 넣고 무겁게 가지고 가야하는데 우리는 다름 사람과 협력함으로서 보다 나은 서비스를 제공받을 수 있게 된다.
역할 , 책임 , 협력
역할
- 협력에 참여하는 사람들이 차지하는 책임이나 의무
책임
- 맡은 역할에 대해 해야할 의무
역할과 책임에 대한 개념들
- 여러 사람이 동일한 역할을 수행할 수 있다. 손님 입장에선 어떤 캐시어가 주문 받아도 괜찮음
- 역할은 대체 가능성을 의미한다 : A캐시어가 바쁘면 B캐시어가 대신 주문을 받는다
- 책임을 수행하는 방법은 자율적으로 선택할 수 있다. : 같은 음료라도 각각 바리스타마다의 방법으로 서비스를 제공한다.
- 한 사람이 동시에 여러 역할을 수행할 수 있다. : 1인 창업
사람 = 객체
요청 = 메시지
방법 = 메서드
객체의 세계는 실세계와 동일하다 = 객체도 협력하면서 동작한다.
객체들이 더 세분화하여 협력할 수 있고 다른 객체에게 도움을 받아서 서비스를 제공할 수 있다
객체
객체는 협력적이어야한다
- 다른 객체의 요청을 듣고 도움을 줄 수 있어야한다.
- 객체는 사람과 마찬가지로 혼자 모든 걸 다 하려고 하면 병난다.
객체는 자율적이어야한다.
- 자기 스스로 원칙에 따라 어떤 일을 하거나 자기 스스로 통제하여 절제하는 것
- 일일이 세세하게 지시하지 않아도 스스로 판단할 수 있도록
메시지 : 객체에게 협력을 요구할 때 사용하는 의사소통 도구
메서드 : 수신된 메시지를 처리하는 방법
객체지향
핵심은 적절한 책임을 수행하는 역할 간의 유연하고 견고한 협력 관계를 구축하는 것
클래스도 중요하지만 단순히 구현 메커니즘일 뿐 오히려 메시지를 주고받는 객체들의 동적 관계를 더 중요시하고 역할, 책임 , 협력에 초점을 맞추자!
'도서' 카테고리의 다른 글
클린코드 : 점진적인 개선 (0) | 2024.07.27 |
---|---|
클린코드 : 시스템, 창발성, 동시성 (0) | 2024.07.21 |
클린 코드 : 오류 처리 , 경계 , 단위 테스트, 클래스 (1) | 2024.07.14 |
클린코드 : 객체와 자료 구조 (0) | 2024.07.07 |
클린코드 : 형식 맞추기 (0) | 2024.07.07 |
하고 싶은 걸 하고 되고 싶은 사람이 되자!
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!