[오브젝트 : 코드로 이해하는 객체지향 설계] 1. 객체, 설계
2021. 8. 11. 16:57ㆍ오브젝트 : 코드로 이해하는 객체지향 설계
※ 본 게시글은 오브젝트라는 책을 읽고 정리한 글입니다. ※
소프트웨어 모듈의 세 가지 목적
- 실행 중에 제대로 동작해야 한다.
- 변경에 용이해야 한다. ⇒ 요구사항이 항상 변경되기 때문
- 코드를 읽는 사람과 의사소통이 되어야 한다.
이 책에서는 세 가지 목적을 달성한 훌륭한 객체지향 설계를 할 수 있도록 코드를 변경하며, 어떤것이 좋은 코드인지 설명합니다.
객체지향의 목적
- 캡슐화, 책임이동, 데이터와 프로세스의 통합으로 결합도를 낮추고 응집도를 높이는 것
의존성과 결합도
- 결합도 : 모듈과 모듈간의 의존도. 객체 사이의 의존성이 높은 경우 결합도가 높다고 한다.
- 의존성이 높은 객체 : 객체가 변경될 때 그 객체에 의존하는 다른 객체도 함께 변경될 수 있다.
결합도를 낮추는 방법
1. 캡슐화
캡슐화 : 객체 내부의 세부적인 사항을 감추는 것
-> 캡슐화를 통해서 객체 내부에서 데이터를 직접적으로 사용하고 외부에서의 데이터 직접 접근을 제한하여 결합도를 낮출 수 있다.
2. 책임의 이동
책임의 이동은 객체에 따라 적절한 책임을 할당하는 것에 초점을 맞추는 것으로 스스로 책임을 수행할 수 있는 객체를 구성해야 한다.
-> 책임을 이동시켜 객체가 자신과 연관있는 작업만 수행하고 연관성 없는 작업은 다른 객체에 위임하여 자신의 데이터를 책임지는 것을 응집도가 높다고 한다.
3. 데이터와 프로세스의 통합
- 데이터 : 객체안의 필드
- 프로세스 : 데이터를 다루는 행위
-> 결합도를 낮춰 변경하기 쉽게 만드는 설계는 한 번에 하나의 클래스만 변경할 수 있는 것이다. 그래서 데이터와 프로세스가 동일한 모듈 내부에 위치하도록 프로그래밍 해야한다.
결합도가 높은 객체의 문제점
- 연관된 객체가 변경되면 함께 변경해야 한다.
- 객체를 이해하려면 연관된 객체를 함께 이해해야 한다.
훌륭한 객체지향 설계
몰라도 되는 세부사항을 캡슐화하여 객체들이 낮은 결합도와 높은 응집도를 가지고 협력하도록 최소한의 의존성만을 남기는 것
반응형
'오브젝트 : 코드로 이해하는 객체지향 설계' 카테고리의 다른 글
[오브젝트 : 코드로 이해하는 객체지향 설계] 6. 메시지와 인터페이스 (0) | 2021.09.08 |
---|---|
[오브젝트 : 코드로 이해하는 객체지향 설계] 5. 책임 할당하기 (0) | 2021.09.02 |
[오브젝트 : 코드로 이해하는 객체지향 설계] 3. 역할, 책임, 협력 (0) | 2021.08.24 |
[오브젝트 : 코드로 이해하는 객체지향 설계] 2. 객체지향 프로그래밍 (0) | 2021.08.17 |