객체지향(3)
-
[오브젝트 : 코드로 이해하는 객체지향 설계] 5. 책임 할당하기
1. 책임 주도 설계 데이터보다 행동을 먼저 결정하라 협력이라는 문맥 안에서 책임을 결정하라 책임 주도 설계의 흐름 시스템이 사용자에게 제공해야 하는 기능인 시스템 책임을 파악한다. 시스템 책임을 더 작은 책임으로 분할한다. 분할 된 책임을 수행할 수 있는 적절한 객체 또는 역할을 찾아 책임을 할당한다. 객체가 책임을 수행하는 도중 다른 객체의 도움이 필요한 경우 이를 책임질 적절한 객체 또는 역할을 찾는다. 해당 객체 또는 역할에게 책임을 할당함으로써 두 객체가 협력하게 한다. 2. GRASP패턴 GRASP(General Responsibility Assignment Software Pattern)⇒ 일반적인 책임 할당을 위한 소프트웨어 패턴으로 객체에게 책임을 할당할 때 지침으로 삼을 수 있는 원칙들..
2021.09.02 -
[오브젝트 : 코드로 이해하는 객체지향 설계] 4. 설계 품질과 트레이드오프
4장에서는 데이터 중심의 영화 예매 시스템을 보고 이것이 얼마나 객체지향과 거리가 멀고, 어떤 설계방법이 객체지향적인지를 보여주는 장입니다. 설계 트레이드오프 캡슐화 - 변경 가능성이 높은 부분을 객체 내부로 숨기는 추상화 기법 구현 - 변경될 가능성이 높은 부분 인터페이스 - 상대적으로 안정적인 부분 변경될 수 있는 어떤 것이라도 캡슐화 해야 한다. 응집도와 결합도 응집도 - 모듈에 포함된 내부 요소들이 연관돼 있는 정도 모듈 내의 요소들이 하나의 목적을 추구하냐(높은) 서로 다른 목적을 추구하냐(낮은)에 따라서 응집도를 갖게 된다. 객체지향에서의 응집도 ⇒ 객체 또는 클래스에 얼마나 관련 높은 책임들을 할당했는지 결합도 - 의존성의 정도를 나타내며 다른 모듈에 대해 얼마나 많은 지식을 갖고 있는지를 ..
2021.08.27 -
[오브젝트 : 코드로 이해하는 객체지향 설계] 1. 객체, 설계
※ 본 게시글은 오브젝트라는 책을 읽고 정리한 글입니다. ※ 소프트웨어 모듈의 세 가지 목적 실행 중에 제대로 동작해야 한다. 변경에 용이해야 한다. ⇒ 요구사항이 항상 변경되기 때문 코드를 읽는 사람과 의사소통이 되어야 한다. 이 책에서는 세 가지 목적을 달성한 훌륭한 객체지향 설계를 할 수 있도록 코드를 변경하며, 어떤것이 좋은 코드인지 설명합니다. 객체지향의 목적 캡슐화, 책임이동, 데이터와 프로세스의 통합으로 결합도를 낮추고 응집도를 높이는 것 의존성과 결합도 결합도 : 모듈과 모듈간의 의존도. 객체 사이의 의존성이 높은 경우 결합도가 높다고 한다. 의존성이 높은 객체 : 객체가 변경될 때 그 객체에 의존하는 다른 객체도 함께 변경될 수 있다. 결합도를 낮추는 방법 1. 캡슐화 캡슐화 : 객체 내..
2021.08.11