study with book 7

[객체지향의 사실과 오해] 7. 함께 모으기

실제로 객체지향적으로 설계를 처음부터 끝까지 해보자. 그리고 객체지향 설계를 세가지 관점에서 바라보아 보자. 커피 전문점 어디서나 볼수 있는 동네 카페에서 손님이 커피를 주문해서 받는 과정까지를 객체지향적으로 설계해보자. 객체 생각하기 큰 시스템을 객체들로 구성되었다 생각하고 객체들로 나누어보자. 손님 - 손님 객체 메뉴판 - 메뉴판 객체 메뉴 - 메뉴 객체 바리스타 - 바리스타 객체 커피 - 커피 객체 객체간 관계 생각해보기 손님은 바리스타에게 주문해야함 : 손님 - 바리스타 관계 O 손님은 주문하기 위해선 메뉴판에서 메뉴를 골라야함 : 손님 - 메뉴판 관계 O 메뉴판에있는 메뉴들중 몇개를 먹을 커피를 골라야하므로 : 메뉴판 - 메뉴 관계 O 바리스타가 손님으로부터 주문받은 메뉴를 커피로 만들어야함 :..

study with book 2021.09.27

[객체지향의 사실과 오해] 6. 객체지도

지도는 변경될수 있는 세세한 건물의 이름, 마트 정보등을 나타내는 것이 아닌 잘 변하지 않는 안정적인 지형 정보를 기반으로 되어있다. 그렇기에 지도는 예전부터 많이 변한것이 없고, 우리는 이 지도를 통해서 목적지까지 어렵지 않게 갈수 있다. 지도는 안정적인 지형 정보를 기반으로 만들었기에 예전 지도가 지금까지도 사용이 가능한 것이다. 시간이 지나면 아이스크림 가게가 신발가게로 금방 변하고, 건물이 사라지기도 한다. 그러나 지형정보는 잘변하지 않는다. SW도 사용자의 요구사항은 안타깝게도 자주 변한다. 그렇기에 요구사항에 맞춰서 설계를 하면 금방 설계를 뒤엎어야 할것이다.(바뀔 수도 있기에, 아니 무조건 바뀐다.) 우리는 지도와 마찬가지로 구조를 중심으로 먼저 설계하고 그 위에 기능을 넣어야한다. 그러면 ..

study with book 2021.09.13

[객체지향의 사실과 오해] 5. 책임과 메시지

좋은 객체지향 시스템을 만들기 위해선 객체들이 어떻게 커뮤니케이션을 하냐에 달렸다. 이 커뮤니케이션을 하는 방법을 메시지라하며 메시지는 객체의 책임을 유발한다. 메시지가 얼마나 중요한지 알아보자. 자율적인 책임 자율적이란 스스로 의지를 가지고 있어 스스로 판단할수 있다는 의미이다. 객체는 메시지를 수신받아야만 책임을 수행한다. 이 책임은 수신받은 객체 즉, 수신자가 자신의 의지와 판단에 맞게 책임을 수행해야한다. 이렇게 객체가 얼마나 자율적인 책임을 가지고 있느냐가 객체지향 어플 전체의 품질을 결정한다. 그렇다면 자율적인 책임이 뭔지 보다더 자세히 알아보자. 자율적인 책임 예시 선생님이 학생에게 공부를 시켜야하는 상황을 가정해보자. 선생님 학생에게 '공부해'라는 메시지를 송신해야 학생은 메..

study with book 2021.08.28

[객체지향의 사실과 오해] 4. 역할, 책임, 협력

객체의 모양을 빚는 것은 객체가 참여하는 협력이다. 개별적인 객체의 상태나 행동이 아니라 객체들간의 협력에 집중하라!!! 협력 한 객체가 자신의 책임으로 해결할수 없을 때 다른 객체에게 도움을 받기 위해 요청을 한다. 이 객체는 또 자신의 책임으로는 해결할수 없을 때 다른 객체에게 요청을하고, 또 그 객체는 요청한다. 그리고 요청받은 객체는 응답한다. 이런 요청과 응답의 연쇄적인 흐름이 바로 협력이다. 협력은 연쇄적인 요청과 응답의 흐름으로 구성된다. 책임 객체가 어떠한 요청에 대해 대답할수 있거나 적절한 행동을 할 의무가 있는 경우 해당 객체는 책임이 있다고 한다. A객체가 B객체에게 요청을 전송할 경우에만 B객체는 책임을 수행한다. 즉, 다른 객체가 책임을 수행하도록 요청을 보내는 것을 메시지 전송이..

study with book 2021.08.20

[객체지향의 사실과 오해] 3. 타입과 추상화

추상화란? 추상화란 어떠한 목적에 맞게 복잡한 현실을 단순화 하는 방법 추상화에는 두가지 차원이 존재한다. 사물들간의 공통점을 취하고 차이점을 버리는 일반화로 단순하게 만드는 것 중요한 부분을 강조하기위해서 사물의 세부사항을 제거하여 단순하게 만드는 것 즉 추상화의 목적은 복잡성을 이해하기 쉬운 수준으로 단순화하는 것! 객체지향과 추상화 이상한나라의 엘리스에서의 트럼프 인간들 트럼프 정원사, 트럼프 병사, 트럼프 왕자, 트럼프 왕, 트럼프 왕자가 이상한나라의 엘리스에 존재한다.(토끼도 존재함) 이를 보고 엘리스는 기껏해야 트럼프에 불과해라고 한다. 트럼프 정원사, 트럼프 병사, 트럼프 왕자, 트럼프 왕, 트럼프 왕자를 트럼프라는 공통점만을 취해 단순화 한것이다. 여러 객체들을 공통점을 기반으로 그룹으로 ..

study with book 2021.07.23

[객체지향의 사실과 오해] 2. 이상한 나라의 엘리스

아기들을 포함한 세상 사람들은 세상을 뚜렷한 경계를 가진 객체들의 집합으로 바라본다. 객체지향과 인지 능력 객체란 인간이 분명하게 인지하고 구별할수 있는 물리적인 또는 개념적인 경계를 지닌 어떤 것이다. 하지만 실세계와 소프트웨어 세계의 객체의 유사성은 여기까지이다. 실세계의 객체는 사람의 도움없이 스스로 무언가를 할 수 없다. 소프트웨어 세계의 객체는 스스로 무언가를 할수 있다. 즉, 자율적이다. 객체, 그리고 이상한 나라 이상한 나라의 엘리스 이야기를 생각하며 객체란 무엇인지 알아보자 엘리스는 음료수를 마시면 키를 변경할수 있다. -> 엘리스는 키를 가지고있으며 상태를 변경가능 음료수를 마시면 키가 변경한다 -> 엘리스는 음료수를 마시는 행동을 했고 행동을 통해서 상태가 변경 음료수 마시기전 키가 1..

study with book 2021.07.17

[객체지향의 사실과 오해] 1. 협력하는 공동체

실세계와 객체지향 세계 객체지향에 대해서 배울때, (JAVA를 처음 배울때) 모든 사물(유형이던 무형이던)을 하나의 객체로 보는 실세계를 소프트웨어의 세계와 동일하다는 관점에서 객체지향을 배웠다. 그러나 실세계와 객체지향 세계에는 유사성이 매우 적고 거리가 멀다. 객체지향의 목적은 새로운 세계를 창조하는것!!! (실세계를 모방하는 것이 아니다.) 단순히 객체지향의 기반을 이루는 철학적 개념을 설명하는데 '실세계의 모방'이라는 문장이 적합할 뿐이다. 단순히 이 이유때문에 많은 곳에서 객체지향을 설명할 때, 실세계에 빗대며 설명한다. 그래도 실세계에 빗대어 설명하는 것만큼 이해가 쉬운게 없음! 협력하는 사람들(in 실세계) 협력, 역할, 책임 실세계에서 모든 것은 협력, 역할, 책임으로 이루어..

study with book 2021.07.16