객체지향12 객체지향의 사실과 오해(6-2) 재료 합치기 : 기능과 구조의 통합 도메인 모델, 유스케이스, 그리고 책임-주도 설계 객체지향에서는 시스템을 하나의 큰 객체로 바라본다. 따라서 사용자가 시스템에게 요구하는 기능은 시스템의 책임으로 볼 수 있다. 사실 앞에서 살펴본 책임-주도 설계는 이 지점부터 적용된다. 유스케이스는 시스템이 제공할 기능을 시스템의 책임리스트 역할을 할 수 있다. (앞서 객체의 공용 인터페이스) 이렇게 시스템에 할당된 커다란 책임은 더 작은 규모의 책임으로 세분화 되어 시스템 안의 작은 규모의 객체들이 서로 협력하며 책임을 다 할 것이다. 각자의 작은 책임을 다 하기 위해 할당된 작은 규모의 객체들이 안정적인 구조로 협력하 위해서는 어떻게 해야 할까? 바로 도메인 모델을 참고하는 것이다. 우리는 도메인 모델에 포함된 개.. 2022. 4. 7. 객체지향의 사실과 오해(6-1) 객체 지도 길을 찾기위한 두가지 방법. 1. 다른 사람에게 길을 물어보는 방법 - 해결 방법 지향적인 접근법 2. 지도를 이용하는 방법 - 문제 지향적인 접근법 길을 묻는 방법은 A -> B로 이동하는 현재의 요구만 만족시킬 수 있는 반면에 지도는 현재의 목적뿐만 아니라 다양한 목적을 위해 재사용될 수 있다. 이처럼 지도가 범용적인 이유는 지도를 이용하려는 사람들이 원하는 '기능'에 비해 지도에 표시된 '구조'가 더 안정적이기 때문이다. 이번장에서는 기능이 아니라 구조를 바탕으로 시스템을 분할하는 객체지향의 또 다른 측면에 관해 설명한다. 자주 변경되는 기능이 아니라 안정적인 구조를 따라 역할, 책임, 협력을 구성하는 객체지향적인 접근법을 살펴보도록 하자. 기능 설계 vs 구조 설계 훌륭한 기능이 훌륭한.. 2022. 4. 7. 객체지향의 사실과 오해(5-2) 객체 인터페이스 일반적으로 인터페이스란 어떤 두 사물이 마주치는 경계 지점에서 서로 상호작용할 수 있게 이어주는 방법이나 장치를 의미한다. 프로그래밍의 인터페이스 또한 똑같다. 개발자들이 미리 약속된 애플리케이션 프로그래밍 인터페이스를 통해 다른 사람이 작성한 코드와 상호작용한다. 인터페이스는 다음과 같은 세 가지 특징을 지닌다. 1. 인터페이스의 사용법을 익히기만 하면 내부 구조나 동작 방식을 몰라도 쉽게 대상의 조작하거나 의사를 전달할 수 있다. 2. 인터페이스 자체를 변경하지 않고 단순히 내부 구성이나 작동 방식만을 변경하는 것은 인터페이스 사용자에게 어떤 영향도 미치지 않는다. 3. 대상이 변경되더라도 동일한 인터페이스를 제공하기만 하면 아무런 문제 없이 사용작용할 수 있다. - ex) 하나의 자.. 2022. 3. 31. 객체지향의 사실과 오해(5-1) 자율적인 책임 객체가 책임을 자율적으로 수행하기 위해서는 객체에게 할당되는 책임 또한 자율적이여야 한다. 만약 왕이 모자 장수에게 ‘목격했던 장면을 떠올리고’, ‘떠오르는 기억을 시간 순서대로 재구성’한 후, ‘말로 간결하게 표현’해야라는 증언 요청을 보낸다면 모자장수 증언하라는 최종 목표는 만족시키지 몰라도 모자 장수가 누려야 하는 선택의 자유를 크게 훼손시키고 만다. 결국 모자 장수는 책임을 수행하기 위해 자신의 의지나 판단력이 아닌 왕의 명령에 의존할 수밖에 없게 된다. 객체지향 세계는 자율적인 객체들의 공동체라는 점을 명심해라. 객채가 자율적이기 위해서는 객체에게 할당되는 책임의 수준 역시 자율적이어야 한다. 이는 전체 애플리케이션의 품질을 결정한다. 너무 추상적인 책임 하지만 포괄적이고 추상적인.. 2022. 3. 31. 이전 1 2 3 다음