본문 바로가기

스터디/오브젝트15

7장 - 객체 분해 개요 이번장에서는 객체를 분해하는 방법들에 대해 살펴봅니다. 왜 객체를 분해할까? 문제 해결에 필요한 요소의 수가 단기 기억의 용량을 초과하는 순간 문제 해결 능력은 급격하게 떨어지고 마는데 이 현상을 인지 과부하라고 부릅니다. 이러한 인지 과부하 문제를 해결하기 위해 객체들을 분해하여 처리해야 합니다. 불필요한 정보를 제거하고 현재의 문제 해결에 필요한 핵심만 남기는 작업을 추상화라고 부르며, 큰 문제를 해결 가능한 작은 문제로 나누는 작업을 분해라고 부릅니다. 어떻게 객체를 분해할까? 소프트웨어를 분해하는 방법은 두 가지 요소로 결정됩니다. 프로시저 추상화: 소프트웨어가 무엇을 해야 하는지를 추상화 데이터 추상화: 소프트웨어가 무엇을 알아야 하는지를 추상화 먼저 프로시저 추상화를 중심으로 할 것인지,.. 2023. 4. 30.
6장 - 메시지와 인터페이스 개요 이번장에서는 유연하고 재사용 가능한 퍼블릭 인터페이스를 만드는 데 도움이 되는 설계 원칙과 기법을 익히기 위한 개념들을 살펴봅니다. 메시지(message) 객체가 다른 객체와 협력하기 위해 사용하는 의사소통 메커니즘을 메시지(message), 일반적으로 객체의 오퍼레이션이 실행되도록 요청하는 것을 메시지 전송(message sending)이라고 부릅니다. 메시지는 협력에 참여하는 전송자와 수신자 양쪽 모두를 포함하는 개념입니다. 메시지는 오퍼레이션명과 인자로 구성되며 메시지 전송은 여기에 메시지 수신자를 추가한 것입니다. 따라서 메시지 전송은 메시지 수신자, 오퍼레이션명, 인자의 조합입니다. 퍼블릭 인터페이스 객체가 의사소통을 위해 외부에 공개하는 메시지의 집합을 퍼블릭 인터페이스라고 부릅니다. 클.. 2023. 4. 17.
5장 - 책임 할당하기 개요 이번 장에서는 책임을 할당하는 기준과 책임 중심 설계를 어떻게 하면 되는지에 대해 다룹니다. 데이터 중심 설계의 문제점을 해결할 수 있는 방법은 무엇일까? 가장 기본적인 방법은 데이터가 아닌 책임에 초점을 맞추는 것입니다. 어떻게 책임을 할당할까? 책임 중심의 설계를 하기 위해서는 다음의 두 가지 원칙을 따라야 합니다. 데이터보다 행동을 먼저 결정하라 협력이라는 문맥 안에서 책임을 결정하라 데이터보다 행동을 먼저 결정하라 객체에게 중요한 것은 데이터가 아니라 외부에 제공하는 행동입니다. 객체에게 데이터는 객체가 책임을 수행하는 데 필요한 재료를 제공할 뿐입니다. 너무 이른 시기에 데이터에 초점을 맞추면 객체의 캡슐화가 약화되기 때문에 낮은 응집도와 높은 결합도를 가진 객체들로 넘쳐나게 되며, 그 결.. 2023. 4. 10.
4장 - 설계 품질과 트레이드오프 개요 이번 장에서는 데이터 중심의 설계의 문제점을 이해하기 위해 몇 가지 알아야 할 용어들과 데이터 중심 설계에 어떤 문제점이 있는지에 대해 다룹니다. 시스템을 분할하는 방법 사용자가 사용할 시스템을 구현하기 위해 설계 관점에 따라 시스템을 다르게 분할하여 구현합니다. 시스템을 분할하기 위해 데이터와 책임 중 어떤 것을 선택해야 할까? 책의 저자는 데이터가 아니라 책임에 초점을 맞춰야 한다고 합니다. 책임에 초점을 맞춰야 하는 이유는 무엇일까? 객체의 상태는 구현에 속하며 구현은 불안정하기 때문에 변하기 쉽습니다. 객체의 상태가 객체 분할의 초점이 되면 구현 세부 사항이 객체의 인터페이스에 스며들어 캡슐화의 원칙이 무너지게 됩니다. 즉, 상태가 변경되면 인터페이스도 변경되어 해당 인터페이스에 의존하는 모.. 2023. 3. 28.