Study/객체지향의 사실과 오해7 6장: 객체 지도 유일하게 변하지 않는 것은 모든 것이 변한다는 사실뿐이다. - 헤라클레이토스(Heraclitus of Ephesus) 여행 중에 다른 마을로 이동해야 하는데 길을 모른다고 가정해 보자. 이 경우 사람들은 다음의 두 가지 방법 중 하나를 이용해 길을 찾는다. 1. 지나가는 사람에게 마을까지 가는 길을 직접 물어본다 2. 지도에 표시된 길을 따라가는 방법 길을 찾는 입장에서는 어떤 방법을 사용하건 상관없이 목적지로 이동할 수 있겠지만 방법에 따라 길을 찾는 과정과 난이도면에서는 차이가 난다. 첫 번째 방법은 '기능적이고 해결책 지향적인 접근법(functional, solution-directed approach)'이다. 길을 가르쳐 주는 사람은 다른 마을까지 가는 경로를 단계별로 상세히 설명해야 한다. 사람.. 2021. 9. 12. 5장: 책임과 메시지 책은 이미 다 읽었고 요즘 최범균님이 저서인 개발자가 반드시 정복해야 할 객체지향과 디자인 패턴 책을 보고 있는데, 앞부분의 객체지향 내용이 여기 객체지향의 사실과 오해에서 나오는 내용들이다!! 그럼 시작 의도는 "메시징"이다. 훌륭하고 성장 가능한 시스템을 만들기 위한 핵심은 모듈 내부의 속성과 행동이 어떤가보다는 모듈이 어떻게 커뮤니케이션하는가에 달려 있다. - 앨런 케이(Kay 1998) 책임감 분산(diffusion of responsibility): 사건에 대한 목격자가 많으면 많을수록 개인이 느끼는 책임감은 적어진다. 대부분의 사람들은 자신에게 명확한 책임이 없는 경우에는 어떤 사건에 대한 일을 타인의 책임으로 간주해버린다. 그에 반해 이를 보고할 책임이 명확하게 주어진 경우에는 신속하게 위기.. 2021. 9. 10. 4장: 역할, 책임, 협력 개인적으로 정말 중요한 장이라 생각한다...! 이미 책을 다 읽고나서 B-logging중이지만 RDD, 객체지향 설계의 핵심이 들어있는 파트라고 말할 수 있다.(블로그 주인 생각) 우리 모두를 합친 것보다 더 현명한 사람은 없다. - 켄 블랜차드(Ken Blanchard) 인간은 어떤 본질적인 특성을 지니고 있느냐가 아니라 어떤 상황에 처해 있느냐가 인간의 행동을 결정한다. 즉, 각 개인이 처해 있는 정황 또는 문맥(context)이 인간의 행동 방식을 결정한다는 것이다. 여기서 인간의 행동을 결정하는 문맥은 타인과의 협력이다. 협력이라는 문맥을 무시한 채 각 개인의 반응을 독립적으로 관찰하는 것은 무의미하다. 협력에 얼마나 적절한지에 따라 행동의 적합성이 결정되며 협력이라는 문맥이 인간의 행동 방식을 .. 2021. 8. 18. 3장: 타입과 추상화 일단 컴퓨터를 조작하는 것이 추상화를 구축하고, 조작하고, 추론하는 것에 관한 모든 것이라는 것을 깨닫고 나면 (훌륭한) 컴퓨터 프로그램을 작성하기 위한 중요한 전제 조건은 추상화를 정확하게 다루는 능력이라는 것이 명확해진다. - 키스 데블린(Keith Devlin)[Devlin 2003] * 스팅모어가 디자인한 1927년 런던 지하철 지도 * 해리 벡이 디자인한 1933년의 지하철 노선도 해리 벡은 지하철을 이용하는 승객들을 면밀하게 관찰한 후 승객이 꼭 알아야 하는 사실만 정확하게 표현하고 몰라도 되는 정보는 무시함으로써 이해하기 쉽고 단순하며 목적에 부합하는 지하철 노선도를 창조해 낼 수 있었다. 해리 백의 가장 위대한 업적은 지하철 노선을 추상화 한것이다. 추상화를 통한 복잡성 극복 해리 벡의 지.. 2021. 8. 16. 2장: 이상한 나라의 객체 객체지향 패러다임은 지식을 추상화하고 추상화한 지식을 객체 안에 캡슐화함으로써 실세계 문제에 내재된 복잡성을 관리하려고 한다. 객체를 발견하고 창조하는 것은 지식과 행동을 구조화하는 문제다. - 레베카 워프스브록(Rebecca Wirfs-Borck)[Wirfs-Brock 1990] 객체지향 패러다임은 현실 세계의 존재를 소프트웨어 세계의 객체로 바꾸는 것이다. 그리고 이것은 좋은 방법이며 둘 다 일치한다 => 오해 객체지향 패러다임의 목적은 현실 세계를 모방하는 것이 아니라 현실 세계를 기반으로 새로운 세계를 창조하는 것이다 => 사실 객체지향과 인지 능력 인간은 본능적으로 세상을 독립적이고 식별 가능한 객체의 집합으로 바라본다. 많은 사람들이 객체지향을 직관적이고 이해하기 쉬운 패러다임이라고 말하는 이.. 2021. 8. 6. 1장: 협력하는 객체들의 공동체 시너지를 생각하라. 전체는 부분의 합보다 크다. - 스티븐 코비(Stephen R. Covey) 객체지향이라 불리는 새로운 세상의 문을 연 대부분의 사람들은 "객체지향이란 실세계를 직접적이고 직관적으로 모델링할 수 있는 패러다임"이라는 설명과 마주하게 된다. => 오해 객체지향 소프트웨어는 실세계의 투영이며, 객체란 현실 세계에 존재하는 사물에 대한 추상화 => 오해 객체지향의 목표는 실세계를 모방하는 것이 아니다. 오히려 새로운 세계를 창조하는 것이다. => 사실 소프트웨어 시스템이 해결하려고 하는 실재는 잘해봐야 먼 친척밖에는 되지 않는다 - 버트란드 마이어(Bertrand Meyer) 실세계에 대한 비유가 객체지향의 다양한 측면을 이해하고 학습하는데 매우 효과적이다. => 사실 객체를 스스로 생각하.. 2021. 8. 2. 객체지향의 사실과 오해 스터디 (0) - 시작 & Why? & 목차 - Why? 이 책을 현재 중간(3장)까지 봤다...! 흔히들 자바에서 객체지향은 class를 잘 설계하는거라고 말한다 이건 틀린말이다!! C++, JAVA에서의 객체지향적인것은 우리가 뻘코딩을 하고 프레임워크에서 아키텍처를 나누는거보다 좀 더 심오하더라 그리고 개발자라면 한번쯤은 꼭 읽어야 할 책이라서 주제로 선정했다. 추가로 총 페이지도 250페이지 정도로 가볍게 읽을 책으로 충분했다. 하지만 정말로 개발을 해 본 사람이라면 말 그대로 객체지향에 대한 '사실'과 '오해'를 알 수 있는 내용이었다. - 목차 ▣ 01장: 협력하는 객체들의 공동체 협력하는 사람들 - 커피 공화국의 아침 - 요청과 응답으로 구성된 협력 - 역할과 책임 역할, 책임, 협력 - 기능을 구현하기 위해 협력하는 객체들 - 역할과 .. 2021. 8. 1. 이전 1 다음