본문 바로가기
728x90

도서/오브젝트7

Chapter 7. 객체 분해 사람은 문제를 해결하기 위해 단기 기억을 사용한다. 하지만 단기 기억의 용량은 한정되 있고 이 용량을 초과하는 순간 문제 해결 능력이 저하되며 인지 과부화(cognitive overload)가 발생한다.  인지 과부화를 줄이는 방법은 추상화이다. 세부 사항을 줄이고 가장 본질적인 부분만 남기면 된다. 즉, 한번에 다뤄야 하는 문제의 크기를 줄이면 된다. 하나의 큰 문제를 작은 문제로 나누는 것이 분해(decomposition)이다.  분해의 목적은 큰 문제를 인지 과부화 없이 단기 기억 안에서 한 번에 처리할 수 있는 규모의 문제로 나누는 것이다. 여기서 말하는 "한 번에 처리할 수 있는 규모"는 가장 작은 단위로서의 개별 항목이 하는 하나의 청크(chunck)를 의미한다. 청크는 더 작은 청크를 포함할.. 2022. 2. 2.
Chapter 6. 메시지와 인터페이스 객체지향 프로그래밍에 대한 가장 큰 오해는 애플리케이션이 클래스의 집합으로 구성된다는 것이다. 클래스는 그저 도구일 뿐이다. 따라서 좋은 객체지향 코드를 얻기 위해서는 협력 안에서 객체가 수행하는 책임에 초점을 맞추어야 한다. 책임은 객체가 수신할 수 있는 메시지의 기반이 된다. 애플리케이션은 클래스로 구성되지만 메시지를 통해 정의된다. 객체가 수신하는 메시지들이 객체의 퍼블릭 인터페이스를 구성한다. 좋은 퍼블릭 인터페이스를 얻기 위해서는 책임 주도 설계와 유연하고 재사용 가능한 퍼블릭 인터페이스를 만드는 데 도움이 되는 설계 원칙과 기법을 적용해야 한다. 이런 설게 원칙과 기법을 살펴보기 전에 우선 협력과 메시지를 설명하겠다. 협력과 메시지 클라이언트 - 서버 모델 협력은 어떤 객체가 다른 객체에게 무.. 2022. 1. 22.
Chapter 5. 책임 할당하기 데이터 중심 설계는 객체들 간의 협력을 고려하기 보다는 상태를 우선적으로 고려하기 때문에 제대로된 캡슐화를 하지 못한다. 이는 결국 높은 결합도를 야기하고 코드 변경이 어려워진다. 따라서 객체지향 설계에서는 책임 중심 설계가 적절하다. 책임 중심 설계에서 가장 어려운 부분은 어떤 객체에게 어떤 책임을 할당할 것인가 이다. 책임 할당 과정은 일종의 트레이드오프이다. 동일한 문제를 해결할 수 있는 다양한 책임 할당 방법이 존재하며 상황에 따라 최적의 책임 할당 방식이 다르다. 따라서 최적의 책임 할당을 위해서 다양한 관점에서 설계를 평가할 수 있어야 한다. GRASP 패턴은 책임 할당의 어려움을 해결해 준다. GRASP 패턴을 이해하면 응집도, 결합도, 캡슐화 같은 다양한 기준에 따라 책임을 할당하고 결과를.. 2022. 1. 17.
Chapter 4. 설계 품질과 트레이드오프 객체지향 설계의 핵심은 역할, 책임, 협력이다. 1. 협력: 애플리케이션 기능 구현을 위한 객체들 간의 상호작용. 2. 책임: 객체가 다른 객체와의 협력을 위해 수행하는 행동. 3. 역할: 대체 가능한 책임의 집합. 객체지향 설계에서 가장 중요한 것은 적절한 책임 할당이다. 적절한 책임 할당이 이루어 져야 제대로된 협력이 가능하고 제대로된 역할의 배분이 이루어진다. 객체지향 설계는 올바른 책임을 할당해 낮은 결합도와 높은 응집도를 가진 구조를 만드는 것이다. 이 말에는 다음과 같은 두 가지 관점이 섞여있다. 1. 객체지향 설계의 핵심이 책임이다. 2. 책임을 할당하는 작업이 응집도와 결합도 같은 설계 품질과 깊이 연관되 있다. 설계를 변경한다는 것은 비용 발생과 직결되 있다. 따라서 합리적인 비용 내에서.. 2022. 1. 10.
728x90