GRASP基于职责相关设计对象_第1页
GRASP基于职责相关设计对象_第2页
GRASP基于职责相关设计对象_第3页
GRASP基于职责相关设计对象_第4页
GRASP基于职责相关设计对象_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

GRASP基于职责相关设计对象目标学习使用面向对象设计的5个GRASP原则或模式简介决定方法归属于哪个对象和对象之间如何交互,其意义重大,应谨慎从事。掌握OOD可以通过在实例中学习和在设计中对模式的命名UML与设计原则由于UML只是一种标准、可视化建模语言,了解它的细节并不能教会你如何用对象思想来思考最关键的软件开发工具是受过良好设计原则训练的思维,而不是UML或任何其他技术对象设计以迭代方法的设计示例已经完成了哪些活动?——以前的活动和制品事物之间具有什么样的关系?——以前的制品对OO设计的影响需要完成多少设计建模工作,如何完成?有哪些输出?分析制品与对象设计之间有什么关系?对象设计的输入是什么场景UML包图补充规格说明词汇表领域模型对象设计中的活动给定一个或多个输入,开发者有以下3个选择:1:立即开发编码(理想的情况是用测试优先开发方式)2:开发为对象设计进行一些UML建模3:利用其他建模技术,如CRCcards.对象设计中的活动在UML案例中,真正要关注的并不是UML,而是可视化建模,即使用一种语言,这种语言比纯文本有更强的可视化功能。方法是使用基于职责驱动设计,考虑怎样给协作中的对象分配职责有哪些输出?考虑UML交互图和类图例如:尤其对于对象设计而言,我们期望在开始编码之前针对设计中的难点创建UML交互图、类图和包图

UI的草图和原型数据库模型报表的草图和原型职责和职责驱动设计思考软件对象设计以及大型构件的流行方式是,考虑其职责、角色和协作。这些被称为职责驱动设计的大型方法的一部分。对象职责=其所作所为的抽象职责类元的契约或义务就对象的角色而言,职责与对象的义务和行为相关职责分为两种类型:行为:自身执行一些行为,如创建对象或计算初始化其他对象中的动作控制和协调其他对象中的活动认知:对私有封装数据的认知对相关对象的认知对其能够导出或计算的事物的认知例如:Sale负责创建SaleLineItems(行为职责)Sale负责认知其总额(认知职责)职责-方法职责的粒度会影响到类和方法的转换职责与方法并非同一事物,职责是一种抽象,而方法实现了职责职责-协作RDD也包括了协作的思想职责借助于方法来实现,该方法既可以单独动作,也可以于其他方法和对象协作职责-协作Sale类可以定义一个或多个来获取其总额,比如命名为getTotal方法。为了完成该职责,Sale可能与其他对象协作,例如每个SaleLineItem对象发送getSubtotal消息以获取其小计金额RDDRDD是思考OO软件设计的一般性隐喻RDD使我们把OO设计看作是有职责对象进行协作的共同体GRASP对一些基本的职责分配原则进行了命名和描述,因此掌握这些原则有助于支持RDDGRASPGRASP=使用职责进行OO设计的学习工具GRASP原则或模式是一种学习工具,它能帮助你理解基本对象设计,并且以一种系统的、合理的、可以解释的方式来运用设计推理对这种设计原则进行理解和使用的基础是分配职责的模式GRASP-目标以GRASP作为工具,帮助掌握OOD的基本知识并理解对象设计中的职责分配职责、UML、GRASP在UML中,绘制交互图是考虑这些职责(实现为方法)的时机GRASP中的基本原则可以指导分配职责,当绘制UML交互图以及编写代码时,就可以运用GARSP原则了。什么是模式?模式:有经验的OO开发者建立了既有通用原则又有惯用方案的指令系统来指导他们编制软件在OO设计中,模式是对问题和解决方案的已命名描述,它可以用于新的语境理想情况下,模式为在变化环境中如何运用和权衡其解决方案给出建议好的模式简单地讲,好的模式是成对的问题/解决方案,并且具有广为人知的名称,它能用于新的语境中,同时对新情况下的应用、权衡、实现、变化等给出了建议GoFGangofFour(GoF)设计模式-Gamma,Helm,Johnson,andVlissides23个OO设计模式GRASP定义了9个基本OO设计原则或基本设计构件某人的模式是其他人的原始构造块OO设计背景1:迭代过程背景-有哪些优先制品?它们与OO设计模型有什么关系?我们应当花费多少时间进行设计建模?2:作为对象设计隐喻的RDD:有职责对象协作的共同体3:作为OO设计思想命名和解释方式的模式:分配职责的基本模式是GRASP,对于更为高级的设计思想则应用GoF模式。模式可在建模期间和编码期间应用4:UML用于OO设计的可视建模,在此期间,GRASP和GoF模式都能使用GRASP的示例17.8使用GRASP进行对象设计共有9个GRASP模式,本案例只应用一下几个:创建者信息专家低耦和控制器高内聚创建者问题:

谁有责任来创建类的实例?

创建者解决方案:B是A实例的创建者如果以下条件之一为真时(越多越好),将创建类A实例的职责分配给类B:B”包含”或组成聚集了AB记录AB紧密地使用AB具有A的初始化数据信息专家问题:给对象分配职责的基本原则是什么?解决方案:把职责分配给具有完成该职责所需信息的那个类

低耦合问题:怎样降低依赖性,减少变化带来的影响,提高重用性?耦合是对某元素之间的连接、感知和依赖程度的度量。具有低(或弱)耦合的元素不会包括类、子系统、系统等具有高(或强)耦合的类依赖于许多其他的类,这样的类或许不是我们所需要的。有些类会遇到以下问题:由于相关类的变化而导致本体的被迫变化难以单独地理解由于使用高耦合类时需要它所依赖的类,因此很难重用低耦合解决方案:分配职责,使耦合性尽可能低。利用这一原则来评估可选方案在实践中,耦合程度不能脱离专家、高内聚等其他原则孤立地考虑。不过,它的确是改进设计所要考虑的因素之一控制器问题:在UI层之上首先接收和协调(控制)系统操作的第一个对象是什么?在SSD分析期间,要首先探讨系统操作。这些是我们系统的主要输入事件。例如,当使用POS终端的收银员按下“结束销售”按钮时,他就发起了表示“销售已经终止”的系统事件。类似地,当使用文字处理器的书写者按下“拼写检查”按钮时,他就发起了表示“执行拼写检查”的系统事件控制器是UI层之上的第一个对象,它

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论