Object - 객체, 설계
2024. 12. 6. 21:02ㆍBooks
1장. 객체, 설계
변경에 취약한 코드
의존성은 변경에 대한 영향을 암시하며, 어떤 객체가 변경될 때 그 객체에 의존하는 다른 객체도 함께 변경될 가능성을 내포한다.
객체 사이의 의존성이 과도한 경우를 "결합도가 높다"고 한다.
설계의 목표:
- 객체 사이의 결합도를 낮춰 변경에 유연한 설계를 만드는 것
캡슐화와 응집도
캡슐화
- 객체 내부의 세부적인 사항을 감추는 것
- 객체 내부로의 접근을 제한하면 결합도를 낮춰 설계를 쉽게 변경할 수 있다.
응집도
- 밀접하게 연관된 작업만 수행하고, 연관성 없는 작업은 다른 객체로 위임하는 객체를 가리켜 "응집도가 높다"고 한다.
- 자신의 데이터를 스스로 처리하는 자율적인 객체는
- 결합도를 낮추고,
- 응집도를 높인다.
절차지향과 객체지향
절차적 프로그래밍
- 프로세스와 데이터를 별도의 모듈에 위치시킴
객체지향 프로그래밍
- 프로세스와 데이터를 동일한 모듈에 위치시킴
두 방식의 차이: 책임의 이동
- 한 곳에 몰려있던 책임이 개별 객체로 이동.
- 적절한 객체에 적절한 책임을 할당하면
- 이해하기 쉬운 구조,
- 읽기 쉬운 코드 작성 가능
🌟 훌륭한 객체지향 설계의 핵심 🌟
캡슐화를 통해 의존성을 관리하여 객체 사이의 결합도를 낮추고,
자율적 객체가 낮은 결합도와 높은 응집도로 협력하는 설계를 만들자.
단, 적절한 트레이드오프가 필요함
의인화
객체지향 세계에서는 현실의 수동적인 존재도 능동적이고 자율적인 존재로 설계된다.
좋은 설계란?
- 오늘 요구하는 기능을 온전히 수행하면서,
- 내일의 변경을 매끄럽게 수용할 수 있는 설계.
'Books' 카테고리의 다른 글
헤드퍼스트 디자인패턴 - 전략 패턴 (1) | 2024.12.07 |
---|