본문 바로가기

객체지향7

객체지향(7) - 정리 이 장의 목표는 1장부터 6장까지 다룬 내용을 동작하는 코드를 통해 정리하는 것입니다. 7장을 읽고 나면 추상적으로 흩어져 있던 개념들이 좀더 명확하고 구체적인 실체로 다가올 것입니다. 이번 장에서는 커피 전문점과 관련된 간단한 예제로 시작할 것이며, 예제를 통해 다음의 두가지 목표를 달성할 것입니다. 첫 번째 목표는 도메인 모델에서 시작해 최종 코드까지의 구현 과정을 간략하게나마 설명하는 것 두 번째 목표는 구현 클래스를 개념관점, 명세관점, 구현관점에서 바라본다는 것이 무엇을 의미하는지 설명하는 것 마틴 파울러는 객체지향 설계 안에 존재하는 세 가지 상호 연관된 관점에 관해 설명합니다. 파울러는 세 가지 관점을 각각 개념관점, 명세 관점, 구현 관점이라고 부릅니다. 개념관점 : 개념관점에서 설계는 도.. 2022. 3. 17.
객체지향(6) - 객체 지도 이번장에서는 객체지향이 구조와 기능이라는 두 가지 관점을 어ᄄᅠᇂ게 조화시키는에 관해 설명합니다. 구조는 기능에 비해 변화에 더 안정적입니다. 따라서 객체지향 패러다임은 객체들의 구조안에 기능을 녹임으로써 변화에 안정적인 소프트웨어를 개발할 수 있게 합니다. 만약 도메인 모델에 관해 들어본 적이 있다면 이번 장에서 도메인 모델과 객체지향 패러다임 사이의 관계를 이해하게 될 것입니다. 또한 자주 변경되는 기능이 아니라 안정적인 구조를 기반으로 시스템을 분할하는 객체지향적인 접근법은 역할, 책임, 협력을 기반으로 시스템의 기능을 구현하는 책임-주도설계의 본질을 이해하는 데도 도움이 될 것입니다. 기능을 중심으로 구조를 종속시키는 접근법은 범용적이지 않고 재사용이 불가능하며 변경에 취약한 모델을 낳게 된다. .. 2022. 3. 17.
객체지향(5) - 책임과 메시지 이번 장에서는 훌륭한 메시지가 훌륭한 객체지향의 설계의 기반이라는 사실을 강조합니다. 객체의 자율성과 설계의 유연성은 얼마나 훌륭한 메시지를 선택하느냐에 달려 있습니다. 여러분이 이 책에서 단 하나의 장만 읽겠다고 한다면 5장을 읽기를 권해드리겠습니다. 훌륭한 객체지향의 세계는 명확하게 정의된 역할과 책임을 지닌 객체들이 상호 협력하는 세계다. 역할과 책임이 흐릿할수록 발작을 일으키는 객체를 도와줄 어떤 협력자도 찾지 못할 것이다. 자율적인 책임 설계의 품질을 좌우하는 책임 객체들은 애플리케이션의 기능을 구현하기 위해 협력하고, 협력 과정에서 각자 맡은 바 책임을 다하기 위해 자율적으로 판단하고 행동한다. 여기서 키워드는 "자율성"이다. 타인이 정한 규칙이나 명령에 따라 판단하고 행동하는 객체는 자율적인.. 2022. 3. 17.
객체지향(4) - 역할, 책임, 협력 이 장에서는 객체지향 설계의 가장 중요한 재료인 역할, 책임, 협력에 관해 설명합니다. 객체들은 협력에 참여하기 위해 특정한 역할을 맡고 역할에 적합한 책임을 수행하게 됩니다. 대부분의 사람들은 객체지향이라는 말에서 클래스와 상속을 떠올리겠지만 4장을 읽고나면 역할, 책임, 협력이 객체지향의 핵심이라는 사실을 알게 될 것입니다. 객체지향에 갓 입문한 사람들의 가장 흔한 실수는 협력이라는 문맥을 고려하지 않은 채 객체가 가져야할 상태와 행동부터 고민하기 시작한다는 것이다. 중요한 것은 개별 객체가 아니라 객체들 사이에 이뤄지는 협력이다. 객체지향 설계의 전체적인 품질을 결정하는 것은 객별 객체의 품질이 아니라 여러 객체들이 모여 이뤄내는 협력의 품질이다. 훌륭한 객체지향 설계자는 객체들 간의 요청과 응답 .. 2022. 3. 17.
객체지향(3) - 타입과 추상화 3장에서는 소프트웨어 개발에서 가장 중요한 개념인 추상화와 마주치게 될 것 거창해 보이지만 추상화는 단순화를 의미함 객체지향 패러다임에서 가장 널리 사용되는 추상화는 동적인 객체들을 단순화시켜 정적인 타입으로 갈무리하는 것 타입의 개념을 이해하고 나면 객체를 구현하기 위해 클래스를 사용하는 이유를 이해하게 될 것 추상화를 통한 복잡성 극복 헤리 백의 현대적인 지하철 노선도의 원형 이야기 불필요한 지형 정보를 제거함으로써 단순함을 달성한 추상화의 훌륭한 예 현실에 존재하는 다양한 현상 및 상호작용하기 위해서는 우선 현실을 이해해야 한다. 문제는 복잡성의 총체인 현실이라는 괴물을 그대로 수용하기에는 인간이 지니고 있는 인지 능력과 저장 공간이 너무나도 보잘것이 없다는 점이다. 따라서 사람들은 본능적으로 이해.. 2022. 3. 17.