Objects 책 정리
13 Oct 2022객체지향
- 클래스가 아니라 객체를 바라보는 것
- 객체는 독립적인 존재가 아니라 기능을 구현하기 위해 협력하는 공동체의 존재
- 객체에게 적절한 역할과 책임을 부여하는 방법 필요
- 유연하면서도 요구사항에 적절한 협력을 설계하는 방법을 알아야함
- 설계와 품질 사이의 다양한 측면에 관해 고민해야함
클린 소프트웨어 (로버트 마틴)
소프트웨어 모듈의 세가지 목적
1. 실행 중에 제대로 동작해야함
- 모듈의 존재 이유
2. 변경을 위해 존재
- 간단한 작업만으로 변경이 가능해야함
- 변경하기 어려운 모듈은 제대로 동작하더라도 개선해야함
3. 코드를 읽는 사람과 의사소통
- 특별한 훈련 없이도 개발자가 쉽게 읽고 이해할 수 있어야함
이해 가능한 코드: 우리의 예상에서 크게 벗어나지 않는 코드
캡슐화의 목적
- 변경하기 쉬운 객체로 만드는 것
- 개념적이나 물리적으로 객체 내부의 세부적인 사항을 감추는 것
- 캡슐화를 통해 객체 내부로의 접근을 제한하여 결합도를 낮춤
캡슐화와 응집도
- 객체 내부의 상태를 캡슐화
- 객체 간에 오직 메시지를 통해서만 상호작용
- 메시지를 보내면 응답할 것이라는 약속만 정의되어 있음(원하는 결과를 반환할 것이라는 사실)
- 다른 객체의 내부 상황을 몰라도 됨
응집도
- 밀접하게 연관된 작업만을 수행하고
- 연관성 없는 작업은 다른 객체에게 위임하는 객체를 가리켜 응집도가 높다고 말한다.
- 자신의 데이터는 스스로 처리하도록 자율적인 객체를 만들기 =
낮은 결합도 & 높은 응집성
- 객체의 응집도를 높이기 위해서는 자신의 데이터를 스스로 책임지고 처리
- 메시지를 통해서만 상호작용