《面向对象分析与设计-GRASP原则PPT学习课件.ppt》由会员分享,可在线阅读,更多相关《面向对象分析与设计-GRASP原则PPT学习课件.ppt(27页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、面向对象分析与设计面向对象分析与设计GRASP设计原则1什么是设计类?v设计类是已经完成了规格说明并且达到能够被实现程度的类。v设计类的来源通过分析类的精化得到的问题域,这里的精化包括添加实现细节解域它是实用类库和诸如TIME、DATE、STRING等可复用组件的领域2好的设计与差的设计v一个面向对象的系统是由多个对象组成的系统,这些对象能够向其它对象发送消息来完成操作v差的设计选择会导致系统和系统的构件比较脆弱和难以维护、理解、重用和扩展。v要熟练地实现一个系统,在设计这个系统时运用面向对象的主要设计原则是实现该系统的基础3设计应完成的工作v在设计中,必须准确地说明类是如何履行它们的职责。必
2、须完成以下事情:完整的属性集合,包括详细说明的名称、类型、可视性和一些默认值(可选的)将分析类指定的操作转化成一个或多个方法的完整集合。4GRASP模式vGRASP(General Responsibility Assignment Software Pattern)通用职责分配软件模式描述了将职责分配给对象的基本原则v五种基本GRASP模式专家(EXPERT)创建者(CREATOR)高内聚(HIGH COHESION)低耦合(LOW COUPLING)控制者(CONTROLLER)5GRASP模式-专家v问题:在面向对象的设计中什么是最基本的职责分配原则?v解决方案:将职责分配给拥有履行一个
3、职责所必需信息的类即信息专家。(也就是将职责分配给一个类,这个类必须拥有履行这个职责所需要的信息。)6GRASP模式-专家(举例)7GRASP模式-专家(举例)8GRASP模式-专家(续)v信息专家模式核心思想:把职责分配给具有完成某项职责所需信息的个体.v信息专家模式在职责分配中使用得非常广泛,它是对象设计中经常使用的基本指导原则.v职责的履行需要信息,而信息往往分布在不同的对象中.这就意味着许多“部分”的信息专家有时需要协作才能来完成一个任务9GRASP模式-专家(优点)v因为对象使用自己的信息来实现服务,所以信息的封装性得以维持.低耦合/健壮性/易维护性.v行为分散在不同的类中,这些类各
4、自具有完成行为所需要的信息.这些“轻量级”的类易于理解和维护.10GRASP模式-创建者v问题:谁应该负责产生类的实例 v解决方案:类B聚合类A的对象。类B包含类A的对象。类B记录类A对象的实例。类B密切使用类A的对象。类B初始化数据并在创建类A的实例时传递给类A(类B是创建类A实例的一个专家)。11GRASP模式-创建者(举例)12GRASP模式-创建者(续)v创建者模式指导怎样分配“与创建对象”相关的职责。创建者模式的基本目的是找到一个在任何情况下都与被创建对象相关联的创建者,选择这样的类作为创建者能支持低耦合。v集合聚集了部分,容器包含了内容,记录器记录了被记录的数据,这些类之间的关系在
5、类图中非常普遍.Creator Pattern建议:封装的容器类和记录器类是创建“自己包含或者记录的元素”的很好候选者.13GRASP模式-创建者(优点)v支持低耦合,这种设计意味着具有更低的维护依赖性和更高的重用机会.创建者模式之所以可能不增加耦合性是由于被创建类对于创建类而言已经可见了,正是因为已存在的关联使得它成为创建者.14GRASP模式-低耦合模式v问题:如何支持低依赖性以及增加重用性?v解决方案:分配职责时使(不必要的)耦合保持为最低。15GRASP模式-低耦合模式(续)v耦合:是一个类与其它类关联、知道其它类的信息或者依赖其它类的强弱程度的度量v一个具有高耦合度的类有如下问题:其
6、它类的改变会迫使这个类改变其自身的局部定义难以孤立的理解它难以重用16GRASP模式-低耦合模式(举例)v考虑在销售点终端系统中,假设要创建一个Payment的实例并使它和Sale之间的实例关联,哪个类应当承担职责呢?在真实世界中POST记录了一个Payment的实例,根据创建者模式,POST类应该是创建Payment的候选类。17GRASP模式-低耦合模式(举例)v方案一:一个Register发送一个addPayment消息给Sale实例,并将新生成的Payment实例作为一个参数传递给Sale。Register需要知道Payment类的消息,两者被耦合。18GRASP模式-低耦合模式(举例
7、)v方案2:一个Sale实例最终要和一个Payment实例耦合起来。因此Payment由Sale创建,没有增加耦合度,所以整体耦合度低。19GRASP模式-低耦合模式(总结)v低耦合是一个设计目标,也是一个评估原则;v低耦合模式鼓励职责分配时不增加耦合性.从而避免了高耦合可能产生的不良后果;v低耦合模式的极端情况就是类之间没有耦合.v优点:不受其它组件改变的影响;便于单独理解;重用方便.20GRASP模式-高内聚模式v问题:如何让复杂性可管理?v解决方案:分配职责时使内聚保持为最高。21GRASP模式-高内聚模式(续)v内聚:是一个类中的各个职责之间相关程度和集中程度的度量v 一个低内聚的类存
8、在如下问题:难以理解难以重用难以维护容易受到外界所发生的细微变化的影响22GRASP模式-高内聚模式(续)v不同功能聚合度的场景聚合度非常低:一个类独自负责许多不同功能领域内的责任低聚合:一个类只负责一个功能领域内的一个职责高聚合度:一个类只在一个功能领域内承担了中等工作量的职责,并且与其他类协作来履行职责中等偶合度:一个类具有轻量级的和单独的职责,涉及到几个不同的领域都与这个类逻辑相关,但职责之间不相关23GRASP模式-高内聚模式(优点)v设计的清晰性和易于理解性得到提高。维护和扩展得到简化;常常支持低耦合;重用性提高。24GRASP模式-控制器模式 v问题:谁处理一个系统事件?v解决方案:n将处理系统事件消息的职责分派给下列事物的类:代表整个系统、设备或子系统的类代表整个企业或组织的类代表真实世界中参与职责(角色控制者)的主动对象类代表一个用例中所有事件的人工处理类 25GRASP模式-控制器模式(续)v一个控制器是负责接收或者处理系统事件的非用户接口对象。一个控制器定义系统操作的方法。26GRASP模式-控制器模式(举例)27