roles, responsibilities, collaborations

117
역할, 책임, 협력 Roles, Responsibilities, and Collaborations Ernis Chit-Chat hp://aernum.egloos.com/ s[email protected]

Upload: youngho-cho

Post on 10-May-2015

3.879 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Roles, Responsibilities, Collaborations

역할,����������� ������������������  책임,����������� ������������������  협력����������� ������������������  Roles,����������� ������������������  Responsibilities,����������� ������������������  and����������� ������������������  Collaborations����������� ������������������  

Eternity’s Chit-Chat http://aeternum.egloos.com/

[email protected]

Page 2: Roles, Responsibilities, Collaborations

강의의����������� ������������������  목적����������� ������������������  

객체지향의����������� ������������������  본질을����������� ������������������  이해하는데����������� ������������������  필요한����������� ������������������  힌트����������� ������������������  제공����������� ������������������  

Page 3: Roles, Responsibilities, Collaborations

목차����������� ������������������  1.객체지향의����������� ������������������  본질

2.책임-주도����������� ������������������  설계

3.영화����������� ������������������  예매����������� ������������������  시스템

4.책임-주도����������� ������������������  설계와����������� ������������������  객체지향����������� ������������������  원리

Page 4: Roles, Responsibilities, Collaborations

Part����������� ������������������  -����������� ������������������  1����������� ������������������  

객체지향의����������� ������������������  본질����������� ������������������  

Page 5: Roles, Responsibilities, Collaborations
Page 6: Roles, Responsibilities, Collaborations
Page 7: Roles, Responsibilities, Collaborations

3명의����������� ������������������  등장인물����������� ������������������  레스트레이드����������� ������������������  경

감 셜록����������� ������������������  홈즈

존����������� ������������������  왓슨

Page 8: Roles, Responsibilities, Collaborations

이들은����������� ������������������  무엇을����������� ������������������  하고����������� ������������������  있을까요?����������� ������������������  

셜록����������� ������������������  홈즈 존����������� ������������������  왓슨

레스트레이드����������� ������������������  경감

Page 9: Roles, Responsibilities, Collaborations

살인사건을����������� ������������������  해결하기����������� ������������������  위해����������� ������������������  

셜록����������� ������������������  홈즈 존����������� ������������������  왓슨

레스트레이드����������� ������������������  경감 협력하고����������� ������������������  있습니다����������� ������������������  

시체

Page 10: Roles, Responsibilities, Collaborations

등장인물들은����������� ������������������  서로����������� ������������������  협력����������� ������������������  하기����������� ������������������  위해����������� ������������������  

셜록����������� ������������������  홈즈 존����������� ������������������  왓슨

레스트레이드����������� ������������������  경감

전����������� ������������������  범인의����������� ������������������  단서를����������� ������������������  발견합니다����������� ������������������  

전����������� ������������������  시체를����������� ������������������  검시합니다����������� ������������������  

각자����������� ������������������  맡은����������� ������������������  책임을����������� ������������������  수행해야����������� ������������������  ����������� ������������������  합니다����������� ������������������  

시체

전����������� ������������������  사건을����������� ������������������  ����������� ������������������  

수사합니다����������� ������������������  

Page 11: Roles, Responsibilities, Collaborations

셜록����������� ������������������  홈즈 존����������� ������������������  왓슨

레스트레이드����������� ������������������  경감 전����������� ������������������  사건을����������� ������������������  ����������� ������������������  

수사합니다����������� ������������������  

전����������� ������������������  범인의����������� ������������������  단서를����������� ������������������  발견합니다����������� ������������������  

전����������� ������������������  시체를����������� ������������������  검시합니다����������� ������������������  

시체

수사를����������� ������������������  위해����������� ������������������  협력����������� ������������������  하는����������� ������������������  중에����������� ������������������  

자신이����������� ������������������  맡은����������� ������������������  책임을����������� ������������������  수행하기����������� ������������������  위해서는����������� ������������������  다른����������� ������������������  사람의����������� ������������������  도움을����������� ������������������  받아야����������� ������������������  할����������� ������������������  때가����������� ������������������  있습니다����������� ������������������  

Page 12: Roles, Responsibilities, Collaborations

등장인물들이����������� ������������������  자신의����������� ������������������  책임을����������� ������������������  수행하기위해����������� ������������������  

어떤����������� ������������������  도움이����������� ������������������  필요한지����������� ������������������  살펴����������� ������������������  보죠����������� ������������������  

셜록����������� ������������������  홈즈 존����������� ������������������  왓슨

레스트레이드����������� ������������������  경감

시체

사건을����������� ������������������  수사하기����������� ������������������  위해서는����������� ������������������  

셜록에게����������� ������������������  범인의����������� ������������������  증거를����������� ������������������  수집해����������� ������������������  ����������� ������������������  

달라고����������� ������������������  해야����������� ������������������  합니다����������� ������������������  

범인의����������� ������������������  증거를����������� ������������������  수집하기����������� ������������������  ����������� ������������������  위해서는����������� ������������������  왓슨에게����������� ������������������  ����������� ������������������  시체를����������� ������������������  검시해����������� ������������������  달라고����������� ������������������  해야����������� ������������������  합니다����������� ������������������  

저는����������� ������������������  시체를����������� ������������������  검시하기����������� ������������������  위해����������� ������������������  특별히����������� ������������������  다른����������� ������������������  사람의����������� ������������������  도움이����������� ������������������  필요하지는����������� ������������������  않습니다����������� ������������������  

Page 13: Roles, Responsibilities, Collaborations

등장인물들이����������� ������������������  요청하는����������� ������������������  도움은����������� ������������������  

다른����������� ������������������  등장인물의����������� ������������������  책임이����������� ������������������  됩니다����������� ������������������  

셜록����������� ������������������  홈즈 존����������� ������������������  왓슨

레스트레이드����������� ������������������  경감

시체

레스트레이드����������� ������������������  경감의����������� ������������������  책임����������� ������������������  

홈즈의����������� ������������������  책임����������� ������������������  

홈즈의����������� ������������������  책임����������� ������������������  

왓슨의����������� ������������������  책임����������� ������������������  

왓슨의����������� ������������������  책임����������� ������������������  

사건을����������� ������������������  수사하기����������� ������������������  위해서는����������� ������������������  

셜록에게����������� ������������������  범인의����������� ������������������  증거를����������� ������������������  수집해����������� ������������������  ����������� ������������������  

달라고����������� ������������������  해야����������� ������������������  합니다����������� ������������������  

저는����������� ������������������  시체를����������� ������������������  검시하기����������� ������������������  위해����������� ������������������  특별히����������� ������������������  다른����������� ������������������  사람의����������� ������������������  도움이����������� ������������������  필요하지는����������� ������������������  않습니다����������� ������������������  

범인의����������� ������������������  증거를����������� ������������������  수집하기����������� ������������������  ����������� ������������������  위해서는����������� ������������������  왓슨에게����������� ������������������  ����������� ������������������  시체를����������� ������������������  검시해����������� ������������������  달라고����������� ������������������  해야����������� ������������������  합니다����������� ������������������  

Page 14: Roles, Responsibilities, Collaborations

등장인물들은����������� ������������������  자신의����������� ������������������  책임을����������� ������������������  수행하기����������� ������������������  위해����������� ������������������  

다른����������� ������������������  등장인물의����������� ������������������  책임을����������� ������������������  요청하면서����������� ������������������  

협력합니다����������� ������������������  

셜록����������� ������������������  홈즈 존����������� ������������������  왓슨

시체

시체를����������� ������������������  검시해����������� ������������������  주게����������� ������������������  

사건을����������� ������������������  수사해����������� ������������������  ����������� ������������������  주세요����������� ������������������  

레스트레이드����������� ������������������  경감

Page 15: Roles, Responsibilities, Collaborations

등장인물들은����������� ������������������  ����������� ������������������  

자신만의����������� ������������������  방법으로����������� ������������������  ����������� ������������������  

요청을����������� ������������������  처리한����������� ������������������  후����������� ������������������  ����������� ������������������  

응답합니다����������� ������������������  

셜록����������� ������������������  홈즈 존����������� ������������������  왓슨

시체

레스트레이드����������� ������������������  경감

사건을����������� ������������������  수사해����������� ������������������  ����������� ������������������  주세요����������� ������������������  

약에����������� ������������������  의한����������� ������������������  발작으로����������� ������������������  인해����������� ������������������  질식사한����������� ������������������  것으로����������� ������������������  추정되는군����������� ������������������  

시체를����������� ������������������  검시해����������� ������������������  주게����������� ������������������  

범인은����������� ������������������  이러이러한����������� ������������������  사람입니다����������� ������������������  

Page 16: Roles, Responsibilities, Collaborations

����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  

자신만의����������� ������������������  방법����������� ������������������  ����������� ������������������  ����������� ������������������  

����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  

����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  

자율적인(autonomous)����������� ������������������  

Page 17: Roles, Responsibilities, Collaborations

자율적인(autonomous)����������� ������������������  

자기����������� ������������������  스스로의����������� ������������������  원칙에����������� ������������������  따라����������� ������������������  어떤����������� ������������������  일을����������� ������������������  하거나����������� ������������������  자기����������� ������������������  스스로를����������� ������������������  통제하여����������� ������������������  절제하는����������� ������������������  것.����������� ������������������  

등장인물들은����������� ������������������  자율적으로����������� ������������������  자신의����������� ������������������  책임을����������� ������������������  수행합니다����������� ������������������  

Page 18: Roles, Responsibilities, Collaborations

자율적인����������� ������������������  캐릭터는����������� ������������������  외부의����������� ������������������  간섭을����������� ������������������  받지����������� ������������������  않고����������� ������������������  ����������� ������������������  

자신만의����������� ������������������  방법에����������� ������������������  따라����������� ������������������  ����������� ������������������  

스스로����������� ������������������  판단하고����������� ������������������  결정합니다����������� ������������������  

Page 19: Roles, Responsibilities, Collaborations

드라마����������� ������������������  속의����������� ������������������  등장인물들은����������� ������������������  단지����������� ������������������  배우가����������� ������������������  연기하는����������� ������������������  ����������� ������������������  역할일����������� ������������������  뿐입니다����������� ������������������  

Page 20: Roles, Responsibilities, Collaborations

역할은����������� ������������������  그����������� ������������������  사람이����������� ������������������  ����������� ������������������  

협력����������� ������������������  안에서����������� ������������������  어떤����������� ������������������  책임을����������� ������������������  ����������� ������������������  

수행할����������� ������������������  수����������� ������������������  있는지를����������� ������������������  ����������� ������������������  

설명합니다����������� ������������������  

셜록����������� ������������������  홈즈 존����������� ������������������  왓슨

시체

시체를����������� ������������������  검시해����������� ������������������  주게����������� ������������������  

사건을����������� ������������������  수사해����������� ������������������  ����������� ������������������  주세요����������� ������������������  

레스트레이드����������� ������������������  경감

경감

탐정 조수

역할����������� ������������������  

책임����������� ������������������  

협력����������� ������������������  

Page 21: Roles, Responsibilities, Collaborations

여러분은����������� ������������������  방금����������� ������������������  객체지향의����������� ������������������  핵심����������� ������������������  개념����������� ������������������  대부분을����������� ������������������  배우셨습니다����������� ������������������  ����������� ������������������  

Page 22: Roles, Responsibilities, Collaborations

설록에����������� ������������������  나오는����������� ������������������  등장인물들을����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  라고����������� ������������������  생각해보죠����������� ������������������  객체����������� ������������������    

Page 23: Roles, Responsibilities, Collaborations

객체들은����������� ������������������  공통의����������� ������������������  목적을����������� ������������������  달성하기����������� ������������������  위해����������� ������������������  서로����������� ������������������  협력합니다����������� ������������������  

Page 24: Roles, Responsibilities, Collaborations

객체들은����������� ������������������  협력을����������� ������������������  위해����������� ������������������  책임을����������� ������������������  할당����������� ������������������  받습니다����������� ������������������  

Page 25: Roles, Responsibilities, Collaborations

협력����������� ������������������  안에서����������� ������������������  객체의����������� ������������������  역할을����������� ������������������  ����������� ������������������  결정하는����������� ������������������  것은����������� ������������������  객체가����������� ������������������  수행하는����������� ������������������  책임입니다����������� ������������������  

Page 26: Roles, Responsibilities, Collaborations

객체지향����������� ������������������  설계의����������� ������������������  핵심은����������� ������������������  

Page 27: Roles, Responsibilities, Collaborations

Role

Page 28: Roles, Responsibilities, Collaborations

Responsibility

Page 29: Roles, Responsibilities, Collaborations

Collaboration

Page 30: Roles, Responsibilities, Collaborations

객체지향����������� ������������������  설계의����������� ������������������  모양을����������� ������������������  결정하는����������� ������������������  것은����������� ������������������  

책임(Responsibility)입니다����������� ������������������  

Page 31: Roles, Responsibilities, Collaborations

Part����������� ������������������  -����������� ������������������  2����������� ������������������  

책임-주도����������� ������������������  설계����������� ������������������  

Page 32: Roles, Responsibilities, Collaborations

책임이����������� ������������������  설계를����������� ������������������  주도한다?����������� ������������������  

Page 33: Roles, Responsibilities, Collaborations

애플리케이션의����������� ������������������  요구사항����������� ������������������  

사건을����������� ������������������  수사한다����������� ������������������  

시스템의����������� ������������������  책임으로����������� ������������������  생각����������� ������������������  

System

애플리케이션의����������� ������������������  요구사항은����������� ������������������  시스템의����������� ������������������  책임이����������� ������������������  됩니다����������� ������������������  

Page 34: Roles, Responsibilities, Collaborations

시스템의����������� ������������������  책임을����������� ������������������  객체의����������� ������������������  책임으로����������� ������������������  생각합니다����������� ������������������  

사건을����������� ������������������  수사한다����������� ������������������  System

객체에����������� ������������������  대한����������� ������������������  책임����������� ������������������  

시스템의����������� ������������������  책임����������� ������������������  

어떤����������� ������������������  객체에게����������� ������������������  ����������� ������������������  할당하면����������� ������������������  좋을까요?����������� ������������������  

Page 35: Roles, Responsibilities, Collaborations

책임의����������� ������������������  요청����������� ������������������  =����������� ������������������  메시지����������� ������������������  전송(Message����������� ������������������  Sending)����������� ������������������  

사건을����������� ������������������  수사한다����������� ������������������  

System

Message Sen

ding

Page 36: Roles, Responsibilities, Collaborations

객체는����������� ������������������  책임을����������� ������������������  수행하기����������� ������������������  위한����������� ������������������  방법을����������� ������������������  선택합니다����������� ������������������  

사건을����������� ������������������  수사한다����������� ������������������  

System

Message Sen

ding

방법����������� ������������������  

Page 37: Roles, Responsibilities, Collaborations

방법이라는����������� ������������������  뜻을����������� ������������������  가진����������� ������������������  영어����������� ������������������  단어는����������� ������������������  메서드(Method)입니다����������� ������������������  

사건을����������� ������������������  수사한다����������� ������������������  

System

Message Sen

ding

방법����������� ������������������  

Method

Page 38: Roles, Responsibilities, Collaborations

객체지향의����������� ������������������  메서드(Method)는����������� ������������������  수신된����������� ������������������  메시지(Message)를����������� ������������������  ����������� ������������������  처리하는����������� ������������������  방법을����������� ������������������  의미합니다����������� ������������������  

System

방법����������� ������������������  

Method

사건을����������� ������������������  수사한다����������� ������������������  

Message Sen

ding

Page 39: Roles, Responsibilities, Collaborations

메서드(Method)에는����������� ������������������  스스로����������� ������������������  처리할����������� ������������������  수����������� ������������������  없는����������� ������������������  작업이����������� ������������������  포함되어����������� ������������������  있을����������� ������������������  수����������� ������������������  있습니다����������� ������������������  

사건을����������� ������������������  수사한다����������� ������������������  

System

방법����������� ������������������  

범인의����������� ������������������  증거를����������� ������������������  수집한다����������� ������������������  

Method

Page 40: Roles, Responsibilities, Collaborations

스스로����������� ������������������  처리할����������� ������������������  수����������� ������������������  없는����������� ������������������  작업은����������� ������������������  또����������� ������������������  다른����������� ������������������  객체에����������� ������������������  대한����������� ������������������  요청이����������� ������������������  됩니다����������� ������������������  

사건을����������� ������������������  수사한다����������� ������������������  

System

방법����������� ������������������  

범인의����������� ������������������  증거를����������� ������������������  ����������� ������������������  

수집한다����������� ������������������  

Page 41: Roles, Responsibilities, Collaborations

앞에서와����������� ������������������  동일하게����������� ������������������  다른����������� ������������������  객체에����������� ������������������  대한����������� ������������������  요청은����������� ������������������  메시지����������� ������������������  전송을����������� ������������������  의미합니다����������� ������������������  

사건을����������� ������������������  수사한다����������� ������������������  

System

방법����������� ������������������  

범인의����������� ������������������  증거를����������� ������������������  ����������� ������������������  

수집한다����������� ������������������  

Message Sending

Page 42: Roles, Responsibilities, Collaborations

다시����������� ������������������  메시지를����������� ������������������  처리할����������� ������������������  수����������� ������������������  있는����������� ������������������  적절한����������� ������������������  객체를����������� ������������������  선택합니다����������� ������������������  

사건을����������� ������������������  수사한다����������� ������������������  

System

방법����������� ������������������  

범인의����������� ������������������  증거를����������� ������������������  ����������� ������������������  

수집한다����������� ������������������  

Message Sending

Page 43: Roles, Responsibilities, Collaborations

사건을����������� ������������������  수사한다����������� ������������������  

System

방법����������� ������������������  

범인의����������� ������������������  증거를����������� ������������������  ����������� ������������������  

수집한다����������� ������������������  

Message Sending Responsibility

수신된����������� ������������������  메시지����������� ������������������  =����������� ������������������  객체의����������� ������������������  책임����������� ������������������  

Page 44: Roles, Responsibilities, Collaborations

사건을����������� ������������������  수사한다����������� ������������������  

System

방법����������� ������������������  

범인의����������� ������������������  증거를����������� ������������������  ����������� ������������������  

수집한다����������� ������������������  

홈즈����������� ������������������  역시����������� ������������������  메시지를����������� ������������������  처리하기����������� ������������������  위한����������� ������������������  자신만의����������� ������������������  방법(Method)을����������� ������������������  선택합니다����������� ������������������  

방법����������� ������������������  

Method

Page 45: Roles, Responsibilities, Collaborations

사건을����������� ������������������  수사한다����������� ������������������  

System

방법����������� ������������������  

범인의����������� ������������������  증거를����������� ������������������  ����������� ������������������  

수집한다����������� ������������������  

스스로����������� ������������������  처리할����������� ������������������  수����������� ������������������  없는����������� ������������������  작업은����������� ������������������  외부의����������� ������������������  객체에게����������� ������������������  요청하죠����������� ������������������  

방법����������� ������������������  

시체를����������� ������������������  검시한다����������� ������������������  

Method

Page 46: Roles, Responsibilities, Collaborations

사건을����������� ������������������  수사한다����������� ������������������  

System

방법����������� ������������������  

범인의����������� ������������������  증거를����������� ������������������  ����������� ������������������  

수집한다����������� ������������������  

마찬가지로����������� ������������������  다른����������� ������������������  객체에����������� ������������������  대한����������� ������������������  요청은����������� ������������������  메시지����������� ������������������  전송(Message����������� ������������������  Sending)을����������� ������������������  의미합니다����������� ������������������  

방법����������� ������������������  

시체를����������� ������������������  

검시한다����������� ������������������  

Page 47: Roles, Responsibilities, Collaborations

사건을����������� ������������������  수사한다����������� ������������������  

System

방법����������� ������������������  

범인의����������� ������������������  증거를����������� ������������������  ����������� ������������������  

수집한다����������� ������������������  

메시지를����������� ������������������  처리할����������� ������������������  수����������� ������������������  있는����������� ������������������  적절한����������� ������������������  객체를����������� ������������������  선택합니다����������� ������������������  

방법����������� ������������������  

시체를����������� ������������������  

검시한다����������� ������������������  

Page 48: Roles, Responsibilities, Collaborations

사건을����������� ������������������  수사한다����������� ������������������  

System

방법����������� ������������������  

범인의����������� ������������������  증거를����������� ������������������  ����������� ������������������  

수집한다����������� ������������������  

존����������� ������������������  왓슨����������� ������������������  역시����������� ������������������  자신만의����������� ������������������  방법(Method)에����������� ������������������  따라����������� ������������������  메시지를����������� ������������������  ����������� ������������������  처리합니다����������� ������������������  ����������� ������������������  

방법����������� ������������������  

시체를����������� ������������������  

검시한다����������� ������������������  

방법����������� ������������������  

Method

Page 49: Roles, Responsibilities, Collaborations

사건을����������� ������������������  수사한다����������� ������������������  

System

방법����������� ������������������  

범인의����������� ������������������  증거를����������� ������������������  ����������� ������������������  

수집한다����������� ������������������  

존����������� ������������������  왓슨의����������� ������������������  경우에는����������� ������������������  스스로����������� ������������������  책임을����������� ������������������  완수할����������� ������������������  수����������� ������������������  있기����������� ������������������  때문에����������� ������������������  ����������� ������������������  외부에����������� ������������������  요청할����������� ������������������  필요가����������� ������������������  없습니다����������� ������������������  

방법����������� ������������������  

시체를����������� ������������������  

검시한다����������� ������������������  

방법����������� ������������������  

Page 50: Roles, Responsibilities, Collaborations

사건을����������� ������������������  수사한다����������� ������������������  

System

방법����������� ������������������  

범인의����������� ������������������  증거를����������� ������������������  ����������� ������������������  

수집한다����������� ������������������  

사건을����������� ������������������  수사하기����������� ������������������  위한����������� ������������������  객체����������� ������������������  간의����������� ������������������  협력에����������� ������������������  대한����������� ������������������  설계가����������� ������������������  ����������� ������������������  완성되었습니다����������� ������������������  

방법����������� ������������������  

시체를����������� ������������������  

검시한다����������� ������������������  

방법����������� ������������������  

Page 51: Roles, Responsibilities, Collaborations

Design Responsibility -Driven

Page 52: Roles, Responsibilities, Collaborations

WHAT WHO / CYCLE

Page 53: Roles, Responsibilities, Collaborations

WHAT 무엇을����������� ������������������  해야����������� ������������������  하는가?����������� ������������������  

Page 54: Roles, Responsibilities, Collaborations

WHAT 어떤����������� ������������������  메시지를����������� ������������������  전송해야����������� ������������������  하는가?����������� ������������������  

Page 55: Roles, Responsibilities, Collaborations

WHAT 책임이����������� ������������������  무엇인가?����������� ������������������  

Page 56: Roles, Responsibilities, Collaborations

WHO 어떤����������� ������������������  객체가����������� ������������������  메시지를����������� ������������������  수신할����������� ������������������  것인가?����������� ������������������  

Page 57: Roles, Responsibilities, Collaborations

어떤����������� ������������������  객체가����������� ������������������  책임을����������� ������������������  맡을����������� ������������������  것인가?����������� ������������������  

WHO

Page 58: Roles, Responsibilities, Collaborations

/ WHO

Responsibility

WHAT

Role

CYCLE

Page 59: Roles, Responsibilities, Collaborations

Design Responsibility-Driven

Responsibility Role

Page 60: Roles, Responsibilities, Collaborations

Design Responsibility-Driven

책임의����������� ������������������  선택이����������� ������������������  역할과����������� ������������������  협력의����������� ������������������  구조를����������� ������������������  결정합니다����������� ������������������  ����������� ������������������  

Page 61: Roles, Responsibilities, Collaborations

책임����������� ������������������  할당의����������� ������������������  기본����������� ������������������  원칙����������� ������������������  

책임을����������� ������������������  수행하는데����������� ������������������  필요한����������� ������������������  정보를����������� ������������������  알고����������� ������������������  있는����������� ������������������  ����������� ������������������  정보����������� ������������������  전문가에게����������� ������������������  책임을����������� ������������������  할당하라����������� ������������������  ����������� ������������������  

정보����������� ������������������  전문가(Information����������� ������������������  Expert)����������� ������������������  

Page 62: Roles, Responsibilities, Collaborations

사건을����������� ������������������  수사한다����������� ������������������  

System

방법����������� ������������������  

책임을����������� ������������������  수행하기����������� ������������������  위해서는����������� ������������������  

필요한����������� ������������������  정보를����������� ������������������  알고����������� ������������������  있어야����������� ������������������  합니다����������� ������������������  

사건����������� ������������������  수사를����������� ������������������  위한����������� ������������������  오랜����������� ������������������  경험과����������� ������������������  유사����������� ������������������  사건����������� ������������������  목록을����������� ������������������  알고����������� ������������������  있습니다����������� ������������������  

����������� ������������������  Information����������� ������������������  

Page 63: Roles, Responsibilities, Collaborations

사건을����������� ������������������  수사한다����������� ������������������  

System

방법����������� ������������������  

책임����������� ������������������  수행에����������� ������������������  필요한����������� ������������������  대부분의����������� ������������������  정보는����������� ������������������  

객체의����������� ������������������  상태(State)로����������� ������������������  표현����������� ������������������  됩니다����������� ������������������  

사건����������� ������������������  수사를����������� ������������������  위한����������� ������������������  오랜����������� ������������������  경험과����������� ������������������  유사����������� ������������������  사건����������� ������������������  목록을����������� ������������������  알고����������� ������������������  있습니다����������� ������������������  

����������� ������������������  Information����������� ������������������  State����������� ������������������  

Page 64: Roles, Responsibilities, Collaborations

사건을����������� ������������������  수사한다����������� ������������������  

System

방법����������� ������������������  

사건����������� ������������������  수사를����������� ������������������  위한����������� ������������������  오랜����������� ������������������  경험과����������� ������������������  유사����������� ������������������  사건����������� ������������������  목록을����������� ������������������  알고����������� ������������������  있습니다����������� ������������������  

����������� ������������������  Information����������� ������������������  State����������� ������������������  

속성����������� ������������������  

대부분의����������� ������������������  상태����������� ������������������  정보는����������� ������������������  ����������� ������������������  객체가����������� ������������������  내부적으로����������� ������������������  관리하는����������� ������������������  속성(attribute)입니다����������� ������������������  

Page 65: Roles, Responsibilities, Collaborations

사건을����������� ������������������  수사한다����������� ������������������  

System

방법����������� ������������������  

사건����������� ������������������  수사를����������� ������������������  위한����������� ������������������  오랜����������� ������������������  경험과����������� ������������������  유사����������� ������������������  사건����������� ������������������  목록을����������� ������������������  알고����������� ������������������  있습니다����������� ������������������  

����������� ������������������  Information����������� ������������������  State����������� ������������������  

속성����������� ������������������  

객체는����������� ������������������  책임의����������� ������������������  모든����������� ������������������  부분을����������� ������������������  스스로����������� ������������������  처리할����������� ������������������  수����������� ������������������  없기����������� ������������������  때문에����������� ������������������  ����������� ������������������  다른����������� ������������������  객체와����������� ������������������  협력해야����������� ������������������  합니다����������� ������������������  

Page 66: Roles, Responsibilities, Collaborations

사건을����������� ������������������  수사한다����������� ������������������  

System

방법����������� ������������������  

����������� ������������������  Information����������� ������������������  State����������� ������������������  

속성����������� ������������������  

협력을����������� ������������������  위해����������� ������������������  메시지를����������� ������������������  전송할����������� ������������������  객체를����������� ������������������  알아야����������� ������������������  합니다����������� ������������������  

범인의����������� ������������������  증거를����������� ������������������  ����������� ������������������  

수집한다����������� ������������������  방법����������� ������������������  

Page 67: Roles, Responsibilities, Collaborations

사건을����������� ������������������  수사한다����������� ������������������  

System

방법����������� ������������������  

����������� ������������������  Information����������� ������������������  State����������� ������������������  

속성����������� ������������������  

책임����������� ������������������  수행에����������� ������������������  필요한����������� ������������������  정보에는����������� ������������������  객체의����������� ������������������  속성����������� ������������������  뿐만����������� ������������������  아니라����������� ������������������  누가����������� ������������������  협력자(Collaborator)인지에����������� ������������������  대한����������� ������������������  정보도����������� ������������������  포함됩니다����������� ������������������  

범인의����������� ������������������  증거를����������� ������������������  ����������� ������������������  

수집한다����������� ������������������  방법����������� ������������������  

Page 68: Roles, Responsibilities, Collaborations

사건을����������� ������������������  수사한다����������� ������������������  

System

방법����������� ������������������  

����������� ������������������  Information����������� ������������������  State����������� ������������������  

속성����������� ������������������  

협력자(Collaborator)에����������� ������������������  대한����������� ������������������  정보는����������� ������������������  객체����������� ������������������  상태(State)의����������� ������������������  일부가����������� ������������������  됩니다����������� ������������������  

범인의����������� ������������������  증거를����������� ������������������  ����������� ������������������  

수집한다����������� ������������������  방법����������� ������������������  

State����������� ������������������  

Page 69: Roles, Responsibilities, Collaborations

책임을����������� ������������������  수행하는데����������� ������������������  필요한����������� ������������������  정보를����������� ������������������  알고����������� ������������������  있는����������� ������������������  ����������� ������������������  정보����������� ������������������  전문가에게����������� ������������������  책임을����������� ������������������  할당하라����������� ������������������  ����������� ������������������  

정보����������� ������������������  전문가(Information����������� ������������������  Expert)����������� ������������������  

Information����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  =����������� ������������������  State����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  =����������� ������������������  Attribute����������� ������������������  +����������� ������������������  Collaborator  

Page 70: Roles, Responsibilities, Collaborations

객체는����������� ������������������  자신의����������� ������������������  상태를����������� ������������������  이용해서����������� ������������������  책임을����������� ������������������  어떻게����������� ������������������  수행할����������� ������������������  것인지를����������� ������������������  스스로����������� ������������������  결정합니다����������� ������������������  

자율적인(autonomous)����������� ������������������  

Page 71: Roles, Responsibilities, Collaborations

하는����������� ������������������  것(Doing)����������� ������������������  

아는����������� ������������������  것(knowing)����������� ������������������  

-����������� ������������������  객체를����������� ������������������  생성하거나����������� ������������������  계산을����������� ������������������  하는����������� ������������������  등의����������� ������������������  스스로����������� ������������������  하는����������� ������������������  것����������� ������������������  -����������� ������������������  다른����������� ������������������  객체(협력자)의����������� ������������������  행동을����������� ������������������  시작시키는����������� ������������������  것����������� ������������������  -����������� ������������������  다른����������� ������������������  객체(협력자)의����������� ������������������  활동을����������� ������������������  제어하고����������� ������������������  조절하는����������� ������������������  것����������� ������������������  

-����������� ������������������  private로����������� ������������������  캡슐화된����������� ������������������  데이터(상태)에����������� ������������������  관해����������� ������������������  아는����������� ������������������  것����������� ������������������  -����������� ������������������  관련된����������� ������������������  객체(협력자)에����������� ������������������  관하여����������� ������������������  아는����������� ������������������  것����������� ������������������  -����������� ������������������  자신이����������� ������������������  유도하거나����������� ������������������  계산할����������� ������������������  수����������� ������������������  있는����������� ������������������  것(상태+협력자)에����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  관하여����������� ������������������  아는����������� ������������������  것����������� ������������������  

책임(Responsibility)����������� ������������������  

Page 72: Roles, Responsibilities, Collaborations

Responsibility-Driven Design 애플리케이션의����������� ������������������  요구사항을����������� ������������������  파악합니다����������� ������������������  

사건을����������� ������������������  수사한다����������� ������������������  

System

Page 73: Roles, Responsibilities, Collaborations

Responsibility-Driven Design 애플리케이션의����������� ������������������  요구사항을����������� ������������������  파악합니다����������� ������������������  

애플리케이션의����������� ������������������  요구사항을����������� ������������������  시스템의����������� ������������������  책임으로����������� ������������������  변환합니다����������� ������������������  

사건을����������� ������������������  수사한다����������� ������������������  

System

시스템����������� ������������������  책임����������� ������������������  

Page 74: Roles, Responsibilities, Collaborations

Responsibility-Driven Design 애플리케이션의����������� ������������������  요구사항을����������� ������������������  파악합니다����������� ������������������  

애플리케이션의����������� ������������������  요구사항을����������� ������������������  시스템의����������� ������������������  책임으로����������� ������������������  변환합니다����������� ������������������  

시스템의����������� ������������������  책임을����������� ������������������  객체의����������� ������������������  책임으로����������� ������������������  변환합니다����������� ������������������  

사건을����������� ������������������  수사한다����������� ������������������  

System

시스템����������� ������������������  책임����������� ������������������  객체����������� ������������������  책임����������� ������������������  

Page 75: Roles, Responsibilities, Collaborations

Responsibility-Driven Design 애플리케이션의����������� ������������������  요구사항을����������� ������������������  파악합니다����������� ������������������  

애플리케이션의����������� ������������������  요구사항을����������� ������������������  시스템의����������� ������������������  책임으로����������� ������������������  변환합니다����������� ������������������  

시스템의����������� ������������������  책임을����������� ������������������  객체의����������� ������������������  책임으로����������� ������������������  변환합니다����������� ������������������  

책임을����������� ������������������  담당할����������� ������������������  수����������� ������������������  있는����������� ������������������  적절한����������� ������������������  객체를����������� ������������������  선택합니다����������� ������������������  사건을����������� ������������������  수사한다����������� ������������������  

System

객체����������� ������������������  책임����������� ������������������  

Page 76: Roles, Responsibilities, Collaborations

Responsibility-Driven Design 애플리케이션의����������� ������������������  요구사항을����������� ������������������  파악합니다����������� ������������������  

애플리케이션의����������� ������������������  요구사항을����������� ������������������  시스템의����������� ������������������  책임으로����������� ������������������  변환합니다����������� ������������������  

시스템의����������� ������������������  책임을����������� ������������������  객체의����������� ������������������  책임으로����������� ������������������  변환합니다����������� ������������������  

책임을����������� ������������������  담당할����������� ������������������  수����������� ������������������  있는����������� ������������������  적절한����������� ������������������  객체를����������� ������������������  선택합니다����������� ������������������  사건을����������� ������������������  수사한다����������� ������������������  

System

객체����������� ������������������  책임����������� ������������������  

Page 77: Roles, Responsibilities, Collaborations

Responsibility-Driven Design 애플리케이션의����������� ������������������  요구사항을����������� ������������������  파악합니다����������� ������������������  

애플리케이션의����������� ������������������  요구사항을����������� ������������������  시스템의����������� ������������������  책임으로����������� ������������������  변환합니다����������� ������������������  

시스템의����������� ������������������  책임을����������� ������������������  객체의����������� ������������������  책임으로����������� ������������������  변환합니다����������� ������������������  

객체의����������� ������������������  책임����������� ������������������  일부를����������� ������������������  수행하기����������� ������������������  위해����������� ������������������  외부의����������� ������������������  도움이����������� ������������������  필요하다면����������� ������������������  ����������� ������������������  ����������� ������������������  다른����������� ������������������  객체에게����������� ������������������  도움을����������� ������������������  요청합니다����������� ������������������  ����������� ������������������  

책임을����������� ������������������  담당할����������� ������������������  수����������� ������������������  있는����������� ������������������  적절한����������� ������������������  객체를����������� ������������������  선택합니다����������� ������������������  사건을����������� ������������������  수사한다����������� ������������������  

System

객체����������� ������������������  책임����������� ������������������  

Page 78: Roles, Responsibilities, Collaborations

Responsibility-Driven Design 애플리케이션의����������� ������������������  요구사항을����������� ������������������  파악합니다����������� ������������������  

애플리케이션의����������� ������������������  요구사항을����������� ������������������  시스템의����������� ������������������  책임으로����������� ������������������  변환합니다����������� ������������������  

시스템의����������� ������������������  책임을����������� ������������������  객체의����������� ������������������  책임으로����������� ������������������  변환합니다����������� ������������������  

객체의����������� ������������������  책임����������� ������������������  일부를����������� ������������������  수행하기����������� ������������������  위해����������� ������������������  외부의����������� ������������������  도움이����������� ������������������  필요하다면����������� ������������������  ����������� ������������������  ����������� ������������������  다른����������� ������������������  객체에게����������� ������������������  도움을����������� ������������������  요청합니다����������� ������������������  ����������� ������������������  

책임을����������� ������������������  담당할����������� ������������������  수����������� ������������������  있는����������� ������������������  적절한����������� ������������������  객체를����������� ������������������  선택합니다����������� ������������������  

요청을����������� ������������������  객체의����������� ������������������  책임으로����������� ������������������  변환합니다����������� ������������������  

사건을����������� ������������������  수사한다����������� ������������������  

System

객체����������� ������������������  책임����������� ������������������  

객체����������� ������������������  책임����������� ������������������  

Page 79: Roles, Responsibilities, Collaborations

Responsibility-Driven Design 애플리케이션의����������� ������������������  요구사항을����������� ������������������  파악합니다����������� ������������������  

애플리케이션의����������� ������������������  요구사항을����������� ������������������  시스템의����������� ������������������  책임으로����������� ������������������  변환합니다����������� ������������������  

시스템의����������� ������������������  책임을����������� ������������������  객체의����������� ������������������  책임으로����������� ������������������  변환합니다����������� ������������������  

객체의����������� ������������������  책임����������� ������������������  일부를����������� ������������������  수행하기����������� ������������������  위해����������� ������������������  외부의����������� ������������������  도움이����������� ������������������  필요하다면����������� ������������������  ����������� ������������������  ����������� ������������������  다른����������� ������������������  객체에게����������� ������������������  도움을����������� ������������������  요청합니다����������� ������������������  ����������� ������������������  

책임을����������� ������������������  담당할����������� ������������������  수����������� ������������������  있는����������� ������������������  적절한����������� ������������������  객체를����������� ������������������  선택합니다����������� ������������������  

요청을����������� ������������������  객체의����������� ������������������  책임으로����������� ������������������  변환합니다����������� ������������������  

책임을����������� ������������������  담당할����������� ������������������  수����������� ������������������  있는����������� ������������������  적절한����������� ������������������  객체를����������� ������������������  선택합니다����������� ������������������  

사건을����������� ������������������  수사한다����������� ������������������  

System

객체����������� ������������������  책임����������� ������������������  

객체����������� ������������������  책임����������� ������������������  

Page 80: Roles, Responsibilities, Collaborations

Part����������� ������������������  -����������� ������������������  3����������� ������������������  

영화����������� ������������������  예매����������� ������������������  시스템����������� ������������������  

Page 81: Roles, Responsibilities, Collaborations

온라인����������� ������������������  영화����������� ������������������  예매����������� ������������������  시스템����������� ������������������  

Page 82: Roles, Responsibilities, Collaborations

Domain����������� ������������������  Concept����������� ������������������  -����������� ������������������  영화����������� ������������������  

Movie

Page 83: Roles, Responsibilities, Collaborations

Domain����������� ������������������  Concept����������� ������������������  -����������� ������������������  상영����������� ������������������  

2010-10-20 09:30 조조 Showing

2010-10-21 20:30 5회

2010-12-01 14:20 4회

Page 84: Roles, Responsibilities, Collaborations

Domain����������� ������������������  Concept����������� ������������������  ­–����������� ������������������  할인����������� ������������������  정책����������� ������������������  

Discount Amount Discount

Percent Discount

\8,000 - \800 = \7,200

\8,000 – (\8,000 * 0.1) = \7,200

Page 85: Roles, Responsibilities, Collaborations

Domain����������� ������������������  Concept����������� ������������������  ­–����������� ������������������  할인����������� ������������������  규칙����������� ������������������  

Rule Sequence Rule

Time Rule

조조����������� ������������������  상영인����������� ������������������  경우

월요일����������� ������������������  10:00 ~ 12:00 상영인����������� ������������������  경우

목요일����������� ������������������  18:00 ~ 21:00 상영인����������� ������������������  경우

10회����������� ������������������  상영인����������� ������������������  경우

Page 86: Roles, Responsibilities, Collaborations

Domain����������� ������������������  Concept����������� ������������������  ­–할인����������� ������������������  정책����������� ������������������  +����������� ������������������  할인����������� ������������������  규칙����������� ������������������  

Movie Discount Rule

1����������� ������������������   0..1����������� ������������������   1����������� ������������������   1..*����������� ������������������  

Page 87: Roles, Responsibilities, Collaborations

10회����������� ������������������  상영인����������� ������������������  경우

Domain����������� ������������������  Concept����������� ������������������  ­–할인����������� ������������������  정책����������� ������������������  +����������� ������������������  할인����������� ������������������  규칙����������� ������������������  

Movie Discount Rule

1����������� ������������������   0..1����������� ������������������   1����������� ������������������   1..*����������� ������������������  

이끼 8000원

Amount DC 800원

조조����������� ������������������  상영인����������� ������������������  경우

월요일����������� ������������������  10:00 ~ 12:00 상영인����������� ������������������  경우

목요일����������� ������������������  18:00 ~ 21:00 상영인����������� ������������������  경우

Page 88: Roles, Responsibilities, Collaborations

Domain����������� ������������������  Concept����������� ������������������  ­–할인����������� ������������������  적용����������� ������������������  

상영정보 2010년 12월 23일

목요일 18:00 ~ 20:00(7회차)

10회����������� ������������������  상영인����������� ������������������  경우 이끼  

8000원 Amount  DC  

800원

조조����������� ������������������  상영인����������� ������������������  경우

월요일����������� ������������������  10:00 ~ 12:00 상영인����������� ������������������  경우

목요일����������� ������������������  18:00 ~ 21:00 상영인����������� ������������������  경우

Page 89: Roles, Responsibilities, Collaborations

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

Page 90: Roles, Responsibilities, Collaborations

Domain����������� ������������������  Concept����������� ������������������  ­–예매����������� ������������������  

Reservation 이끼

2010년����������� ������������������  12월����������� ������������������  23일����������� ������������������  (목) 7회����������� ������������������  6:00(오후) – 8:00(오후)

2명

16,000원

14,400원

제����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  목����������� ������������������  

상영����������� ������������������  정보����������� ������������������  

인����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  원����������� ������������������  

정����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  가����������� ������������������  

결재����������� ������������������  금액����������� ������������������  

Page 91: Roles, Responsibilities, Collaborations

Movie Discount Rule

1����������� ������������������   0..1����������� ������������������   1����������� ������������������   1..*����������� ������������������  

1����������� ������������������  

0..*����������� ������������������  

1����������� ������������������   0..*����������� ������������������  

Showing Reservation

도메인(Domain)����������� ������������������  개념����������� ������������������  또는����������� ������������������  후보����������� ������������������  객체����������� ������������������  

Domain

Page 92: Roles, Responsibilities, Collaborations

Showing 상영����������� ������������������  정보를����������� ������������������  알고����������� ������������������  있다����������� ������������������  

예매����������� ������������������  정보를����������� ������������������  생성한다����������� ������������������  

Movie

CRC����������� ������������������  Card����������� ������������������  

Candidate(Role����������� ������������������  or����������� ������������������  Object)  

Responsibility  Collaborator  

책임-주도����������� ������������������  설계����������� ������������������  도구����������� ������������������  

Page 93: Roles, Responsibilities, Collaborations

영화를����������� ������������������  예매한다����������� ������������������  

System

애플리케이션����������� ������������������  요구사항에서부터����������� ������������������  출발����������� ������������������  

Page 94: Roles, Responsibilities, Collaborations

영화를����������� ������������������  예매한다����������� ������������������  

System

책임을����������� ������������������  할당할����������� ������������������  적절한����������� ������������������  객체를����������� ������������������  찾아����������� ������������������  보겠습니다����������� ������������������  

Page 95: Roles, Responsibilities, Collaborations

예매����������� ������������������  생성����������� ������������������  책임����������� ������������������  할당����������� ������������������  

예매����������� ������������������  생성에����������� ������������������  필요한����������� ������������������  정보의����������� ������������������  전문가에게����������� ������������������  할당Creator����������� ������������������  

Showing 상영����������� ������������������  정보를����������� ������������������  알고����������� ������������������  있다����������� ������������������  

예매����������� ������������������  정보를����������� ������������������  생성한다����������� ������������������  

Page 96: Roles, Responsibilities, Collaborations

가격����������� ������������������  계산����������� ������������������  책임����������� ������������������  할당����������� ������������������  

영화����������� ������������������  가격����������� ������������������  정보를����������� ������������������  알고����������� ������������������  있는����������� ������������������  전문가에게����������� ������������������  할당Information����������� ������������������  Expert����������� ������������������  

Movie 영화����������� ������������������  정보를����������� ������������������  알고����������� ������������������  있다����������� ������������������  

가격을����������� ������������������  계산한다����������� ������������������  

Showing 상영����������� ������������������  정보를����������� ������������������  알고����������� ������������������  있다����������� ������������������  

예매����������� ������������������  정보를����������� ������������������  생성한다����������� ������������������  

Movie Customer

Page 97: Roles, Responsibilities, Collaborations

할인율����������� ������������������  계산����������� ������������������  책임����������� ������������������  할당����������� ������������������  

할인율을����������� ������������������  적용할����������� ������������������  STRATEGY����������� ������������������  객체����������� ������������������  추가����������� ������������������  

Movie 영화����������� ������������������  정보를����������� ������������������  알고����������� ������������������  있다����������� ������������������  

가격을����������� ������������������  계산한다����������� ������������������  

Showing 상영����������� ������������������  정보를����������� ������������������  알고����������� ������������������  있다����������� ������������������  

예매����������� ������������������  정보를����������� ������������������  생성한다����������� ������������������  

Movie Customer

Discount Strategy

Discount Strategy

할인율����������� ������������������  정책을����������� ������������������  알고����������� ������������������  있다����������� ������������������  

할인된����������� ������������������  가격을����������� ������������������  계산한다����������� ������������������  

Page 98: Roles, Responsibilities, Collaborations

할인����������� ������������������  여부를����������� ������������������  판단할����������� ������������������  책임����������� ������������������  할당����������� ������������������  

할인����������� ������������������  정책을����������� ������������������  판단하기����������� ������������������  위한����������� ������������������  SPECIFICATION����������� ������������������  객체����������� ������������������  추가����������� ������������������  

Movie 영화����������� ������������������  정보를����������� ������������������  알고����������� ������������������  있다����������� ������������������  

가격을����������� ������������������  계산한다����������� ������������������  

Showing 상영����������� ������������������  정보를����������� ������������������  알고����������� ������������������  있다����������� ������������������  

예매����������� ������������������  정보를����������� ������������������  생성한다����������� ������������������  

Movie Customer

Discount Strategy

할인율����������� ������������������  정책을����������� ������������������  알고����������� ������������������  있다����������� ������������������  

할인된����������� ������������������  가격을����������� ������������������  계산한다����������� ������������������  

Discount Strategy

Rule 할인����������� ������������������  규칙을����������� ������������������  알고����������� ������������������  있다����������� ������������������  

할인����������� ������������������  여부를����������� ������������������  판단한다����������� ������������������  

Rule

Page 99: Roles, Responsibilities, Collaborations

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); } }

책임����������� ������������������  기반����������� ������������������  구현����������� ������������������  

Page 100: Roles, Responsibilities, Collaborations

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()); } }

책임����������� ������������������  기반����������� ������������������  구현����������� ������������������  

Page 101: Roles, Responsibilities, Collaborations

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)); } }

Page 102: Roles, Responsibilities, Collaborations

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

Page 103: Roles, Responsibilities, Collaborations

Movie Discount Rule

1����������� ������������������   0..1����������� ������������������   1����������� ������������������   1..*����������� ������������������  

1����������� ������������������  

0..*����������� ������������������  

1����������� ������������������   0..*����������� ������������������  

Showing Reservation

Domain Concepts

Page 104: Roles, Responsibilities, Collaborations

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

Page 105: Roles, Responsibilities, Collaborations

:Showing reserve()����������� ������������������  

:Reservation

<<create>>����������� ������������������  

calculateFee()����������� ������������������  

:Movie

calculateFee()����������� ������������������  

:Discount Strategy :Rule

calculateFee()����������� ������������������   isSatisfied()����������� ������������������  

Roles, Responsibilities, Collaborations

Page 106: Roles, Responsibilities, Collaborations

Part����������� ������������������  -����������� ������������������  4����������� ������������������  

책임-주도����������� ������������������  설계와����������� ������������������  ����������� ������������������  객체지향����������� ������������������  원리����������� ������������������  

Page 107: Roles, Responsibilities, Collaborations

객체의����������� ������������������  정의����������� ������������������  

책임을����������� ������������������  수행하는데����������� ������������������  필요한����������� ������������������  정보를����������� ������������������  알고����������� ������������������  있는����������� ������������������  ����������� ������������������  정보����������� ������������������  전문가에게����������� ������������������  책임을����������� ������������������  할당하라����������� ������������������  ����������� ������������������  

정보����������� ������������������  전문가(Information����������� ������������������  Expert)����������� ������������������  

+����������� ������������������  상태(State)����������� ������������������  

행위(Behavior)����������� ������������������  

객체(Object)����������� ������������������  =����������� ������������������  

Page 108: Roles, Responsibilities, Collaborations

+����������� ������������������  상태(State)����������� ������������������  

행위(Behavior)����������� ������������������  

객체(Object)����������� ������������������  =����������� ������������������  

객체의����������� ������������������  정의����������� ������������������  

Encapsulation (캡슐화)����������� ������������������  

Cohesion (응집도)����������� ������������������  

Page 109: Roles, Responsibilities, Collaborations

사건을����������� ������������������  수사한다����������� ������������������  

System

방법����������� ������������������  

속성����������� ������������������  

범인의����������� ������������������  증거를����������� ������������������  ����������� ������������������  

수집한다����������� ������������������  방법����������� ������������������  

Collaboration����������� ������������������  

협력����������� ������������������  

Page 110: Roles, Responsibilities, Collaborations

협력����������� ������������������  

Coupling (결합도)����������� ������������������  

Dependency (의존성)����������� ������������������  

Page 111: Roles, Responsibilities, Collaborations

Cohesion (응집도)����������� ������������������  

Coupling (결합도)����������� ������������������  

설계의����������� ������������������  목적����������� ������������������  

Single-Responsibility Principle (단일-책임����������� ������������������  원칙)����������� ������������������  

Dependency-Inversion Principle (제어-역전����������� ������������������  원칙)����������� ������������������  

Page 112: Roles, Responsibilities, Collaborations

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

Page 113: Roles, Responsibilities, Collaborations

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 (다형성)����������� ������������������  

Page 114: Roles, Responsibilities, Collaborations

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 (상속)����������� ������������������  

구현����������� ������������������  메커니즘����������� ������������������  

Page 115: Roles, Responsibilities, Collaborations

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()����������� ������������������  

Page 116: Roles, Responsibilities, Collaborations

AmountStrategy PercentStrategy NonDiscountStrategy

DiscountStrategy

새로운����������� ������������������  할인����������� ������������������  정책����������� ������������������  추가����������� ������������������  

MileageBased DiscountStrategy

Open-Closed Principle (개방-폐쇄����������� ������������������  원칙)����������� ������������������  

클라이언트����������� ������������������  관점에서����������� ������������������  ����������� ������������������  동일한����������� ������������������  책임,����������� ������������������  동일한����������� ������������������  역할����������� ������������������  

Movie

새로운����������� ������������������  정책을����������� ������������������  추가하더라도����������� ������������������  기존����������� ������������������  코드를����������� ������������������  수정할����������� ������������������  필요����������� ������������������  없음����������� ������������������  

:Discount Strategy

:Movie :Discount Strategy

calculateFee()����������� ������������������  

Page 117: Roles, Responsibilities, Collaborations

117  

Thank you