roles, responsibilities, collaborations
TRANSCRIPT
역할,����������� ������������������ 책임,����������� ������������������ 협력����������� ������������������ Roles,����������� ������������������ Responsibilities,����������� ������������������ and����������� ������������������ Collaborations����������� ������������������
Eternity’s Chit-Chat http://aeternum.egloos.com/
강의의����������� ������������������ 목적����������� ������������������
객체지향의����������� ������������������ 본질을����������� ������������������ 이해하는데����������� ������������������ 필요한����������� ������������������ 힌트����������� ������������������ 제공����������� ������������������
목차����������� ������������������ 1.객체지향의����������� ������������������ 본질
2.책임-주도����������� ������������������ 설계
3.영화����������� ������������������ 예매����������� ������������������ 시스템
4.책임-주도����������� ������������������ 설계와����������� ������������������ 객체지향����������� ������������������ 원리
Part����������� ������������������ -����������� ������������������ 1����������� ������������������
객체지향의����������� ������������������ 본질����������� ������������������
3명의����������� ������������������ 등장인물����������� ������������������ 레스트레이드����������� ������������������ 경
감 셜록����������� ������������������ 홈즈
존����������� ������������������ 왓슨
이들은����������� ������������������ 무엇을����������� ������������������ 하고����������� ������������������ 있을까요?����������� ������������������
셜록����������� ������������������ 홈즈 존����������� ������������������ 왓슨
레스트레이드����������� ������������������ 경감
살인사건을����������� ������������������ 해결하기����������� ������������������ 위해����������� ������������������
셜록����������� ������������������ 홈즈 존����������� ������������������ 왓슨
레스트레이드����������� ������������������ 경감 협력하고����������� ������������������ 있습니다����������� ������������������
시체
등장인물들은����������� ������������������ 서로����������� ������������������ 협력����������� ������������������ 하기����������� ������������������ 위해����������� ������������������
셜록����������� ������������������ 홈즈 존����������� ������������������ 왓슨
레스트레이드����������� ������������������ 경감
전����������� ������������������ 범인의����������� ������������������ 단서를����������� ������������������ 발견합니다����������� ������������������
전����������� ������������������ 시체를����������� ������������������ 검시합니다����������� ������������������
각자����������� ������������������ 맡은����������� ������������������ 책임을����������� ������������������ 수행해야����������� ������������������ ����������� ������������������ 합니다����������� ������������������
시체
전����������� ������������������ 사건을����������� ������������������ ����������� ������������������
수사합니다����������� ������������������
셜록����������� ������������������ 홈즈 존����������� ������������������ 왓슨
레스트레이드����������� ������������������ 경감 전����������� ������������������ 사건을����������� ������������������ ����������� ������������������
수사합니다����������� ������������������
전����������� ������������������ 범인의����������� ������������������ 단서를����������� ������������������ 발견합니다����������� ������������������
전����������� ������������������ 시체를����������� ������������������ 검시합니다����������� ������������������
시체
수사를����������� ������������������ 위해����������� ������������������ 협력����������� ������������������ 하는����������� ������������������ 중에����������� ������������������
자신이����������� ������������������ 맡은����������� ������������������ 책임을����������� ������������������ 수행하기����������� ������������������ 위해서는����������� ������������������ 다른����������� ������������������ 사람의����������� ������������������ 도움을����������� ������������������ 받아야����������� ������������������ 할����������� ������������������ 때가����������� ������������������ 있습니다����������� ������������������
등장인물들이����������� ������������������ 자신의����������� ������������������ 책임을����������� ������������������ 수행하기위해����������� ������������������
어떤����������� ������������������ 도움이����������� ������������������ 필요한지����������� ������������������ 살펴����������� ������������������ 보죠����������� ������������������
셜록����������� ������������������ 홈즈 존����������� ������������������ 왓슨
레스트레이드����������� ������������������ 경감
시체
사건을����������� ������������������ 수사하기����������� ������������������ 위해서는����������� ������������������
셜록에게����������� ������������������ 범인의����������� ������������������ 증거를����������� ������������������ 수집해����������� ������������������ ����������� ������������������
달라고����������� ������������������ 해야����������� ������������������ 합니다����������� ������������������
범인의����������� ������������������ 증거를����������� ������������������ 수집하기����������� ������������������ ����������� ������������������ 위해서는����������� ������������������ 왓슨에게����������� ������������������ ����������� ������������������ 시체를����������� ������������������ 검시해����������� ������������������ 달라고����������� ������������������ 해야����������� ������������������ 합니다����������� ������������������
저는����������� ������������������ 시체를����������� ������������������ 검시하기����������� ������������������ 위해����������� ������������������ 특별히����������� ������������������ 다른����������� ������������������ 사람의����������� ������������������ 도움이����������� ������������������ 필요하지는����������� ������������������ 않습니다����������� ������������������
등장인물들이����������� ������������������ 요청하는����������� ������������������ 도움은����������� ������������������
다른����������� ������������������ 등장인물의����������� ������������������ 책임이����������� ������������������ 됩니다����������� ������������������
셜록����������� ������������������ 홈즈 존����������� ������������������ 왓슨
레스트레이드����������� ������������������ 경감
시체
레스트레이드����������� ������������������ 경감의����������� ������������������ 책임����������� ������������������
홈즈의����������� ������������������ 책임����������� ������������������
홈즈의����������� ������������������ 책임����������� ������������������
왓슨의����������� ������������������ 책임����������� ������������������
왓슨의����������� ������������������ 책임����������� ������������������
사건을����������� ������������������ 수사하기����������� ������������������ 위해서는����������� ������������������
셜록에게����������� ������������������ 범인의����������� ������������������ 증거를����������� ������������������ 수집해����������� ������������������ ����������� ������������������
달라고����������� ������������������ 해야����������� ������������������ 합니다����������� ������������������
저는����������� ������������������ 시체를����������� ������������������ 검시하기����������� ������������������ 위해����������� ������������������ 특별히����������� ������������������ 다른����������� ������������������ 사람의����������� ������������������ 도움이����������� ������������������ 필요하지는����������� ������������������ 않습니다����������� ������������������
범인의����������� ������������������ 증거를����������� ������������������ 수집하기����������� ������������������ ����������� ������������������ 위해서는����������� ������������������ 왓슨에게����������� ������������������ ����������� ������������������ 시체를����������� ������������������ 검시해����������� ������������������ 달라고����������� ������������������ 해야����������� ������������������ 합니다����������� ������������������
등장인물들은����������� ������������������ 자신의����������� ������������������ 책임을����������� ������������������ 수행하기����������� ������������������ 위해����������� ������������������
다른����������� ������������������ 등장인물의����������� ������������������ 책임을����������� ������������������ 요청하면서����������� ������������������
협력합니다����������� ������������������
셜록����������� ������������������ 홈즈 존����������� ������������������ 왓슨
시체
시체를����������� ������������������ 검시해����������� ������������������ 주게����������� ������������������
사건을����������� ������������������ 수사해����������� ������������������ ����������� ������������������ 주세요����������� ������������������
레스트레이드����������� ������������������ 경감
등장인물들은����������� ������������������ ����������� ������������������
자신만의����������� ������������������ 방법으로����������� ������������������ ����������� ������������������
요청을����������� ������������������ 처리한����������� ������������������ 후����������� ������������������ ����������� ������������������
응답합니다����������� ������������������
셜록����������� ������������������ 홈즈 존����������� ������������������ 왓슨
시체
레스트레이드����������� ������������������ 경감
사건을����������� ������������������ 수사해����������� ������������������ ����������� ������������������ 주세요����������� ������������������
약에����������� ������������������ 의한����������� ������������������ 발작으로����������� ������������������ 인해����������� ������������������ 질식사한����������� ������������������ 것으로����������� ������������������ 추정되는군����������� ������������������
시체를����������� ������������������ 검시해����������� ������������������ 주게����������� ������������������
범인은����������� ������������������ 이러이러한����������� ������������������ 사람입니다����������� ������������������
����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������
자신만의����������� ������������������ 방법����������� ������������������ ����������� ������������������ ����������� ������������������
����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������
����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������
자율적인(autonomous)����������� ������������������
자율적인(autonomous)����������� ������������������
자기����������� ������������������ 스스로의����������� ������������������ 원칙에����������� ������������������ 따라����������� ������������������ 어떤����������� ������������������ 일을����������� ������������������ 하거나����������� ������������������ 자기����������� ������������������ 스스로를����������� ������������������ 통제하여����������� ������������������ 절제하는����������� ������������������ 것.����������� ������������������
등장인물들은����������� ������������������ 자율적으로����������� ������������������ 자신의����������� ������������������ 책임을����������� ������������������ 수행합니다����������� ������������������
자율적인����������� ������������������ 캐릭터는����������� ������������������ 외부의����������� ������������������ 간섭을����������� ������������������ 받지����������� ������������������ 않고����������� ������������������ ����������� ������������������
자신만의����������� ������������������ 방법에����������� ������������������ 따라����������� ������������������ ����������� ������������������
스스로����������� ������������������ 판단하고����������� ������������������ 결정합니다����������� ������������������
드라마����������� ������������������ 속의����������� ������������������ 등장인물들은����������� ������������������ 단지����������� ������������������ 배우가����������� ������������������ 연기하는����������� ������������������ ����������� ������������������ 역할일����������� ������������������ 뿐입니다����������� ������������������
역할은����������� ������������������ 그����������� ������������������ 사람이����������� ������������������ ����������� ������������������
협력����������� ������������������ 안에서����������� ������������������ 어떤����������� ������������������ 책임을����������� ������������������ ����������� ������������������
수행할����������� ������������������ 수����������� ������������������ 있는지를����������� ������������������ ����������� ������������������
설명합니다����������� ������������������
셜록����������� ������������������ 홈즈 존����������� ������������������ 왓슨
시체
시체를����������� ������������������ 검시해����������� ������������������ 주게����������� ������������������
사건을����������� ������������������ 수사해����������� ������������������ ����������� ������������������ 주세요����������� ������������������
레스트레이드����������� ������������������ 경감
경감
탐정 조수
역할����������� ������������������
책임����������� ������������������
협력����������� ������������������
여러분은����������� ������������������ 방금����������� ������������������ 객체지향의����������� ������������������ 핵심����������� ������������������ 개념����������� ������������������ 대부분을����������� ������������������ 배우셨습니다����������� ������������������ ����������� ������������������
설록에����������� ������������������ 나오는����������� ������������������ 등장인물들을����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ 라고����������� ������������������ 생각해보죠����������� ������������������ 객체����������� ������������������
객체들은����������� ������������������ 공통의����������� ������������������ 목적을����������� ������������������ 달성하기����������� ������������������ 위해����������� ������������������ 서로����������� ������������������ 협력합니다����������� ������������������
객체들은����������� ������������������ 협력을����������� ������������������ 위해����������� ������������������ 책임을����������� ������������������ 할당����������� ������������������ 받습니다����������� ������������������
협력����������� ������������������ 안에서����������� ������������������ 객체의����������� ������������������ 역할을����������� ������������������ ����������� ������������������ 결정하는����������� ������������������ 것은����������� ������������������ 객체가����������� ������������������ 수행하는����������� ������������������ 책임입니다����������� ������������������
객체지향����������� ������������������ 설계의����������� ������������������ 핵심은����������� ������������������
Role
Responsibility
Collaboration
객체지향����������� ������������������ 설계의����������� ������������������ 모양을����������� ������������������ 결정하는����������� ������������������ 것은����������� ������������������
책임(Responsibility)입니다����������� ������������������
Part����������� ������������������ -����������� ������������������ 2����������� ������������������
책임-주도����������� ������������������ 설계����������� ������������������
책임이����������� ������������������ 설계를����������� ������������������ 주도한다?����������� ������������������
애플리케이션의����������� ������������������ 요구사항����������� ������������������
사건을����������� ������������������ 수사한다����������� ������������������
시스템의����������� ������������������ 책임으로����������� ������������������ 생각����������� ������������������
System
애플리케이션의����������� ������������������ 요구사항은����������� ������������������ 시스템의����������� ������������������ 책임이����������� ������������������ 됩니다����������� ������������������
시스템의����������� ������������������ 책임을����������� ������������������ 객체의����������� ������������������ 책임으로����������� ������������������ 생각합니다����������� ������������������
사건을����������� ������������������ 수사한다����������� ������������������ System
객체에����������� ������������������ 대한����������� ������������������ 책임����������� ������������������
시스템의����������� ������������������ 책임����������� ������������������
어떤����������� ������������������ 객체에게����������� ������������������ ����������� ������������������ 할당하면����������� ������������������ 좋을까요?����������� ������������������
책임의����������� ������������������ 요청����������� ������������������ =����������� ������������������ 메시지����������� ������������������ 전송(Message����������� ������������������ Sending)����������� ������������������
사건을����������� ������������������ 수사한다����������� ������������������
System
Message Sen
ding
객체는����������� ������������������ 책임을����������� ������������������ 수행하기����������� ������������������ 위한����������� ������������������ 방법을����������� ������������������ 선택합니다����������� ������������������
사건을����������� ������������������ 수사한다����������� ������������������
System
Message Sen
ding
방법����������� ������������������
방법이라는����������� ������������������ 뜻을����������� ������������������ 가진����������� ������������������ 영어����������� ������������������ 단어는����������� ������������������ 메서드(Method)입니다����������� ������������������
사건을����������� ������������������ 수사한다����������� ������������������
System
Message Sen
ding
방법����������� ������������������
Method
객체지향의����������� ������������������ 메서드(Method)는����������� ������������������ 수신된����������� ������������������ 메시지(Message)를����������� ������������������ ����������� ������������������ 처리하는����������� ������������������ 방법을����������� ������������������ 의미합니다����������� ������������������
System
방법����������� ������������������
Method
사건을����������� ������������������ 수사한다����������� ������������������
Message Sen
ding
메서드(Method)에는����������� ������������������ 스스로����������� ������������������ 처리할����������� ������������������ 수����������� ������������������ 없는����������� ������������������ 작업이����������� ������������������ 포함되어����������� ������������������ 있을����������� ������������������ 수����������� ������������������ 있습니다����������� ������������������
사건을����������� ������������������ 수사한다����������� ������������������
System
방법����������� ������������������
범인의����������� ������������������ 증거를����������� ������������������ 수집한다����������� ������������������
Method
스스로����������� ������������������ 처리할����������� ������������������ 수����������� ������������������ 없는����������� ������������������ 작업은����������� ������������������ 또����������� ������������������ 다른����������� ������������������ 객체에����������� ������������������ 대한����������� ������������������ 요청이����������� ������������������ 됩니다����������� ������������������
사건을����������� ������������������ 수사한다����������� ������������������
System
방법����������� ������������������
범인의����������� ������������������ 증거를����������� ������������������ ����������� ������������������
수집한다����������� ������������������
앞에서와����������� ������������������ 동일하게����������� ������������������ 다른����������� ������������������ 객체에����������� ������������������ 대한����������� ������������������ 요청은����������� ������������������ 메시지����������� ������������������ 전송을����������� ������������������ 의미합니다����������� ������������������
사건을����������� ������������������ 수사한다����������� ������������������
System
방법����������� ������������������
범인의����������� ������������������ 증거를����������� ������������������ ����������� ������������������
수집한다����������� ������������������
Message Sending
다시����������� ������������������ 메시지를����������� ������������������ 처리할����������� ������������������ 수����������� ������������������ 있는����������� ������������������ 적절한����������� ������������������ 객체를����������� ������������������ 선택합니다����������� ������������������
사건을����������� ������������������ 수사한다����������� ������������������
System
방법����������� ������������������
범인의����������� ������������������ 증거를����������� ������������������ ����������� ������������������
수집한다����������� ������������������
Message Sending
사건을����������� ������������������ 수사한다����������� ������������������
System
방법����������� ������������������
범인의����������� ������������������ 증거를����������� ������������������ ����������� ������������������
수집한다����������� ������������������
Message Sending Responsibility
수신된����������� ������������������ 메시지����������� ������������������ =����������� ������������������ 객체의����������� ������������������ 책임����������� ������������������
사건을����������� ������������������ 수사한다����������� ������������������
System
방법����������� ������������������
범인의����������� ������������������ 증거를����������� ������������������ ����������� ������������������
수집한다����������� ������������������
홈즈����������� ������������������ 역시����������� ������������������ 메시지를����������� ������������������ 처리하기����������� ������������������ 위한����������� ������������������ 자신만의����������� ������������������ 방법(Method)을����������� ������������������ 선택합니다����������� ������������������
방법����������� ������������������
Method
사건을����������� ������������������ 수사한다����������� ������������������
System
방법����������� ������������������
범인의����������� ������������������ 증거를����������� ������������������ ����������� ������������������
수집한다����������� ������������������
스스로����������� ������������������ 처리할����������� ������������������ 수����������� ������������������ 없는����������� ������������������ 작업은����������� ������������������ 외부의����������� ������������������ 객체에게����������� ������������������ 요청하죠����������� ������������������
방법����������� ������������������
시체를����������� ������������������ 검시한다����������� ������������������
Method
사건을����������� ������������������ 수사한다����������� ������������������
System
방법����������� ������������������
범인의����������� ������������������ 증거를����������� ������������������ ����������� ������������������
수집한다����������� ������������������
마찬가지로����������� ������������������ 다른����������� ������������������ 객체에����������� ������������������ 대한����������� ������������������ 요청은����������� ������������������ 메시지����������� ������������������ 전송(Message����������� ������������������ Sending)을����������� ������������������ 의미합니다����������� ������������������
방법����������� ������������������
시체를����������� ������������������
검시한다����������� ������������������
사건을����������� ������������������ 수사한다����������� ������������������
System
방법����������� ������������������
범인의����������� ������������������ 증거를����������� ������������������ ����������� ������������������
수집한다����������� ������������������
메시지를����������� ������������������ 처리할����������� ������������������ 수����������� ������������������ 있는����������� ������������������ 적절한����������� ������������������ 객체를����������� ������������������ 선택합니다����������� ������������������
방법����������� ������������������
시체를����������� ������������������
검시한다����������� ������������������
사건을����������� ������������������ 수사한다����������� ������������������
System
방법����������� ������������������
범인의����������� ������������������ 증거를����������� ������������������ ����������� ������������������
수집한다����������� ������������������
존����������� ������������������ 왓슨����������� ������������������ 역시����������� ������������������ 자신만의����������� ������������������ 방법(Method)에����������� ������������������ 따라����������� ������������������ 메시지를����������� ������������������ ����������� ������������������ 처리합니다����������� ������������������ ����������� ������������������
방법����������� ������������������
시체를����������� ������������������
검시한다����������� ������������������
방법����������� ������������������
Method
사건을����������� ������������������ 수사한다����������� ������������������
System
방법����������� ������������������
범인의����������� ������������������ 증거를����������� ������������������ ����������� ������������������
수집한다����������� ������������������
존����������� ������������������ 왓슨의����������� ������������������ 경우에는����������� ������������������ 스스로����������� ������������������ 책임을����������� ������������������ 완수할����������� ������������������ 수����������� ������������������ 있기����������� ������������������ 때문에����������� ������������������ ����������� ������������������ 외부에����������� ������������������ 요청할����������� ������������������ 필요가����������� ������������������ 없습니다����������� ������������������
방법����������� ������������������
시체를����������� ������������������
검시한다����������� ������������������
방법����������� ������������������
사건을����������� ������������������ 수사한다����������� ������������������
System
방법����������� ������������������
범인의����������� ������������������ 증거를����������� ������������������ ����������� ������������������
수집한다����������� ������������������
사건을����������� ������������������ 수사하기����������� ������������������ 위한����������� ������������������ 객체����������� ������������������ 간의����������� ������������������ 협력에����������� ������������������ 대한����������� ������������������ 설계가����������� ������������������ ����������� ������������������ 완성되었습니다����������� ������������������
방법����������� ������������������
시체를����������� ������������������
검시한다����������� ������������������
방법����������� ������������������
Design Responsibility -Driven
WHAT WHO / CYCLE
WHAT 무엇을����������� ������������������ 해야����������� ������������������ 하는가?����������� ������������������
WHAT 어떤����������� ������������������ 메시지를����������� ������������������ 전송해야����������� ������������������ 하는가?����������� ������������������
WHAT 책임이����������� ������������������ 무엇인가?����������� ������������������
WHO 어떤����������� ������������������ 객체가����������� ������������������ 메시지를����������� ������������������ 수신할����������� ������������������ 것인가?����������� ������������������
어떤����������� ������������������ 객체가����������� ������������������ 책임을����������� ������������������ 맡을����������� ������������������ 것인가?����������� ������������������
WHO
/ WHO
Responsibility
WHAT
Role
CYCLE
Design Responsibility-Driven
Responsibility Role
Design Responsibility-Driven
책임의����������� ������������������ 선택이����������� ������������������ 역할과����������� ������������������ 협력의����������� ������������������ 구조를����������� ������������������ 결정합니다����������� ������������������ ����������� ������������������
책임����������� ������������������ 할당의����������� ������������������ 기본����������� ������������������ 원칙����������� ������������������
책임을����������� ������������������ 수행하는데����������� ������������������ 필요한����������� ������������������ 정보를����������� ������������������ 알고����������� ������������������ 있는����������� ������������������ ����������� ������������������ 정보����������� ������������������ 전문가에게����������� ������������������ 책임을����������� ������������������ 할당하라����������� ������������������ ����������� ������������������
정보����������� ������������������ 전문가(Information����������� ������������������ Expert)����������� ������������������
사건을����������� ������������������ 수사한다����������� ������������������
System
방법����������� ������������������
책임을����������� ������������������ 수행하기����������� ������������������ 위해서는����������� ������������������
필요한����������� ������������������ 정보를����������� ������������������ 알고����������� ������������������ 있어야����������� ������������������ 합니다����������� ������������������
사건����������� ������������������ 수사를����������� ������������������ 위한����������� ������������������ 오랜����������� ������������������ 경험과����������� ������������������ 유사����������� ������������������ 사건����������� ������������������ 목록을����������� ������������������ 알고����������� ������������������ 있습니다����������� ������������������
����������� ������������������ Information����������� ������������������
사건을����������� ������������������ 수사한다����������� ������������������
System
방법����������� ������������������
책임����������� ������������������ 수행에����������� ������������������ 필요한����������� ������������������ 대부분의����������� ������������������ 정보는����������� ������������������
객체의����������� ������������������ 상태(State)로����������� ������������������ 표현����������� ������������������ 됩니다����������� ������������������
사건����������� ������������������ 수사를����������� ������������������ 위한����������� ������������������ 오랜����������� ������������������ 경험과����������� ������������������ 유사����������� ������������������ 사건����������� ������������������ 목록을����������� ������������������ 알고����������� ������������������ 있습니다����������� ������������������
����������� ������������������ Information����������� ������������������ State����������� ������������������
사건을����������� ������������������ 수사한다����������� ������������������
System
방법����������� ������������������
사건����������� ������������������ 수사를����������� ������������������ 위한����������� ������������������ 오랜����������� ������������������ 경험과����������� ������������������ 유사����������� ������������������ 사건����������� ������������������ 목록을����������� ������������������ 알고����������� ������������������ 있습니다����������� ������������������
����������� ������������������ Information����������� ������������������ State����������� ������������������
속성����������� ������������������
대부분의����������� ������������������ 상태����������� ������������������ 정보는����������� ������������������ ����������� ������������������ 객체가����������� ������������������ 내부적으로����������� ������������������ 관리하는����������� ������������������ 속성(attribute)입니다����������� ������������������
사건을����������� ������������������ 수사한다����������� ������������������
System
방법����������� ������������������
사건����������� ������������������ 수사를����������� ������������������ 위한����������� ������������������ 오랜����������� ������������������ 경험과����������� ������������������ 유사����������� ������������������ 사건����������� ������������������ 목록을����������� ������������������ 알고����������� ������������������ 있습니다����������� ������������������
����������� ������������������ Information����������� ������������������ State����������� ������������������
속성����������� ������������������
객체는����������� ������������������ 책임의����������� ������������������ 모든����������� ������������������ 부분을����������� ������������������ 스스로����������� ������������������ 처리할����������� ������������������ 수����������� ������������������ 없기����������� ������������������ 때문에����������� ������������������ ����������� ������������������ 다른����������� ������������������ 객체와����������� ������������������ 협력해야����������� ������������������ 합니다����������� ������������������
사건을����������� ������������������ 수사한다����������� ������������������
System
방법����������� ������������������
����������� ������������������ Information����������� ������������������ State����������� ������������������
속성����������� ������������������
협력을����������� ������������������ 위해����������� ������������������ 메시지를����������� ������������������ 전송할����������� ������������������ 객체를����������� ������������������ 알아야����������� ������������������ 합니다����������� ������������������
범인의����������� ������������������ 증거를����������� ������������������ ����������� ������������������
수집한다����������� ������������������ 방법����������� ������������������
사건을����������� ������������������ 수사한다����������� ������������������
System
방법����������� ������������������
����������� ������������������ Information����������� ������������������ State����������� ������������������
속성����������� ������������������
책임����������� ������������������ 수행에����������� ������������������ 필요한����������� ������������������ 정보에는����������� ������������������ 객체의����������� ������������������ 속성����������� ������������������ 뿐만����������� ������������������ 아니라����������� ������������������ 누가����������� ������������������ 협력자(Collaborator)인지에����������� ������������������ 대한����������� ������������������ 정보도����������� ������������������ 포함됩니다����������� ������������������
범인의����������� ������������������ 증거를����������� ������������������ ����������� ������������������
수집한다����������� ������������������ 방법����������� ������������������
사건을����������� ������������������ 수사한다����������� ������������������
System
방법����������� ������������������
����������� ������������������ Information����������� ������������������ State����������� ������������������
속성����������� ������������������
협력자(Collaborator)에����������� ������������������ 대한����������� ������������������ 정보는����������� ������������������ 객체����������� ������������������ 상태(State)의����������� ������������������ 일부가����������� ������������������ 됩니다����������� ������������������
범인의����������� ������������������ 증거를����������� ������������������ ����������� ������������������
수집한다����������� ������������������ 방법����������� ������������������
State����������� ������������������
책임을����������� ������������������ 수행하는데����������� ������������������ 필요한����������� ������������������ 정보를����������� ������������������ 알고����������� ������������������ 있는����������� ������������������ ����������� ������������������ 정보����������� ������������������ 전문가에게����������� ������������������ 책임을����������� ������������������ 할당하라����������� ������������������ ����������� ������������������
정보����������� ������������������ 전문가(Information����������� ������������������ Expert)����������� ������������������
Information����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ =����������� ������������������ State����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ =����������� ������������������ Attribute����������� ������������������ +����������� ������������������ Collaborator
객체는����������� ������������������ 자신의����������� ������������������ 상태를����������� ������������������ 이용해서����������� ������������������ 책임을����������� ������������������ 어떻게����������� ������������������ 수행할����������� ������������������ 것인지를����������� ������������������ 스스로����������� ������������������ 결정합니다����������� ������������������
자율적인(autonomous)����������� ������������������
하는����������� ������������������ 것(Doing)����������� ������������������
아는����������� ������������������ 것(knowing)����������� ������������������
-����������� ������������������ 객체를����������� ������������������ 생성하거나����������� ������������������ 계산을����������� ������������������ 하는����������� ������������������ 등의����������� ������������������ 스스로����������� ������������������ 하는����������� ������������������ 것����������� ������������������ -����������� ������������������ 다른����������� ������������������ 객체(협력자)의����������� ������������������ 행동을����������� ������������������ 시작시키는����������� ������������������ 것����������� ������������������ -����������� ������������������ 다른����������� ������������������ 객체(협력자)의����������� ������������������ 활동을����������� ������������������ 제어하고����������� ������������������ 조절하는����������� ������������������ 것����������� ������������������
-����������� ������������������ private로����������� ������������������ 캡슐화된����������� ������������������ 데이터(상태)에����������� ������������������ 관해����������� ������������������ 아는����������� ������������������ 것����������� ������������������ -����������� ������������������ 관련된����������� ������������������ 객체(협력자)에����������� ������������������ 관하여����������� ������������������ 아는����������� ������������������ 것����������� ������������������ -����������� ������������������ 자신이����������� ������������������ 유도하거나����������� ������������������ 계산할����������� ������������������ 수����������� ������������������ 있는����������� ������������������ 것(상태+협력자)에����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ 관하여����������� ������������������ 아는����������� ������������������ 것����������� ������������������
책임(Responsibility)����������� ������������������
Responsibility-Driven Design 애플리케이션의����������� ������������������ 요구사항을����������� ������������������ 파악합니다����������� ������������������
사건을����������� ������������������ 수사한다����������� ������������������
System
Responsibility-Driven Design 애플리케이션의����������� ������������������ 요구사항을����������� ������������������ 파악합니다����������� ������������������
애플리케이션의����������� ������������������ 요구사항을����������� ������������������ 시스템의����������� ������������������ 책임으로����������� ������������������ 변환합니다����������� ������������������
사건을����������� ������������������ 수사한다����������� ������������������
System
시스템����������� ������������������ 책임����������� ������������������
Responsibility-Driven Design 애플리케이션의����������� ������������������ 요구사항을����������� ������������������ 파악합니다����������� ������������������
애플리케이션의����������� ������������������ 요구사항을����������� ������������������ 시스템의����������� ������������������ 책임으로����������� ������������������ 변환합니다����������� ������������������
시스템의����������� ������������������ 책임을����������� ������������������ 객체의����������� ������������������ 책임으로����������� ������������������ 변환합니다����������� ������������������
사건을����������� ������������������ 수사한다����������� ������������������
System
시스템����������� ������������������ 책임����������� ������������������ 객체����������� ������������������ 책임����������� ������������������
Responsibility-Driven Design 애플리케이션의����������� ������������������ 요구사항을����������� ������������������ 파악합니다����������� ������������������
애플리케이션의����������� ������������������ 요구사항을����������� ������������������ 시스템의����������� ������������������ 책임으로����������� ������������������ 변환합니다����������� ������������������
시스템의����������� ������������������ 책임을����������� ������������������ 객체의����������� ������������������ 책임으로����������� ������������������ 변환합니다����������� ������������������
책임을����������� ������������������ 담당할����������� ������������������ 수����������� ������������������ 있는����������� ������������������ 적절한����������� ������������������ 객체를����������� ������������������ 선택합니다����������� ������������������ 사건을����������� ������������������ 수사한다����������� ������������������
System
객체����������� ������������������ 책임����������� ������������������
Responsibility-Driven Design 애플리케이션의����������� ������������������ 요구사항을����������� ������������������ 파악합니다����������� ������������������
애플리케이션의����������� ������������������ 요구사항을����������� ������������������ 시스템의����������� ������������������ 책임으로����������� ������������������ 변환합니다����������� ������������������
시스템의����������� ������������������ 책임을����������� ������������������ 객체의����������� ������������������ 책임으로����������� ������������������ 변환합니다����������� ������������������
책임을����������� ������������������ 담당할����������� ������������������ 수����������� ������������������ 있는����������� ������������������ 적절한����������� ������������������ 객체를����������� ������������������ 선택합니다����������� ������������������ 사건을����������� ������������������ 수사한다����������� ������������������
System
객체����������� ������������������ 책임����������� ������������������
Responsibility-Driven Design 애플리케이션의����������� ������������������ 요구사항을����������� ������������������ 파악합니다����������� ������������������
애플리케이션의����������� ������������������ 요구사항을����������� ������������������ 시스템의����������� ������������������ 책임으로����������� ������������������ 변환합니다����������� ������������������
시스템의����������� ������������������ 책임을����������� ������������������ 객체의����������� ������������������ 책임으로����������� ������������������ 변환합니다����������� ������������������
객체의����������� ������������������ 책임����������� ������������������ 일부를����������� ������������������ 수행하기����������� ������������������ 위해����������� ������������������ 외부의����������� ������������������ 도움이����������� ������������������ 필요하다면����������� ������������������ ����������� ������������������ ����������� ������������������ 다른����������� ������������������ 객체에게����������� ������������������ 도움을����������� ������������������ 요청합니다����������� ������������������ ����������� ������������������
책임을����������� ������������������ 담당할����������� ������������������ 수����������� ������������������ 있는����������� ������������������ 적절한����������� ������������������ 객체를����������� ������������������ 선택합니다����������� ������������������ 사건을����������� ������������������ 수사한다����������� ������������������
System
객체����������� ������������������ 책임����������� ������������������
Responsibility-Driven Design 애플리케이션의����������� ������������������ 요구사항을����������� ������������������ 파악합니다����������� ������������������
애플리케이션의����������� ������������������ 요구사항을����������� ������������������ 시스템의����������� ������������������ 책임으로����������� ������������������ 변환합니다����������� ������������������
시스템의����������� ������������������ 책임을����������� ������������������ 객체의����������� ������������������ 책임으로����������� ������������������ 변환합니다����������� ������������������
객체의����������� ������������������ 책임����������� ������������������ 일부를����������� ������������������ 수행하기����������� ������������������ 위해����������� ������������������ 외부의����������� ������������������ 도움이����������� ������������������ 필요하다면����������� ������������������ ����������� ������������������ ����������� ������������������ 다른����������� ������������������ 객체에게����������� ������������������ 도움을����������� ������������������ 요청합니다����������� ������������������ ����������� ������������������
책임을����������� ������������������ 담당할����������� ������������������ 수����������� ������������������ 있는����������� ������������������ 적절한����������� ������������������ 객체를����������� ������������������ 선택합니다����������� ������������������
요청을����������� ������������������ 객체의����������� ������������������ 책임으로����������� ������������������ 변환합니다����������� ������������������
사건을����������� ������������������ 수사한다����������� ������������������
System
객체����������� ������������������ 책임����������� ������������������
객체����������� ������������������ 책임����������� ������������������
Responsibility-Driven Design 애플리케이션의����������� ������������������ 요구사항을����������� ������������������ 파악합니다����������� ������������������
애플리케이션의����������� ������������������ 요구사항을����������� ������������������ 시스템의����������� ������������������ 책임으로����������� ������������������ 변환합니다����������� ������������������
시스템의����������� ������������������ 책임을����������� ������������������ 객체의����������� ������������������ 책임으로����������� ������������������ 변환합니다����������� ������������������
객체의����������� ������������������ 책임����������� ������������������ 일부를����������� ������������������ 수행하기����������� ������������������ 위해����������� ������������������ 외부의����������� ������������������ 도움이����������� ������������������ 필요하다면����������� ������������������ ����������� ������������������ ����������� ������������������ 다른����������� ������������������ 객체에게����������� ������������������ 도움을����������� ������������������ 요청합니다����������� ������������������ ����������� ������������������
책임을����������� ������������������ 담당할����������� ������������������ 수����������� ������������������ 있는����������� ������������������ 적절한����������� ������������������ 객체를����������� ������������������ 선택합니다����������� ������������������
요청을����������� ������������������ 객체의����������� ������������������ 책임으로����������� ������������������ 변환합니다����������� ������������������
책임을����������� ������������������ 담당할����������� ������������������ 수����������� ������������������ 있는����������� ������������������ 적절한����������� ������������������ 객체를����������� ������������������ 선택합니다����������� ������������������
사건을����������� ������������������ 수사한다����������� ������������������
System
객체����������� ������������������ 책임����������� ������������������
객체����������� ������������������ 책임����������� ������������������
Part����������� ������������������ -����������� ������������������ 3����������� ������������������
영화����������� ������������������ 예매����������� ������������������ 시스템����������� ������������������
온라인����������� ������������������ 영화����������� ������������������ 예매����������� ������������������ 시스템����������� ������������������
Domain����������� ������������������ Concept����������� ������������������ -����������� ������������������ 영화����������� ������������������
Movie
Domain����������� ������������������ Concept����������� ������������������ -����������� ������������������ 상영����������� ������������������
2010-10-20 09:30 조조 Showing
2010-10-21 20:30 5회
2010-12-01 14:20 4회
Domain����������� ������������������ Concept����������� ������������������ –����������� ������������������ 할인����������� ������������������ 정책����������� ������������������
Discount Amount Discount
Percent Discount
\8,000 - \800 = \7,200
\8,000 – (\8,000 * 0.1) = \7,200
Domain����������� ������������������ Concept����������� ������������������ –����������� ������������������ 할인����������� ������������������ 규칙����������� ������������������
Rule Sequence Rule
Time Rule
조조����������� ������������������ 상영인����������� ������������������ 경우
월요일����������� ������������������ 10:00 ~ 12:00 상영인����������� ������������������ 경우
목요일����������� ������������������ 18:00 ~ 21:00 상영인����������� ������������������ 경우
10회����������� ������������������ 상영인����������� ������������������ 경우
Domain����������� ������������������ Concept����������� ������������������ –할인����������� ������������������ 정책����������� ������������������ +����������� ������������������ 할인����������� ������������������ 규칙����������� ������������������
Movie Discount Rule
1����������� ������������������ 0..1����������� ������������������ 1����������� ������������������ 1..*����������� ������������������
10회����������� ������������������ 상영인����������� ������������������ 경우
Domain����������� ������������������ Concept����������� ������������������ –할인����������� ������������������ 정책����������� ������������������ +����������� ������������������ 할인����������� ������������������ 규칙����������� ������������������
Movie Discount Rule
1����������� ������������������ 0..1����������� ������������������ 1����������� ������������������ 1..*����������� ������������������
이끼 8000원
Amount DC 800원
조조����������� ������������������ 상영인����������� ������������������ 경우
월요일����������� ������������������ 10:00 ~ 12:00 상영인����������� ������������������ 경우
목요일����������� ������������������ 18:00 ~ 21:00 상영인����������� ������������������ 경우
Domain����������� ������������������ Concept����������� ������������������ –할인����������� ������������������ 적용����������� ������������������
상영정보 2010년 12월 23일
목요일 18:00 ~ 20:00(7회차)
10회����������� ������������������ 상영인����������� ������������������ 경우 이끼
8000원 Amount DC
800원
조조����������� ������������������ 상영인����������� ������������������ 경우
월요일����������� ������������������ 10:00 ~ 12:00 상영인����������� ������������������ 경우
목요일����������� ������������������ 18:00 ~ 21:00 상영인����������� ������������������ 경우
Domain����������� ������������������ Concept����������� ������������������ –할인����������� ������������������ 적용����������� ������������������
상영정보 2010년 12월 23일
목요일 18:00 ~ 20:00(7회차)
10회����������� ������������������ 상영인����������� ������������������ 경우 이끼
8000원 Amount DC
800원
조조����������� ������������������ 상영인����������� ������������������ 경우
월요일����������� ������������������ 10:00 ~ 12:00 상영인����������� ������������������ 경우
목요일����������� ������������������ 18:00 ~ 21:00 상영인����������� ������������������ 경우
\7,200
Domain����������� ������������������ Concept����������� ������������������ –예매����������� ������������������
Reservation 이끼
2010년����������� ������������������ 12월����������� ������������������ 23일����������� ������������������ (목) 7회����������� ������������������ 6:00(오후) – 8:00(오후)
2명
16,000원
14,400원
제����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ 목����������� ������������������
상영����������� ������������������ 정보����������� ������������������
인����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ 원����������� ������������������
정����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ 가����������� ������������������
결재����������� ������������������ 금액����������� ������������������
Movie Discount Rule
1����������� ������������������ 0..1����������� ������������������ 1����������� ������������������ 1..*����������� ������������������
1����������� ������������������
0..*����������� ������������������
1����������� ������������������ 0..*����������� ������������������
Showing Reservation
도메인(Domain)����������� ������������������ 개념����������� ������������������ 또는����������� ������������������ 후보����������� ������������������ 객체����������� ������������������
Domain
Showing 상영����������� ������������������ 정보를����������� ������������������ 알고����������� ������������������ 있다����������� ������������������
예매����������� ������������������ 정보를����������� ������������������ 생성한다����������� ������������������
Movie
CRC����������� ������������������ Card����������� ������������������
Candidate(Role����������� ������������������ or����������� ������������������ Object)
Responsibility Collaborator
책임-주도����������� ������������������ 설계����������� ������������������ 도구����������� ������������������
영화를����������� ������������������ 예매한다����������� ������������������
System
애플리케이션����������� ������������������ 요구사항에서부터����������� ������������������ 출발����������� ������������������
영화를����������� ������������������ 예매한다����������� ������������������
System
책임을����������� ������������������ 할당할����������� ������������������ 적절한����������� ������������������ 객체를����������� ������������������ 찾아����������� ������������������ 보겠습니다����������� ������������������
예매����������� ������������������ 생성����������� ������������������ 책임����������� ������������������ 할당����������� ������������������
예매����������� ������������������ 생성에����������� ������������������ 필요한����������� ������������������ 정보의����������� ������������������ 전문가에게����������� ������������������ 할당Creator����������� ������������������
Showing 상영����������� ������������������ 정보를����������� ������������������ 알고����������� ������������������ 있다����������� ������������������
예매����������� ������������������ 정보를����������� ������������������ 생성한다����������� ������������������
가격����������� ������������������ 계산����������� ������������������ 책임����������� ������������������ 할당����������� ������������������
영화����������� ������������������ 가격����������� ������������������ 정보를����������� ������������������ 알고����������� ������������������ 있는����������� ������������������ 전문가에게����������� ������������������ 할당Information����������� ������������������ Expert����������� ������������������
Movie 영화����������� ������������������ 정보를����������� ������������������ 알고����������� ������������������ 있다����������� ������������������
가격을����������� ������������������ 계산한다����������� ������������������
Showing 상영����������� ������������������ 정보를����������� ������������������ 알고����������� ������������������ 있다����������� ������������������
예매����������� ������������������ 정보를����������� ������������������ 생성한다����������� ������������������
Movie Customer
할인율����������� ������������������ 계산����������� ������������������ 책임����������� ������������������ 할당����������� ������������������
할인율을����������� ������������������ 적용할����������� ������������������ STRATEGY����������� ������������������ 객체����������� ������������������ 추가����������� ������������������
Movie 영화����������� ������������������ 정보를����������� ������������������ 알고����������� ������������������ 있다����������� ������������������
가격을����������� ������������������ 계산한다����������� ������������������
Showing 상영����������� ������������������ 정보를����������� ������������������ 알고����������� ������������������ 있다����������� ������������������
예매����������� ������������������ 정보를����������� ������������������ 생성한다����������� ������������������
Movie Customer
Discount Strategy
Discount Strategy
할인율����������� ������������������ 정책을����������� ������������������ 알고����������� ������������������ 있다����������� ������������������
할인된����������� ������������������ 가격을����������� ������������������ 계산한다����������� ������������������
할인����������� ������������������ 여부를����������� ������������������ 판단할����������� ������������������ 책임����������� ������������������ 할당����������� ������������������
할인����������� ������������������ 정책을����������� ������������������ 판단하기����������� ������������������ 위한����������� ������������������ SPECIFICATION����������� ������������������ 객체����������� ������������������ 추가����������� ������������������
Movie 영화����������� ������������������ 정보를����������� ������������������ 알고����������� ������������������ 있다����������� ������������������
가격을����������� ������������������ 계산한다����������� ������������������
Showing 상영����������� ������������������ 정보를����������� ������������������ 알고����������� ������������������ 있다����������� ������������������
예매����������� ������������������ 정보를����������� ������������������ 생성한다����������� ������������������
Movie Customer
Discount Strategy
할인율����������� ������������������ 정책을����������� ������������������ 알고����������� ������������������ 있다����������� ������������������
할인된����������� ������������������ 가격을����������� ������������������ 계산한다����������� ������������������
Discount Strategy
Rule 할인����������� ������������������ 규칙을����������� ������������������ 알고����������� ������������������ 있다����������� ������������������
할인����������� ������������������ 여부를����������� ������������������ 판단한다����������� ������������������
Rule
public class Showing { public Reservation reserve(Customer customer, int audienceCount) { return new Reservation(customer, this, audienceCount); } }
public class Reservation { public Reservation(Customer customer, Showing showing, int audienceCount) { this.customer = customer; this.showing = showing; this.fee = showing.calculateFee().times(audienceCount); this.audienceCount = audienceCount; } }
public class Showing { public Money calculateFee() { return movie.calculateFee(this); } }
public class Movie { public Money calculateFee(Showing showing) { return discountStrategy.calculateFee(showing); } }
책임����������� ������������������ 기반����������� ������������������ 구현����������� ������������������
public abstract class DiscountStrategy { public Money calculateFee(Showing showing) { for(Rule each : rules) { if (each.isStatisfiedBy(showing)) { return getDiscountedFee(showing); } } return showing.getFixedFee(); } abstract protected Money getDiscountedFee(Showing showing); public abstract class Rule {
abstract public boolean isStatisfiedBy(Showing showing); }
public class SequenceRule extends Rule { public boolean isStatisfiedBy(Showing showing) { return showing.isSequence(sequence); } } public class TimeOfDayRule extends Rule {
public boolean isStatisfiedBy(Showing showing) { return showing.isPlayingOn(dayOfWeek) && Interval.closed(startTime, endTime) .includes(showing.getPlayngInterval()); } }
책임����������� ������������������ 기반����������� ������������������ 구현����������� ������������������
public abstract class DiscountStrategy { public Money calculateFee(Showing showing) { for(Rule each : rules) { if (each.isStatisfiedBy(showing)) { return getDiscountedFee(showing); } } return showing.getFixedFee(); } abstract protected Money getDiscountedFee(Showing showing);
책임����������� ������������������ 기반����������� ������������������ 구현����������� ������������������
public class AmountDiscountStrategy extends DiscountStrategy { protected Money getDiscountedFee(Showing showing) { return showing.getFixedFee().minus(discountAmount); } }
public class NonDiscountStrategy extends DiscountStrategy { protected Money getDiscountedFee(Showing showing) { return showing.getFixedFee(); } }
public class PercentDiscountStrategy extends DiscountStrategy { protected Money getDiscountedFee(Showing showing) { return showing.getFixedFee().minus(showing.getFixedFee().times(percent)); } }
Class����������� ������������������ Diagram����������� ������������������
Showing
reserve(customer, count):Reservation
Rule
isStatisfiedBy(showing):boolean
AmountStrategy PercentStrategy NonDiscountStrategy SequenceRule TimeOfDayRule
DiscountStrategy
calculateFee(showing):Money
Movie
calculateFee(showing):Money
<<create>>����������� ������������������
Customer
Reservation
Movie Discount Rule
1����������� ������������������ 0..1����������� ������������������ 1����������� ������������������ 1..*����������� ������������������
1����������� ������������������
0..*����������� ������������������
1����������� ������������������ 0..*����������� ������������������
Showing Reservation
Domain Concepts
Movie Discount Rule
1����������� ������������������ 0..1����������� ������������������ 1����������� ������������������ 1..*����������� ������������������
1����������� ������������������
0..*����������� ������������������
1����������� ������������������ 0..*����������� ������������������
Showing Reservation
Domain Concepts & Implementation
Showing
reserve(customer, count):Reservation
Rule
isStatisfiedBy(showing):boolean
AmountStrategy PercentStrategy NonDiscountStrategy SequenceRule TimeOfDayRule
DiscountStrategy
calculateFee(showing):Money
Movie
calculateFee(showing):Money
<<create>>����������� ������������������
Customer
Reservation
:Showing reserve()����������� ������������������
:Reservation
<<create>>����������� ������������������
calculateFee()����������� ������������������
:Movie
calculateFee()����������� ������������������
:Discount Strategy :Rule
calculateFee()����������� ������������������ isSatisfied()����������� ������������������
Roles, Responsibilities, Collaborations
Part����������� ������������������ -����������� ������������������ 4����������� ������������������
책임-주도����������� ������������������ 설계와����������� ������������������ ����������� ������������������ 객체지향����������� ������������������ 원리����������� ������������������
객체의����������� ������������������ 정의����������� ������������������
책임을����������� ������������������ 수행하는데����������� ������������������ 필요한����������� ������������������ 정보를����������� ������������������ 알고����������� ������������������ 있는����������� ������������������ ����������� ������������������ 정보����������� ������������������ 전문가에게����������� ������������������ 책임을����������� ������������������ 할당하라����������� ������������������ ����������� ������������������
정보����������� ������������������ 전문가(Information����������� ������������������ Expert)����������� ������������������
+����������� ������������������ 상태(State)����������� ������������������
행위(Behavior)����������� ������������������
객체(Object)����������� ������������������ =����������� ������������������
+����������� ������������������ 상태(State)����������� ������������������
행위(Behavior)����������� ������������������
객체(Object)����������� ������������������ =����������� ������������������
객체의����������� ������������������ 정의����������� ������������������
Encapsulation (캡슐화)����������� ������������������
Cohesion (응집도)����������� ������������������
사건을����������� ������������������ 수사한다����������� ������������������
System
방법����������� ������������������
속성����������� ������������������
범인의����������� ������������������ 증거를����������� ������������������ ����������� ������������������
수집한다����������� ������������������ 방법����������� ������������������
Collaboration����������� ������������������
협력����������� ������������������
협력����������� ������������������
Coupling (결합도)����������� ������������������
Dependency (의존성)����������� ������������������
Cohesion (응집도)����������� ������������������
Coupling (결합도)����������� ������������������
설계의����������� ������������������ 목적����������� ������������������
Single-Responsibility Principle (단일-책임����������� ������������������ 원칙)����������� ������������������
Dependency-Inversion Principle (제어-역전����������� ������������������ 원칙)����������� ������������������
Role����������� ������������������
같은����������� ������������������ Message����������� ������������������
다른����������� ������������������ Object����������� ������������������ Type����������� ������������������
:NonDiscount Strategy
:TimeOfDay Rule
:Sequence Rule
:Percent Strategy
:Amount Strategy
:Showing reserve()����������� ������������������
:Reservation
<<create>>����������� ������������������
calculateFee()����������� ������������������
:Movie
calculateFee()����������� ������������������
:Discount Strategy :Rule
calculateFee()����������� ������������������ isSatisfied()����������� ������������������
Role = Same Responsibilities
Role����������� ������������������
같은����������� ������������������ Message����������� ������������������
다른����������� ������������������ Object����������� ������������������ Type����������� ������������������
:NonDiscount Strategy
:TimeOfDay Rule
:Sequence Rule
:Percent Strategy
:Amount Strategy
:Showing reserve()����������� ������������������
:Reservation
<<create>>����������� ������������������
calculateFee()����������� ������������������
:Movie
calculateFee()����������� ������������������
:Discount Strategy :Rule
calculateFee()����������� ������������������ isSatisfied()����������� ������������������
Polymorphism (다형성)����������� ������������������
Role����������� ������������������
:NonDiscount Strategy
:TimeOfDay Rule
:Sequence Rule
:Percent Strategy
:Amount Strategy
:Discount Strategy :Rule
calculateFee()����������� ������������������ isSatisfied()����������� ������������������
Polymorphism (다형성)����������� ������������������
Rule
AmountStrategy PercentStrategy NonDiscountStrategy SequenceRule TimeOfDayRule
DiscountStrategy Inheritance (상속)����������� ������������������
구현����������� ������������������ 메커니즘����������� ������������������
Rule
AmountStrategy PercentStrategy NonDiscountStrategy SequenceRule TimeOfDayRule
DiscountStrategy
치환����������� ������������������ 가능����������� ������������������
치환����������� ������������������ 가능����������� ������������������
Liskov-Substitution Principle (리스코프����������� ������������������ 치환����������� ������������������ 원칙)����������� ������������������ Role����������� ������������������
:NonDiscount Strategy
:TimeOfDay Rule
:Sequence Rule
:Percent Strategy
:Amount Strategy
:Discount Strategy :Rule
calculateFee()����������� ������������������ isSatisfied()����������� ������������������
AmountStrategy PercentStrategy NonDiscountStrategy
DiscountStrategy
새로운����������� ������������������ 할인����������� ������������������ 정책����������� ������������������ 추가����������� ������������������
MileageBased DiscountStrategy
Open-Closed Principle (개방-폐쇄����������� ������������������ 원칙)����������� ������������������
클라이언트����������� ������������������ 관점에서����������� ������������������ ����������� ������������������ 동일한����������� ������������������ 책임,����������� ������������������ 동일한����������� ������������������ 역할����������� ������������������
Movie
새로운����������� ������������������ 정책을����������� ������������������ 추가하더라도����������� ������������������ 기존����������� ������������������ 코드를����������� ������������������ 수정할����������� ������������������ 필요����������� ������������������ 없음����������� ������������������
:Discount Strategy
:Movie :Discount Strategy
calculateFee()����������� ������������������
117
Thank you