본문 바로가기

스터디16

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