第17章GRASP基于职责设计对象课件

上传人:沈*** 文档编号:241626646 上传时间:2024-07-11 格式:PPT 页数:35 大小:328.50KB
返回 下载 相关 举报
第17章GRASP基于职责设计对象课件_第1页
第1页 / 共35页
第17章GRASP基于职责设计对象课件_第2页
第2页 / 共35页
第17章GRASP基于职责设计对象课件_第3页
第3页 / 共35页
点击查看更多>>
资源描述
第第17章章 GRASP:基于职责设计对象基于职责设计对象暨南大学计算机系黄战目标目标n n学习使用面向对象设计的5个GRASP原则或模式简介简介n n决定方法归属于哪个对象和对象之间如何交互,其意义重大,应谨慎从事。n n掌握OOD可以通过在实例中学习和在设计中对模式的命名UML与设计原则与设计原则n n由于UML只是一种标准、可视化建模语言,了解它的细节并不能教会你如何用对象思想来思考n n最关键的软件开发工具是受过良好设计原则训练的思维,而不是UML或任何其他技术对象设计对象设计n n以迭代方法的设计示例以迭代方法的设计示例 已经完成了哪些活动?已经完成了哪些活动?以前的活动和制品以前的活动和制品 事物之间具有什么样的关系?事物之间具有什么样的关系?以前的制品以前的制品对对OOOO设计的影响设计的影响 需要完成多少设计建模工作,如何完成?需要完成多少设计建模工作,如何完成?有哪些输出?有哪些输出?n n 分析制品与对象设计之间有什么关系?分析制品与对象设计之间有什么关系?对象设计的输入是什么对象设计的输入是什么n n场景n nUML包图n n补充规格说明n n词汇表n n领域模型对象设计中的活动对象设计中的活动n n给定一个或多个输入,开发者有以下3个选择:1 1:立即开发编码(理想的情况是用:立即开发编码(理想的情况是用测试优测试优测试优测试优先开发先开发先开发先开发方式)方式)2 2:开发为对象设计进行一些:开发为对象设计进行一些UMLUML建模建模3 3:利用其他建模技术,如:利用其他建模技术,如CRC cards.CRC cards.对象设计中的活动对象设计中的活动n n在UML案例中,真正要关注的并不是UML,而是可视化建模,即使用一种语言,这种语言比纯文本有更强的可视化功能。n n方法是使用基于职责驱动设计,考虑怎样给协作中的对象分配职责有哪些输出?有哪些输出?n n考虑UML交互图和类图n n例如:尤其对于对象设计而言,我们期望在开尤其对于对象设计而言,我们期望在开始编码之前针对设计中的难点创建始编码之前针对设计中的难点创建UMLUML交交互图、类图和包图互图、类图和包图 UI UI的草图和原型的草图和原型 数据库模型数据库模型 报表的草图和原型报表的草图和原型职责和职责驱动设计职责和职责驱动设计n n思考软件对象设计以及大型构件的流行方式是,考虑其职责、角色和协作。这些被称为职责驱动设计的大型方法的一部分。n n对象职责 其所作所为的抽象职责职责n n类元的契约或义务类元的契约或义务n n就对象的角色而言,职责与对象的义务和行为相关就对象的角色而言,职责与对象的义务和行为相关n n职责分为两种类型:职责分为两种类型:行为:行为:自身执行一些行为,如创建对象或计算自身执行一些行为,如创建对象或计算 初始化其他对象中的动作初始化其他对象中的动作 控制和协调其他对象中的活动控制和协调其他对象中的活动 认知:认知:对私有封装数据的认知对私有封装数据的认知 对相关对象的认知对相关对象的认知 对其能够导出或计算的事物的认知对其能够导出或计算的事物的认知n n例如:例如:SaleSale负责创建负责创建SaleLineItems(SaleLineItems(行为职责行为职责)Sale Sale负责认知其总额(认知职责)负责认知其总额(认知职责)职责方法职责方法n n职责的粒度会影响到类和方法的转换n n职责与方法并非同一事物,职责是一种抽象,而方法实现了职责职责协作职责协作n nRDD也包括了协作的思想n n职责借助于方法来实现,该方法既可以单独动作,也可以于其他方法和对象协作职责协作职责协作n nSale类可以定义一个或多个来获取其总额,比如命名为getTotal方法。为了完成该职责,Sale可能与其他对象协作,例如每个SaleLineItem对象发送getSubtotal消息以获取其小计金额RDDn nRDD是思考OO软件设计的一般性隐喻n nRDD使我们把OO设计看作是有职责对象进行协作的共同体n nGRASP对一些基本的职责分配原则进行了命名和描述,因此掌握这些原则有助于支持RDDGRASPn nGRASP=使用职责进行OO设计的学习工具n nGRASP原则或模式是一种学习工具,它能帮助你理解基本对象设计,并且以一种系统的、合理的、可以解释的方式来运用设计推理n n对这种设计原则进行理解和使用的基础是分配职责的模式GRASP-目标目标n n以GRASP作为工具,帮助掌握OOD的基本知识并理解对象设计中的职责分配职责、职责、UML、GRASPn n在UML中,绘制交互图是考虑这些职责(实现为方法)的时机n nGRASP中的基本原则可以指导分配职责,当绘制UML交互图以及编写代码时,就可以运用GARSP原则了。什么是模式?什么是模式?n n模式:有经验的有经验的OOOO开发者建立了既有通用原开发者建立了既有通用原则又有惯用方案的指令系统来指导他们编则又有惯用方案的指令系统来指导他们编制软件制软件 在在OOOO设计中,模式是对问题和解决方设计中,模式是对问题和解决方案的已命名描述,它可以用于新的语境案的已命名描述,它可以用于新的语境 理想情况下,模式为在变化环境中如何理想情况下,模式为在变化环境中如何运用和权衡其解决方案给出建议运用和权衡其解决方案给出建议好的模式好的模式简单地讲,好的模式是成对的问题/解决方案,并且具有广为人知的名称,它能用于新的语境中,同时对新情况下的应用、权衡、实现、变化等给出了建议GoFGang of Four(GoF)设计模式Gamma,Helm,Johnson,and Vlissides23个OO设计模式GRASPn n定义了9个基本OO设计原则或基本设计构件n n某人的模式是其他人的原始构造块OO设计背景设计背景1 1:迭代过程背景有哪些优先制品?它们与:迭代过程背景有哪些优先制品?它们与OOOO设计模设计模型有什么关系?我们应当花费多少时间进行设计建模型有什么关系?我们应当花费多少时间进行设计建模?2 2:作为对象设计隐喻的:作为对象设计隐喻的RDDRDD:有职责对象协作的共同:有职责对象协作的共同体体3 3:作为:作为OOOO设计思想命名和解释方式的模式:分配职责设计思想命名和解释方式的模式:分配职责的基本模式是的基本模式是GRASPGRASP,对于更为高级的设计思想则应,对于更为高级的设计思想则应用用GoFGoF模式。模式可在建模期间和编码期间应用模式。模式可在建模期间和编码期间应用4 4:UMLUML用于用于OOOO设计的可视建模,在此期间,设计的可视建模,在此期间,GRASPGRASP和和GoFGoF模式都能使用模式都能使用GRASP的示例的示例n n17.8使用使用GRASP进行对象设计进行对象设计n n共有9个GRASP模式,本案例只应用一下几个:创建者创建者 信息专家信息专家 低耦和低耦和 控制器控制器 高内聚高内聚创建者创建者n n问题:谁有责任来创建类的实例?创建者创建者n n解决方案:B是A实例的创建者 如果以下条件之一为真时(越多越好),将创建类A实例的职责分配给类B:B”B”包含包含”或组成聚集了或组成聚集了A A B B记录记录A A B B紧密地使用紧密地使用A A B B具有具有A A的初始化数据的初始化数据 信息专家信息专家n n问题:给对象分配职责的基本原则是什么?n n解决方案:把职责分配给具有完成该职责所需信息的那个类 低耦合低耦合n n问题:问题:怎样降低依赖性,减少变化带来的影响,提高重用怎样降低依赖性,减少变化带来的影响,提高重用性?性?n n耦合是对某元素之间的连接、感知和依赖程度的度量。耦合是对某元素之间的连接、感知和依赖程度的度量。具有低(或弱)耦合的元素不会包括类、子系统、系具有低(或弱)耦合的元素不会包括类、子系统、系统等统等n n具有高(或强)耦合的类依赖于许多其他的类,这样具有高(或强)耦合的类依赖于许多其他的类,这样的类或许不是我们所需要的。有些类会遇到以下问题:的类或许不是我们所需要的。有些类会遇到以下问题:由于相关类的变化而导致本体的被迫变化由于相关类的变化而导致本体的被迫变化 难以单独地理解难以单独地理解 由于使用高耦合类时需要它所依赖的类,因此很难重用由于使用高耦合类时需要它所依赖的类,因此很难重用低耦合低耦合n n解决方案:分配职责,使耦合性尽可能低。利用这分配职责,使耦合性尽可能低。利用这一原则来评估可选方案一原则来评估可选方案 在实践中,耦合程度不能脱离专家、高在实践中,耦合程度不能脱离专家、高内聚等其他原则孤立地考虑。不过,它的内聚等其他原则孤立地考虑。不过,它的确是改进设计所要考虑的因素之一确是改进设计所要考虑的因素之一控制器控制器n n问题:问题:在在UI UI 层之上首先接收和协调(控制)系统操作层之上首先接收和协调(控制)系统操作的第一个对象是什么?的第一个对象是什么?在在SSDSSD分析期间,要首先探讨系统操作。这些是分析期间,要首先探讨系统操作。这些是我们系统的主要输入事件。例如,当使用我们系统的主要输入事件。例如,当使用POSPOS终终端的收银员按下端的收银员按下“结束销售结束销售”按钮时,他就发起了按钮时,他就发起了表示表示“销售已经终止销售已经终止”的系统事件。类似地,当使的系统事件。类似地,当使用文字处理器的书写者按下用文字处理器的书写者按下“拼写检查拼写检查”按钮时,按钮时,他就发起了表示他就发起了表示“执行拼写检查执行拼写检查”的系统事件的系统事件n n控制器是控制器是UIUI层之上的第一个对象,它负责接层之上的第一个对象,它负责接收和处理系统操作消息收和处理系统操作消息控制器控制器n n解决方案:解决方案:把职责分配给能代表以下选择之一的类:把职责分配给能代表以下选择之一的类:代表整个代表整个“系统系统”、“根对象根对象”、运行软件的设备或主要子系统,、运行软件的设备或主要子系统,这些是外观控制器的所有变体。这些是外观控制器的所有变体。代表用例场景,在该场景中发生系统事件,通常命名为代表用例场景,在该场景中发生系统事件,通常命名为HandlerHandler、CoordinatorCoordinator或或SessionSession(用例或会话控制器)。(用例或会话控制器)。n n 对于同一用例场景的所有系统事件使用相同的控制器类对于同一用例场景的所有系统事件使用相同的控制器类n n通俗地说,会话是参与者进行交谈地实例。会话可以具有任意通俗地说,会话是参与者进行交谈地实例。会话可以具有任意长度,但通常按照用例来组织(用例会话)长度,但通常按照用例来组织(用例会话)n n正常情况下,控制器应当把需要完成地工作委派给其正常情况下,控制器应当把需要完成地工作委派给其他的对象。控制器只是协调或控制这些活动,本身并他的对象。控制器只是协调或控制这些活动,本身并不完成大量工作。不完成大量工作。高内聚高内聚n n问题:怎样保持对象是有重点的、可理解的、怎样保持对象是有重点的、可理解的、可管理的,并且能够支持低耦合?可管理的,并且能够支持低耦合?从对象设计的角度上说,内聚(或更为从对象设计的角度上说,内聚(或更为专业地说,是功能内聚)是对元素职责的专业地说,是功能内聚)是对元素职责的相关性和集中度的度量。如果元素具有高相关性和集中度的度量。如果元素具有高度相关的职责,而且没有过多工作,那么度相关的职责,而且没有过多工作,那么该元素具有高内聚性。这些元素包括类、该元素具有高内聚性。这些元素包括类、子系统等等。子系统等等。结束语当你尽了自己的最大努力时,失败也是伟大的,所以不要放弃,坚持就是正确的。When You Do Your Best,Failure Is Great,So DonT Give Up,Stick To The End感谢聆听不足之处请大家批评指导Please Criticize And Guide The Shortcomings演讲人:XXXXXX 时 间:XX年XX月XX日
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!