第七章面向对象设计GRASP-部分GRASP模式主要内容模式名称问题:给对象分配职责的基本原则是什么?信息专家答案:把职责分配给具有完成该职责所需要的信息的那个类问题:让谁来创建A的实例?答案:以下条件之一为真的情况,类A的实例的创建职责就分配给类B。(1)B包含A创建者(2)B组成或聚集A(3)B记录A(4)B频繁使用A(5)B有A的初始化数据如果有一个以上的选择,创建职责通常由聚集或包含A的类承担。问题:由谁去负责接收来自UI层的事件消息并工作委派给其它的对象答案:可以分配给下列类之一控制器(1)代表整个“系统”的对象:(2)代表用例场景中所有系统事件的接收者或处理者对于同一场景中的所有系统事件应使用相同的控制器类。也可以将会话看作是与参与者进行交谈的实例。但“窗口”、“视图”或“文档”类一般不作为控制器类
第七章 面向对象设计 GRASP-部分GRASP模式 模式名称 主 要 内 容 信息专家 问题:给对象分配职责的基本原则是什么? 答案:把职责分配给具有完成该职责所需要的信息的那个类。 创建者 问题:让谁来创建A的实例? 答案:以下条件之一为真的情况,类A的实例的创建职责就分配给类B。 ⑴ B包含A ⑵ B组成或聚集A ⑶ B记录A ⑷ B频繁使用A ⑸ B有A的初始化数据 如果有一个以上的选择,创建职责通常由聚集或包含A的类承担。 控制器 问题:由谁去负责接收来自UI层的事件消息并工作委派给其它的对象? 答案:可以分配给下列类之一: ⑴ 代表整个“系统”的对象; ⑵ 代表用例场景中所有系统事件的接收者或处理者。 对于同一场景中的所有系统事件应使用相同的控制器类。也可以将会话看作是与参与者进行交谈的实例。但“窗口”、“视图”或“文档” 类一般不作为控制器类
第七章面向对象设计软件体系结构设计软件体系结构是对子系统、系统组件以及它们之间相互关系的描述C/S结构B/S三层结构表现层应用层1数据
第七章 面向对象设计 软件体系结构设计 ◼ 软件体系结构是对子系统、系统组件以 及它们之间相互关系的描述 ◼ C/S结构 ◼ B/S 三层结构 ◼ 表现层 ◼ 应用层 ◼ 数据
第七章面向对象设计图书借阅管理系统”体系结构表示层应用层数据层Web浏览器读者查询借阅记录,.....Web服务器应用服务器数据库服务器借书,还书,1Web浏览器图书管理员
第七章 面向对象设计 “图书借阅管理系统”体系结构
第七章面向对象设计7.3 问题域设计实现角度对问题域模型作一些补充或修改。主要包括补充类、修改类的属性与操作。调整类之间的关系问题域设计的起点主要是在分析阶段所获得的领域模型、用例模型以及相关的业务规则说明问题域设计过程主要可以通过两种途径来完成即静态建模(主要是类图和动态建模。动态建模通过动态视图展示包括系统的行为视图(状态图)与交互视图顺序图和通信图
第七章 面向对象设计 7.3 问题域设计 ◼ 实现角度对问题域模型作一些补充或修改,主 要包括补充类、修改类的属性与操作,调整类 之间的关系 ◼ 问题域设计的起点主要是在分析阶段所获得的 领域模型、用例模型以及相关的业务规则说明 ◼ 问题域设计过程主要可以通过两种途径来完成, 即静态建模(主要是类图)和动态建模 ,动态 建模通过动态视图展示,包括系统的行为视图 (状态图 )与交互视图(顺序图和通信图 )
第七章面向对象设计问题域设计设计步骤细化并完善分析过程中所获得的领域模型从用例模型中寻找职责。职贵代表需要解决的问题或需要完成的功能将得到的职责分配给领域模型中相应的类。完成初步的职责分配参照系统的需求与业务规则验证域模型的正确性,如发现错误,则修改域模型直至正确为止对系统中的复杂功能或业务流程进行动态建模,获取系统的动态模型在动态建模过程中可能对复杂的职贵进行分解,也可能发现新的职责,找出新的职责并重新进行职责分配反复进行步骤(3)、(4)、(5),直至域模型正确为止
第七章 面向对象设计 问题域设计 ◼ 设计步骤 ◼ 细化并完善分析过程中所获得的领域模型 ◼ 从用例模型中寻找职责,职责代表需要解决的问题或需要 完成的功能 ◼ 将得到的职责分配给领域模型 中相应的类,完成初步的 职责分配 ◼ 参照系统的需求与业务规则验证域模型的正确性,如发现 错误,则修改域模型直至正确为止 ◼ 对系统中的复杂功能或业务流程进行动态建模,获取系统 的动态模型 ◼ 在动态建模过程中可能对复杂的职责进行分解,也可能发 现新的职责,找出新的职责并重新进行职责分配 ◼ 反复进行步骤⑶、⑷、⑸,直至域模型正确为止