728x90 응집도4 Chapter 5. 책임 할당하기 데이터 중심 설계는 객체들 간의 협력을 고려하기 보다는 상태를 우선적으로 고려하기 때문에 제대로된 캡슐화를 하지 못한다. 이는 결국 높은 결합도를 야기하고 코드 변경이 어려워진다. 따라서 객체지향 설계에서는 책임 중심 설계가 적절하다. 책임 중심 설계에서 가장 어려운 부분은 어떤 객체에게 어떤 책임을 할당할 것인가 이다. 책임 할당 과정은 일종의 트레이드오프이다. 동일한 문제를 해결할 수 있는 다양한 책임 할당 방법이 존재하며 상황에 따라 최적의 책임 할당 방식이 다르다. 따라서 최적의 책임 할당을 위해서 다양한 관점에서 설계를 평가할 수 있어야 한다. GRASP 패턴은 책임 할당의 어려움을 해결해 준다. GRASP 패턴을 이해하면 응집도, 결합도, 캡슐화 같은 다양한 기준에 따라 책임을 할당하고 결과를.. 2022. 1. 17. Chapter 4. 설계 품질과 트레이드오프 객체지향 설계의 핵심은 역할, 책임, 협력이다. 1. 협력: 애플리케이션 기능 구현을 위한 객체들 간의 상호작용. 2. 책임: 객체가 다른 객체와의 협력을 위해 수행하는 행동. 3. 역할: 대체 가능한 책임의 집합. 객체지향 설계에서 가장 중요한 것은 적절한 책임 할당이다. 적절한 책임 할당이 이루어 져야 제대로된 협력이 가능하고 제대로된 역할의 배분이 이루어진다. 객체지향 설계는 올바른 책임을 할당해 낮은 결합도와 높은 응집도를 가진 구조를 만드는 것이다. 이 말에는 다음과 같은 두 가지 관점이 섞여있다. 1. 객체지향 설계의 핵심이 책임이다. 2. 책임을 할당하는 작업이 응집도와 결합도 같은 설계 품질과 깊이 연관되 있다. 설계를 변경한다는 것은 비용 발생과 직결되 있다. 따라서 합리적인 비용 내에서.. 2022. 1. 10. Chapter 1. 객체, 설계 티켓 판매 애플리케이션 구현 소극장에서 이벤트를 통해 공연을 무료로 관람할 수 있는 관객과 표를 구매해야 하는 관객이 있다고 가정하자. 이벤트에 당첨된 관객은 당첨을 입증하는 표를 연극표로 교환한 뒤에 입장할 수 있다. 따라서 연극 당일날 이 두 종류의 관객을 입장시킬때 당첨여부를 확인하고 당첨자가 아니라면 티켓을 판매한 뒤 입장해야 한다. 이를 구현하기 위해 다음과 같은 클래스들을 설계하자 1 2 3 4 5 6 7 /** * 이벤트 당첨자에게 발송되는 초대장 */ public class Invitation { /** 초대 일자 */ private LocalDateTime when; } cs 1 2 3 4 5 6 7 8 9 10 11 12 /** * 공연을 관람하는 사람들이 가지고 있어야 하는 티켓 */.. 2022. 1. 1. 하위 설계 모듈 설계 모듈화 -SW개발에서 큰 문제를 작은 문제로 나누는것, 정해진 크기가 없어서 클래스, 함수 등이 모두 모듈이될 수 있다. 모듈: 하나 또는 몇개의 논리적인 기능을 수행하기 위한 명령어들의 집합 모듈화 특징: -다른 것들과 구별될 수 있는 독립적인 기능을 갖는 단위 -유일한 이름이 있어야 된다 -독립적으로 컴파일이 가능해야 됨 -모듈에서 또 다른 모듈을 호출할 수 있다 -다른 프로그램에서도 모듈을 호출하 수 있다. 좋은 모듈 설계을 위한 원칙 -결합도: 모듈 간의 결합(coupling)은 느슨하게한다(6단계) -모듈과 모듈 사이의 관계에서 관련 정도 -좋은 설계: loosel coupled. 상호 의존성이 줄어 모듈의 독립성이 높아지고 모듈 간에 영향이 적기 때문이다 -응집도: 모듈 내 구성 요.. 2021. 5. 6. 이전 1 다음 728x90