- 1、本文档共56页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
GRASP Patterns Expert 专家 Creator 创建者 Controller 控制者 Low Coupling 低耦合 High Cohesion 高聚合 Polymorphism 多态 Pure Fabrication 纯虚构 Indirection 中介者 Don’t Talk to Strangers 不要和陌生人说话 最基本的对象化设计原理 信息专家(Expert) 职责分配的最基本原则 将职责赋予拥有和掌握信息的对象 “谁有信息,谁做事.” 例如,哪一个对象来计算一笔销售的总额? 做这件事需要什么信息? 哪一个对象有这些信息的主要部分? 信息专家 概念模型 将职责分配给Sale Sale需要SalesLineItem求子项合计 信息专家 SalesLineItem需要价格 创建者(Creator) 谁(对象)来创建对象X? 选择对象C, 它具有: C 包含或者聚集了 X C 密切使用了 X C 初始化了X的数据 也可能同时拥有很多上述特征 创建者 控制者模式(Controller) 把接收处理系统事件的职责分配给一个类, 这个类:有时候叫外观控制器、会话控制器、处理器。 下例: 什么对象接收 来自用户界面的请求呢? 控制者 表现层和领域层的耦合 表现层直接作为控制者 低耦合(Low Coupling) 赋予职责,使耦合降为最低. 低耦合意味着什么? 变化的影响更小 单独的理解 重用性 高聚合(High Cohesion) 赋予职责,使聚合保持最高 高聚合意味着什么? 更好的可理解性 更好的重用性 更好的可维护性 CH 18 用GRASP实现用况 从系统的顺序图开始,设计实现每一个系统操作的交互过程 顺序图的表示方法 对象设计:makeNewSale 寻找控制者 Regester并不能完成该操作,它需要与其他的类协同工作 makeNewSale enterltem endSale 由于需求中表示在结束一笔销售后,要显示总额。显示的操作是在表示层中的,但领域层应当提供计算总额的职责 ,应当考虑一个getTotal getTotal算法注释和约束的表示 makePayment 销售的记录: 作为付款之后的操作 由于Store类对历史销售更关心,可以将这个职责分配给Store makePayment(完整的) 计算余额:付款后,需要显示余额。显示是在表现层进行的,但领域层需要提供计算余额。 对象设计:StartUp UI层与领域层的连接 UI层与领域层的连接 CH 14 对象的设计 如何设计系统 编码 绘图、而后编码 只绘图不编码 敏捷模型和轻量级UML图形 CASE工具 对象的思考 CH15 UML的交互图的表示法 交互图是进行设计的主要描述语言 描述对象之间如何通过消息进行交互 从交互图的设计中表现出对象的职责(功能)、操作的顺序(流程) 设计过程就是对交互的优化过程 UML的交互图: 协作图 顺序图 协作图实例 以图和网格的形式表示对象的交互 makePayment的协作图: 顺序图实例 以栅栏的形式表示对象的交互 makePayment的顺序图: 设计交互图的过程实际上是OOD中具有创造性的实践过程 UML图的表示 类和实例的表示 协作图的表示 链接 消息 发送到自己的消息 协作图的表示 创建 迭代 协作图的表示 多对象遍历迭代 消息编号 协作图的表示 条件消息 互斥条件消息 顺序图的表示 创建 销毁 顺序图的表示 条件消息 互斥条件 顺序图的表示 表示迭代 CH16 UML类图 类图 静态对象模型 类的概要 关联 类图的表示 类图的表达形式 设计类图 领域模型中的概念类 设计模型中的设计类 不同的语境下的表示方式: 方法,角色,导航 类的属性和关联 类图和交互图的关系 建立设计类图(1) 寻找软件类并画出它们 从交互图中寻找软件类 在概念模型中寻找已经定义好的属性 建立设计类图(2) 从顺序图中找出类的方法 最后找出的带有方法的类: 建立设计类图(3) 关于方法的考虑: UML中的Create: Create表示一个实例的创建 在具体的编程语言中并没有Create,对应的是其是实例创建或构造函数。 在设计类图中就省略表示与实例创建有关的方法或构造函数。 访问方法: 对私有属性的访问,通常使用访问方法。 public class A { private int quantity; public int get_quantity() { return quantity; }
文档评论(0)