본문 바로가기

오브젝트13

9장 - 유연한 설계 개요 이번 장에서는 8장에서 소개했던 기법들을 원칙이라는 관점에서 설명합니다. 개방-폐쇄 원칙(Open-Closed Principle, OCP) 소프트웨어 개체(클래스, 모듈, 함수 등)는 확장에 대해 열려 있어야 하고, 수정에 대해 닫혀 있어야 한다는 원칙입니다. '확장에 대해 열려 있다는 의미'는 앱의 요구사항이 변경될 때 이 변경에 맞게 새 동작을 추가해서 앱의 기능을 확장할 수 있다는 의미이며, '수정에 대해 닫혀 있다는 의미'는 기존의 코드를 수정하지 않고도 앱의 동작을 추가하거나 변경할 수 있다는 의미입니다. 어떻게 기존 코드를 수정하지 않고도 새로운 동작을 추가할 수 있을까? 1. 컴파일타임 의존성을 고정시키고 런타임 의존성을 변경하라 런타임 의존성은 실행 시에 협력에 참여하는 객체들 사이의.. 2023. 7. 24.
8장 - 의존성 관리하기 개요 이번 장에서는 협력적이면서도 유연한 객체를 만들기 위해 의존성을 관리하는 방법에 대해 다룹니다. 의존성이란? 의존하고 있는 대상의 변경에 영향을 받을 수 있는 가능성을 말합니다. 의존성 이해하기 어떤 객체가 협력하기 위해 다른 객체를 필요할 때 두 객체 사이에 의존성이 존재한다고 말합니다. 의존성은 실행 시점과 구현 시점에 서로 다른 의미를 가집니다. 실행 시점: 의존하는 객체가 정상적으로 동작하기 위해서는 실행 시에 의존 대상 객체가 반드시 존재해야 합니다. 구현 시점: 의존 대상 객체가 변경될 경우 의존하는 객체도 함께 변경됩니다. 두 요소 사이의 의존성은 의존되는 요소가 변경될 때 의존하는 요소도 함께 변경될 수 있다는 것을 의미하며 이 의미는 변경에 의한 영향의 전파 가능성을 암시합니다. 의.. 2023. 5. 22.
7장 - 객체 분해 개요 이번장에서는 객체를 분해하는 방법들에 대해 살펴봅니다. 왜 객체를 분해할까? 문제 해결에 필요한 요소의 수가 단기 기억의 용량을 초과하는 순간 문제 해결 능력은 급격하게 떨어지고 마는데 이 현상을 인지 과부하라고 부릅니다. 이러한 인지 과부하 문제를 해결하기 위해 객체들을 분해하여 처리해야 합니다. 불필요한 정보를 제거하고 현재의 문제 해결에 필요한 핵심만 남기는 작업을 추상화라고 부르며, 큰 문제를 해결 가능한 작은 문제로 나누는 작업을 분해라고 부릅니다. 어떻게 객체를 분해할까? 소프트웨어를 분해하는 방법은 두 가지 요소로 결정됩니다. 프로시저 추상화: 소프트웨어가 무엇을 해야 하는지를 추상화 데이터 추상화: 소프트웨어가 무엇을 알아야 하는지를 추상화 먼저 프로시저 추상화를 중심으로 할 것인지,.. 2023. 4. 30.
6장 - 메시지와 인터페이스 개요 이번장에서는 유연하고 재사용 가능한 퍼블릭 인터페이스를 만드는 데 도움이 되는 설계 원칙과 기법을 익히기 위한 개념들을 살펴봅니다. 메시지(message) 객체가 다른 객체와 협력하기 위해 사용하는 의사소통 메커니즘을 메시지(message), 일반적으로 객체의 오퍼레이션이 실행되도록 요청하는 것을 메시지 전송(message sending)이라고 부릅니다. 메시지는 협력에 참여하는 전송자와 수신자 양쪽 모두를 포함하는 개념입니다. 메시지는 오퍼레이션명과 인자로 구성되며 메시지 전송은 여기에 메시지 수신자를 추가한 것입니다. 따라서 메시지 전송은 메시지 수신자, 오퍼레이션명, 인자의 조합입니다. 퍼블릭 인터페이스 객체가 의사소통을 위해 외부에 공개하는 메시지의 집합을 퍼블릭 인터페이스라고 부릅니다. 클.. 2023. 4. 17.