읽은 책 정리/객체지향의 사실과 오해 7

07 함께 모으기

객체지향 설계안에 존재하는 세가지 상호연관된 관점에 대해 시작한다. 1.개념관점 설계는 도메인안에 존재하는 개념과 개념들 사이의 관계를 표현한다. (실제 도메인의 규칙과 제약을 최대한 유사하게 반영하는게 핵심이다.) 2.명세 관점 사용자의 영역인 도메인을 벗어나, 개발자의 영역인 소프트웨어로 초점이 옮겨진다. 객체의 인터페이스를 바라보게된다 객체가 협력을 위해 '무엇'을 할수 있는가에 초점을 맞춘다. 3. 구현 관점 실제 작업을 수행하는 코드와 연관되있다. (객체들이 책임을 수행하는데 필요한 동작하는 코드를 작성한다) 어떻게 수행할것인가에 초점을 둔다 도메인 모델 도메인 모델의 중요성은 어떤타입이 도메인을 구성하느냐의 타입들 사이에 어떤관계가 존재하는지를 파악함으로써 도메인을 이해하는것 * 객체지향 설계..

06 객체 지도

자주변경되는 기능이 아니라, 안정적인 구조를 따라 역할,책임,협력을 구성하라. 길을 찾는 나그네 길을 찾는나그네가 있다. 나그네는 두가지 방법으로 길을 찾고있다. 길을 직접 사람에게 물어보는 방법 (기능적이고, 해결방법 지향적인 접근법) (재사용성이 떨어진다. A에서 B로 변경하려면 B의 길을 아는사람을 또찾아야함.) 지도를 이용하는방법 , 지도는 길을 찾는데 필요한 구체적인 기능이 아니라, 길을 찾을수 있는 '구조'를 제공 ( 구조적이고 문제 지향적인 접근법) 지도(구조적)는 요구사항이 변경되어도 수용가능하나, 사람에게 길을 물어봐서(기능적) 길을 찾는건 수용이 불가능하다. * 기능을 중심으로 구조를 종속시키는 접근법은 범용적이지않고, 재사용이 불가능하며 변경에 취약한 모델을 낳게된다. (소프트웨어의 ..

05 책임과 메시지

책임과 분산 사건에 대해 목격자가 많으면, 많을수록 개인이 느끼는 책임감은 적어진다. 훌륭한 객체지향의 세계는 명확하게 정의된 역할과 책임을 지닌 객체들이 상호 협력하는 세계다. (역할과 책임이 흐릿할수록 발작을 일으키는 객체를 도와줄 어떤 협력자도 찾기 힘들다.) 자율성 객체지향 공동체를 구성하는 기본단위는 '자율적' 객체이다. 객체들은 애플리케이션의 기능을 구현하기 위해 협력하고 협력 과정에서 각자 맡은바 책임을 다하기 위해 자율적으로 판단하고 행동한다. (타인이 정한 규칙이나, 명령에 따라 판단하고 행동하는 객체는 자율적인 객체라고 보기 어렵다.) * 적절한 책임이 자율적인 객체를 낳고, 자율적인 객체들이 모여 유연하고 단순한 협력을 낳는다. 앨리스의 이야기에서 예로 들자면, '판사'가 '증언하라'..

04 역할, 책임, 협력

최후 통첩게임 실험 이야기의 내용은 인간의 본질적인 특성은 합리적이고, 이기적이다 라고 한다. 하지만 최후 통첩게임 실험에서는 인간은 본질적인 특성이 아니라, 어떤 상황에 처해 있느냐가 인간의 행동을 결정한다. 협력에 얼마나 적절한지에 따라, 행동의 적합성이 결정되며 협력이라는 문맥이 인간의 행동방식을 결정한다. 객체도 동일하게 협력이라는 문맥이 객체의 행동방식을 결정하게된다. 초보자들의 실수는 협력이라는 문맥을 고려하지않은채 객체가 가져야할 상태와 행동부터 고민한다. 중요한것은 개별 객체 별로 바라보지말고 핵심은 객체들 사이의 협력이다. 어떤 협력에 참여하는지가 객체에 필요한 행동을 결정하고, 필요한 행동이 객체의 상태를 결정한다. 협력 우리가 직면하게 되는 문제는 혼자만의 힘으로 해결하기 어렵기떄문에..

03 타입과 추상화

3장은 지하철 노선도의 역사로부터 이야기가 시작된다. 처음의 노선도를 만든 사람 헤리백은 '정확성을' 버리고 '목적'에 집중했다. (지하철을 갈아탈때 지형같은 특징들을 신경쓰지않고, 지하철을 타는 수단의 목적에 집중했다.) *추상화 불필요한 부분을 도려내가면서, 사물의 놀라운 본질을 드러나게하는 과정이다. 앨리스에서 나오는 정원사,병사,신하,왕자,공주,하객 등등.. 모두 객체이다 각각 특정한 모습을 갖추고 있을텐데, 영화에서 나오는 앨리스는 각각의 차이점으로 바라보지않고 '트럼프' 라는 유사성을 기반으로 추상화 해서 바라본다. 앨리스는 인물들의 차이점을 의도적으로 무시하고, 공통점만 강조함으로써 '트럼프'라고 정의를 해버린다.(단순화) 구체적인 사물의 공통점은 취하고, 차이점을 버리는 일반화를 통해 단순..

02 이상한 나라의 객체

두번째 장은 이상한 나라의 앨리스의 관한 내용으로 이야기를 써 내려간다. 앨리스는 정원으로 통하는 문을 통과하기에 적당한 상태로, 자신의 키를 변화 시키는 '음료를 마셔라' 라는 행동으로 키가 변한다 * 앨리스의 상태를 결정하는것은 행동이지만, 행동의 결과를 결정하는것은 상태다. //(행동간 순서가 중요하다는것을 의미 EX) 앨리스 키가 작아진다 -> 문의 크기에 맞다 통과된다.) 앨리스는 상태를 가지며, 상태 변경 가능하다. 상태를 변경시키는것은 앨리스의 행동이다 앨리스는 어떤 상태에 있더라도 유일하게 식별이 가능하다. 객체 상태,행동,식별자 를 지닌 실체로 보는것이 효과적이다. (상태를 이용하면 과거에 얽매이지 않고, 현재를 기반으로 객체의 행동방식을 이해할수있다.) 예를 들자면, 비행기 탑승 가능 ..

01 협력하는 객체들의 공동체

* 객체지향에서의 가장 중요한 개념 3가지 역할 책임 협력 하나의 문제를 해결하기 위해, 한사람의 요청이 또다른 사람에 대한 요청을 유발하는게 일반적 ( 요청은 연쇄적으로 발생) 손님 -> 캐시어-> 바리스타 협력의 성공은 특정한 역할을 맡은 개인이, 얼마나 요청을 성실히 이행했는가에 달려있음. 역할과 책임에서 특정한 역할은 특정한 책임을 암시한다. @ 역할은 대체 가능성을 의미한다. (손님 입장에선 누가 주문을 받던말던 커피시킨게 잘나오기만하면됨) @ 책임을 수행 하는 방법은 자율적 선택가능 (동일한 요청을 받아도, 서로다른 방식으로 응답할수 있는 능력 // 다형성이 포함된다) * 객체지향의 근본개념은 실세계에서 사람들이 타인과 관계를 맺으며 협력하는 과정과 유사하다. 사람들의 협력이 객체들의 협력과 ..