본문 바로가기

책/객체지향의 사실과 오해 (완)

(7)
07 함께 모으기 책에서 언급한 내용들을 한데 모으며 이러한 것들을 배웠고 또 어떻게 써먹을 수 있는지 알려주는 챕터였습니다. 총정리를 하는 성격이 강했기에 새롭게 배운 내용들이 적습니다. 그렇기에 포스팅의 길이가 다소 짧을수 있습니다. 객체지향 설계 안에 존재하는 세 가지 상호 연관된 관점에 관해 설명한다. 파울러는 세가지 관점을 각각 개념 관점, 명세 관점, 구현 관점이라고 부른다. ... 개념 관점에서 설계는 도메인 안에 존재하는 개념과 개념들 사이의 관계를 표현하다. ... 실제 도메인의 규칙과 제약을 최대한 유사하게 반영하는 것이 핵심이다. ... 명세 관점에 이르면 사용자의 영역인 도메인을 벗어나 개발자의 영역인 소프트웨어로 초점이 옮겨진다. 명세 관점은 도메이느이 개념이 아니라 실제로 소프트웨어 안에서 살아 ..
06 객체지도 설계를 할 때 기능을 중심으로 설계를 하는 것이 아닌 구조를 중심으로 설계를 하라는 말이 와닿았습니다. 구조 중심으로 설계를 하며 객체간 메시지를 주고받는 것이 핵심인듯 합니다. 기능이 아니라 구조를 기반으로 모델을 구축하는 편이 좀 더범용적이고 이해하기 쉬우며 변경에 안정적이라는 것이다. ... 객체지향은 자주 변경되는 기능이 아니라 안정적인 구조를 기반으로 시스템을 구조화한다. 기능이 아닌 구조를, 변경에 유연한 구조를 설계하는 것이 중요하다는 생각이 들었습니다. 기능 설계 대 구조 설계 미래에 대비하는 가장 좋은 방법은 변경을 예측하는 것이 아니라 변경을 수용할 수 있는 선택의 여지를 설계에 마련해 놓는 것이다. ... 전통적인 기능 분해는 자주 변경되는 기능을 중심으로 설계한 후 구조가 기능에 따..
05 책임과 메시지 4장에 이어 5장에서는 설계에 도움이 될 법한 실질적인 조언을 해주고 있습니다. 저자는 '메시지'의 역할 및 중요성을 이야기하고 이를 설계와 코드에 어떻게 녹이며, 인터페이스의 역할에 대해 이야기를 합니다. 또한 책을 읽으며 5장에서는 중요하다고 느낀 부분이 너무 많다고 느꼈습니다. 자율적인 책임 설계의 품질을 좌우하는 책임 적절한 책임이 자율적인 객체를 낳고, 자율적인 객체들이 모여 유연하고 단순한 협력을 낳는다. 따라서 참여하는 객체가 얼마나 자율적인지가 전체 애플리케이션의 품질을 결정한다. ... 객체가 자율적이기 위해서는 객체에게 할당되는 책임의 수준 역시 자율적이어야 한다. 이 문장은 5장 전체를 관통한다 보아도 무방합니다. 후술한 문장및 저의 생각은 이 문장에서 크게 벗어나지 않습니다. 객체지..
04 역할, 책임, 협력 이 장에서는 이전 장에서 추상적으로 말하던 "협력", "책임", "역할"에 대해 보다 구체적으로 말한 장이라 생각합니다. 그렇기에 지금까지 보았던 챕터중 가장 핵심적이며 도움되는 장이라고도 생각합니다. 4장에서 가장 기억에 남는 내용은 ,책의 제목과는 무관하게도, TDD에 대한 내용이였습니다. 해당 내용은 챕터의 마지막 부분에 짧막하게 나오지만 객체지향 패러다임과 TDD를 엮어 이야기를 했다는 점이 특히 기억에 남습니다. 협력 요청하고 응답하며 협력하는 사람들 협력은 한 사람이 다른 사람에게 도움을 요청할 때 시작된다. ... 결과적으로 협력은 다수의 요청과 응답으로 구성되며 전체적으로 협력은 다수의 연쇄적인 요청과 응답의 흐름으로 구성된다. 제가 생각하는 협력의 핵심은 "다수", "요청과 응답"이라고 ..
03 타입과 추상화 추상화는 현실에서 출발하되 불필요한 부분을 도려내가면서 사물의 놀라운 본질을 드러나게 하는 과정이라고 할 수 있다. 3장에서 말하는 추상화에 대한 개요를 언급하는 부분이라고 생각합니다. 추상화 어떤 양상, 세부사항, 구조를 좀 더 명확하게 이해하기 위해 특정 절차나 물체를 의도적으로 생략하거나 감춤으로써 복잡도를 극복하는 방법이다. 복잡도를 낮추기 위해 추상화는 두 차원에서 이뤄진다. - 첫번째 차원은 구체적인 사물들 간의 공통점은 취하고 차이점은 버리는 일반화를 통해 단순하게 만드는 것이다. - 두번째 차원은 중요한 부분을 강조하기 위해 불필요한 세부 사항을 제거함으로써 단순하게 만드는 것이다. 3장에서는 추상화의 정의와 두 가지 차원들이 어떻게 실생활에 적용되고 또 어떻게 코드로 적용되는지를 설명합니..
02 이상한 나라의 객체 키워드 상태 행동 프로퍼티 프로퍼티 값 링크 상태와 행동간의 관계 CQS 의인화 은유 특징 객체는 상태를 가지며 상태는 변경 가능하다. 객체의 상태를 변경시키는 것은 객체의 행동이다. 행동의 결과는 상태에 의존적이며 상태를 이용해 서술할 수 있다. 행동의 순서가 결과에 영향을 미친다. 객체는 어떤 상태에 있더라도 유일하게 식별 가능하다. 객체의 행동은 상태에 영향을 받는다. 객체의 행동은 상태를 변경시킨다. 상호작용이 현재의 상태에 어떤 방식으로 의존하는가 상호작용이 어떻게 현재의 상태를 변경시키는가. 객체는 상태를 가지며 상태는 변경 가능하다. 객체의 상태를 변경시키는 것은 객체의 행동이다. 행동의 결과는 상태에 의존적이며 상태를 이용해 서술할 수 있다. 행동의 순서가 실행 결과에 영향을 미친다. 정리..
01 협력하는 객체들의 공동체 시너지를 생각하라. 전체는 부분의 합보다 크다. 우아한 테크 코스에 떨어지고 객체지향이라는 패러다임을 제대로 공부하고자 기록합니다. 01장에서는 객체지향프로그래밍이라는 개념을 짚고 넘어가는 장이였다고 생각합니다. 목차에는 다음과 같이 이루어져 있습니다. 이 중에서 제가 인상깊게 읽은 부분은 아래와 같습니다. 역할과 책임, 협력 관점에서 본 객체지향 여러 객체가 동일한 역할을 수행할 수 있다. 역할은 대체 가능성을 의미한다. 각 객체는 책임을 수행하는 방법을 자율적으로 선택할 수 있다. 하나의 객체가 동시에 여러 역할을 수행할 수 있다. 책에서 제시한 내용은 대체로 그동안 무의식적으로 사용하고 있던 추상화, 다형성, 캡슐화의 의미를 풀어서 설명했다고 생각합니다. 그렇기에 그동안 한마디로 사용하고 있었지만 ..