본문 바로가기
반응형
SMALL

그룹 스터디 공부(IT 서적)/객체지향의 사실과 오해9

부록 추상화 기법 도메인에 존재하는 개념들을 구조화하고 단순화하기 위해 다양한 추상화 기법을 사용할 수 있다. 주요 추상화 기법의 종류들 분류와 인스턴스화 일반화와 특수화 집합과 분해 분류와 인스턴스화 개념과 범주 도로 위를 달리는 작은 승용차와 버스, 트럭들을 가리켜 ‘자동차’라고 하며, 길거리에 자라고 있는 다양한 종류의 가로수들을 일컬어 ‘나무’라고 할 수 있다. 개별 자동차와 나무는 완전히 동일하지 않지만 유사한 특성을 바탕으로 각각 ‘자동차’와 ‘나무’로 분류할 수 있다. 이처럼 객체를 분류하고 범주로 묶는 것은 객체들의 특정 집합에 공통의 개념을 적용하는 것을 의미한다. 자동차 - 바퀴를 이용해 사람들을 한 장소에서 다른 장소로 운반하는 운송수단 (이라는 특징) 나무 - 푸른 잎과 갈색의 줄기를 가.. 2023. 7. 21.
07 / 함께 모으기 개념 관점 설계는 도메인 안에 존재하는 개념과 개념들 사이의 관계를 표현한다. 사용자가 도메인을 바라보는 관점을 반영한다. 실제 도메인의 규칙과 제약을 최대한 유사하게 반영하는 것이 핵심이다. 명세 관점 객체의 인터페이스를 바라보게 된다. = 실제로 소프트웨어 안에서 살아 숨쉬는 객체들의 책임에 초점을 맞추게 된다. 프로그래머는 객체가 협력을 위해 ‘무엇’을 할 수 있는가에 초점을 맞춘다. “구현이 아니라 인터페이스에 대해 프로그래밍하라”를 따르는 것은 명세 관점과 구현 관점을 명확하게 분리하는 것에서부터 시작된다. 구현 관점(Implementation Perspective) 실제 작업을 수행하는 코드와 연관되어 있다. 객체들이 책임을 수행하는 데 필요한 동작하는 코드를 작성하는 것에 초점을 맞춘다. 프.. 2023. 7. 21.
06 / 객체 지도 객체 지도 길을 직접 알려주는 방법 vs 지도를 이용하는 방법 길을 직접 알려주는 방법 기능적이고 해결 방법 지향적인 접근법 길을 찾는데 필요한 구체적인 기능을 제공한다. 현재의 요구만을 만족시킬 수 있다. 지도를 이용하는 방법 구조적이고 문제 지향적인 접근법 길을 찾는데 필요한 구조를 제공한다. 다양한 목적을 위해 재사용될 수 있다.(범용적) 지도를 제작한 사람들이 지도를 만들 때는 지도를 사용할 사람이 구체적으로 어떤 목적으로 사용할지 알지 못한다. 기능에 대한 요구사항이 계속 변함에도 지도는 모든 요구사항을 수용할 수 있다. 기능에 비해 상대적으로 잘 변하지 않는 안정적인 지형 정보를 기반으로 하고 있기 때문이다. 기능이 아니라 구조를 기반으로 모델을 구축하는 편이 좀 더 범용적이고 이해하기 쉬우며.. 2023. 7. 21.
05 / 책임과 메시지 의도는 "메시징"이다. 훌륭하고 성장 가능한 시스템을 만들기 위한 핵심은 모듈 내부의 속성과 행동이 어떤가보다는 모듈이 어떻게 커뮤니케이션하는가에 달려 있다. 휼륭한 객체지향의 세계는 명확하게 정의된 역할과 책임을 지닌 객체들이 상호 협력하는 세계다. 자율적인 책임 자율적인 객체란 스스로 정한 원칙에 따라 판단하고 스스로의 의지를 기반으로 행동하는 객체 객체가 어떤 행동을 하는 유일한 이유는 다른 객체로부터 요청을 수신(메시지)했기 때문이다. 요청을 처리하기 위해 객체가 수행하는 행동을 책임이라고 한다. 결국 객체지향 설계는 적절한 책임을 적절한 객체에게 할당하는 과정으로 이루어진다. 객체가 자율적이기 위해서는 객체에게 할당되는 책임의 수준 역시 자율적이어야 한다. 하지만 그렇다고 책임이 너무 추상적이면.. 2023. 7. 21.
04 / 역할, 책임, 협력 우리 모두를 합친 것보다 더 현명한 사람은 없다 4장 역할, 책임, 협력 객체의 세계에서 중요한 것은 개별 객체가 아니라 객체들 사이에 이뤄지는 협력이다. 협력이 자리 잡으면 저절로 객체의 행동이 드러나고 뒤이어 적절한 객체의 상태가 결정된다. 즉, 어떤 협력에 참여하는지가 객체에 필요한 행동을 결정하고 필요한 행동이 객체의 상태를 결정한다. 협력 요청하고 응답하며 협력하는 사람들 협력은 한 사람이 다른 사람에게 도움을 요청할 때 시작된다. 자신에게 할당된 일이나 업무를 처리하던 중에 스스로 해결하기 어려운 문제에 부딪히게 되면 문제를 해결하는데 필요한 지식을 알고 있거나 도움을 받을 수 있는 누군가에게 도움을 요청하게 된다. 요청을 받은 사람은 일을 처리한 후 요청한 사람에게 필요한 지식이나 서비스를 .. 2023. 7. 21.
03 / 타입과 추상화 추상화 어떤 양상, 세부사항, 구조를 좀 더 명확하게 이해하기 위해 특정 절차나 물체를 의도적으로 생략하거나 감춤으로써 복잡도를 극복하는 방법이다. 구체적인 사물들 간의 공통점은 취하고 차이점은 버리는 일반화를 통해 단순하게 만드는 것이다. 중요한 부분을 강조하기 위해 불필요한 세부사항을 제거함으로써 단순하게 만드는 것이다. 개념 공통점을 기반으로 객체들을 묶기 위한 그릇이며 개념은 객체들의 복잡성을 극복하기 위한 추상화 도구이다 개념을 이용하면 객체를 여러 그룹으로 분류할 수 있는데 각 객체는 특정한 개념을 표현하는 그룹의 일원으로 포함되는데 이때 객체를 그 개념의 인스턴스라고 한다. 객체란 특정한 개념을 적용할 수 있는 구체적인 사물을 의미한다. 개념이 객체에 적용됐을 때 객체를 개념의 인스턴스라고 .. 2023. 7. 21.
반응형
LIST