电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

GRASP设计带职责的对象PPT课件

147页
  • 卖家[上传人]:汽***
  • 文档编号:592082029
  • 上传时间:2024-09-19
  • 文档格式:PPT
  • 文档大小:2.72MB
  • GRASP设计带职责的对象PPT课件_第1页
    GRASP设计带职责的对象PPT课件_第2页
    GRASP设计带职责的对象PPT课件_第3页
    / 147 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、GRASP:设计带职责的对象徐迎晓复旦大学软件学院设计带职责的对象交互设计和职责分配的质量决定系统的质量l可维护性l可理解性l可重用性l可扩展性好的面向对象设计原则可用于交互图设计和职责分配GRASP模式GRASP:通用职责分配软件模式 lGeneral Responsibility Assignment Software Patterns将职责分配给对象的基本原则GRASP:设计带职责的对象五个GRASP模式应用GRASP实现Process Sale用例可见性设计类图设计五个GRASP模式. Low Coupling . High Cohesion . Controller. Creator . Information Expert模式: Low Coupling Problem:如何降低依赖、减少改变的影响,增加重用性?Solution:分配职责时使耦合低原理:l耦合表明两个类之间连接的强度,一个类是否依靠其他类lA具有低耦合,则A不依赖很多其他的类高耦合带来的问题l其他类改变则可能自己也必须改变l单独(无其他类时)难以理解l由于需要很多其他类,难以重用举例 we have a n

      2、eed to create a Payment instance and associate it with the Sale.谁来创建Payment 实例?两种都假定Sale和Payment之间有关联,register创建则增加关联,不好讨论低藕合模式常与专家、高内聚一起使用是基本目标,所有设计决策中都要考虑中等层度的藕合是正常和必需的(对象之间需要连接以便协作)优点:不受其他组件变化的影响,易于理解,易于重用类X和类Y之间常见的藕合lX有属性引用Y的实例lX对象调用Y对象的服务lX的方法引用Y的实例(参数,局部变量,返回值)lX是Y直接或间接子类lY是接口,X实现YBut 对稳定元素的藕合和普遍的元素藕合很少会有问题l如类库五个GRASP模式. Low Coupling . High Cohesion . Controller. Creator . Information Expert模式:Hign CohesionProblem:如何使复杂性可管理?Solution:分配职责时使内聚度高内聚:类的职责如何紧密关联l类或子系统等若职责紧密关联,且没有大量的工作,则具有高内聚度l高内

      3、聚则方法的数量相对较少l若task is large,则与其他对象协作l低内聚说明类做了很多无关的事情,或做了太多的事情l低内聚的问题:难以理解,重用,维护,易受变化的影响不独立使用,而是与专家、低藕合模式一起使用评估所有设计决策的一个准则Register做很多系统操作,下图哪个好?RDB-RPC-Interface classlresponsible for interacting with relational databases and for handling remote procedure callsl(two vastly different functional areas)RDBInterface classlcompletely responsible for interacting with relational databases.lhundreds or thousands of methods(all related)lA lot of supporting codeRDBInterface classlOnly partially responsible

      4、for interacting with relational databaseslinteracts with a dozen other classes related to RDB accessCompany classlcompletely responsible for (a) knowing its employees and (b) knowing its financial information. ltotal number of public methods is smalllthe amount of supporting code is small可低内聚的场合grouping of responsibilities or code into one class or component to simplify maintenance by one personl只有1,2个SQL专家,对OO不熟lsoftware architect may decide to group all the SQL statements into one class, RDBOp

      5、erations可低内聚的场合2distributed server objectslless remote calls, and better performance. l远程服务器对象要fewer and larger, less cohesive,为很多操作提供接口l远程操作粗粒度,以便一次remote operation call可以做或请求更多的工作lExample 1: remote object with three fine-grained operations setName, setSalary, and setHireDatelExample 2: one remote operation setData which receives a set of datalWhich is better?五个GRASP模式. Low Coupling . High Cohesion . Controller. Creator . Information Expert模式:ControllerProblem:谁负责处理系统输入事件?Solution:将处理系统输入事件的职责分

      6、配给代表以下的类:l代表整个系统、设备或子系统-外观Controller(facade controller)l代表整个业务过程或组织(facade controller)l代表现实世界中可能执行该任务的角色(role controller)l代表系统事件发生的用例场景,(use-case or session controller)lProblem:lThe UI & domain layers should be loosely coupledlWhich object should coordinate msgs between the UI and other domain objects?lSolution (advice):lAssign responsibility to an object representing.lThe system or a root object (Store, Bank)lA device/subsystem (AccountingSystem, BankATM)lA use case scenario (GameHandler)lSingl

      7、e channel of communication between layers“window,” “applet,” “widget,” “view,” and “document”不是控制器,而是将事件发往控制器系统操作在设计时通常交给控制器可供选择的l代表整个系统、设备或子系统lRegister, POSSysteml代表整个业务过程或组织lStorel代表现实世界中可能执行该任务的角色lCashierl代表系统事件发生的用例场景lProcessSaleHandler整个系统、设备或子系统系统事件发生的用例场景讨论大多数系统接受外部输入事件(GUI,传感器信号,)一个用例中所有系统事件用一个控制器处理,不同用例用不同控制器控制器通常将将需要做的工作委托给其他对象,自己并不做很多工作优点l业务处理由业务对象完成,而不是把图形界面作为控制器,这样可重用性高l将控制器的职责委托给各个领域类,支持逻辑重用但要防止控制器过于臃肿l可用多个控制器l可用角色控制器或用例控制器,而不是facade controller图形界面不好的做法五个GRASP模式. Low Coupling . Hig

      8、h Cohesion . Controller. Creator . Information Expert模式:CreatorProblem:谁负责创建新的对象?Solution:l如果满足以下条件之一,则将创建类A的实例的职责分配给类BlB聚合A对象lB包含A对象 B contains A objects. lB记录A对象(前三个最常用)lB紧密使用A对象lB具有创建A对象时需要传入的初始化数据lB是A的Creatorl如果有多个类满足条件,优先选择聚合或包含关系Name: Creator Problem: Who creates an A? Solution: (this can be viewed as advice) Assign class B the responsibility to create an instance of class A if one of these is true (the more the better):B contains or compositely aggregates A.B records A.B closely uses A.B

      9、has the initializing data for A. 举例谁负责创建SalesLineltem对象? 讨论低耦合l对依赖的维护少l可重用性高简明,封装But 若出于性能考虑使用回收的实例,或根据外部的值从一组类似的类中挑选一个创建实例l建议将创建工作交给helper class-Factory,而不使用本模式五个GRASP模式. Low Coupling . High Cohesion . Controller. Creator . Information Expert模式:Information Expert Problem OOD中分配职责最基本的原则是什么?Solution将职责分配给Information Expert (拥有完成该职责所需要信息的类)1.如果设计模型存在相关的类,则到领域模型中查找2. 否则,查看领域模型,应用或扩展领域模型得到相应的设计类画交互图时碰到的问题:计算总价(总计,grand total)的职责分配给谁? l检查领域模型或设计模型 计 算 总 价 需 要 知 道 所 有 销 售 条 目(SalesLineltem)及其各个条目的总价(s

      10、ubtotals)之和Sale包含SalesLineltem这些信息所以计算总价(grand total)的职责分配给Sale。 此时对交互图和类图可以增加哪些内容?各个条目的总价(subtotals.)分配给谁?l需要知道数量SalesLineltem.quantity和单价ProductSpecification.price 分配给SalesLineltem 交互图和类图增加什么内容?获取单价的职责分配给谁? ProductSpecification包含该信息 最终通过Information Expert模式得到的职责分配为了能得到总价的信息:最终通过Information Expert模式得到的协作图讨论模式Information Expert 来自直觉-对象做的事情总是与其拥有的信息有关常需要多个对象协作But 影响耦合和内聚时,可能不使用Expertl将销售保存的数据库的职责分配给谁?优点低耦合-对象用自己的信息,封装性好高内聚-行为分布在具有所需信息的类上,易于理解和维护GRASP:设计带职责的对象五个GRASP模式应用GRASP实现Process Sale用例可见性设计类

      11、图设计应用GRASP实现Process Sale 用例先为每个系统操作创建独立的图,将每个系统事件作为起始消息若图太复杂,分解成小的图使用系统操作合约和用例描述作为起点,使用GRASP等模式Controller协作图:每个系统事件要画一个顺序图:可在一张图上太长的也可每个系统事件 分开makeNewSaleenterItemUC3. Cashier enters item identifier.4. System records sale line item and presents item description, price, and running total.endSaleCashier repeats steps 3-4 until indicates done. 指示重复5. System presents total with taxes calculated.endSalemakePayment8. System logs completed sale and sends sale and payment information to the external Acc

      12、ounting system and Inventory systemMake Payment:Creating the PaymentMake Payment:Logging a Completed SaleWho is responsible for knowing all the logged sales, and doing the logging?makePayment:Calculating the BalanceThe Process Sale use case implies that the balance due from a payment be printed on a receipt and displayed somehow.7a. Paying by cash:l1 收银员输入收取的现金数额l2 系统给出应找的余额,并弹出现金抽屉l3 收银员放入收取的现金,并拿出应找的余额给顾客l4 系统记录现金支付Model-View Separation principle, we should not concern ourselves with how the b

      13、alance will be displayed or printedstartUpStartUp的开始The startUp system operation occurs when a manager powers on the POS system and the software loads.control will remain in the UI layer (suchas a Java JFrame) after the initial domain object is created.Choosing the Initial Domain ObjectStartUp启动时对数据库的操作ProductSpecification实例存储在存储介质如关系数据库或对象数据库中StartUp时,l若ProductSpecification对象数量不多,可全部加载到内存l若很多,消耗内存和时间太多,可在需要时才装载StartUp创建其他哪些对象用例实现和UP用例实现是UP设计模型的一部分建议并行画类图和交互图初始阶段:设计模型和用例实现通常不做,因为涉及详细的设计决策,而初始阶段尚

      14、不成熟细化阶段:创建体系结构上重要的或风险较大的用例实现构造阶段:为剩下的设计问题创建用例实现GRASP:设计带职责的对象五个GRASP模式应用GRASP实现Process Sale用例可见性设计类图设计可见性设计基本判断:l若对象A向对象B发消息,则B必须对A是可见的四种可见方式Attribute visibility B是是A的属性的属性 Parameter visibilityB是A的方法的参数 Local visibilityB是A的局部对象(非方法的参数). Global visibilityB是以某种方式全局可见的 属性可见相对永久,最常见相对永久,最常见public class Register private ProductCatalog catalog; 属性可见参数可见相对临时的可见性,只在方法范围内可见可见性的第二种常见形式局部可见相对临时的可见性,只在方法范围内可见两种常见情况l创建局部实例,并赋给局部变量l将方法执行的返回对象赋给局部变量全局可见相对永久的可见性C+全局变量Singleton patternGRASP:设计带职责的对象五个GRASP模式应用GR

      15、ASP实现Process Sale用例可见性设计类图设计类图设计依据交互图l软件类和方法概念模型 l类定义的细节领域模型和设计类图方法Method Name IssuesMethod Namescreatelcreate message不同语言中实现不同lC+,自动或new调用构造器lJava,new 构造器l初始化是常见的activity,通常DCD中可省略 creation-related methods and constructors from a DCD.Method NamesAccessing MethodslgetXXX(), setXXX()lhigh noise-to-value ratio,for n attributes, there are 2n uninteresting methods.l通常省略Method NamesMultiobjectsMethod NamesLanguage-Dependent Syntaxl生成代码时自动转换成相应的语言格式加上关联Adding Dependency Relationshipsdepict non-attribute visibility between classes; in other words, parameter, global, or locally declared visibility.visibility marker for attribute or methodcurrent iteration does not have many interesting member details; all attributes are private and all methods public.Rose演示

      《GRASP设计带职责的对象PPT课件》由会员汽***分享,可在线阅读,更多相关《GRASP设计带职责的对象PPT课件》请在金锄头文库上搜索。

      点击阅读更多内容
      1、金锄头文库是“C2C”交易模式,即卖家上传的文档直接由买家下载,本站只是中间服务平台,本站所有文档下载所得的收益全部归上传人(卖家)所有,作为网络服务商,若您的权利被侵害请及时联系右侧客服;
      2、如你看到网页展示的文档有jinchutou.com水印,是因预览和防盗链等技术需要对部份页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有jinchutou.com水印标识,下载后原文更清晰;
      3、所有的PPT和DOC文档都被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;下载前须认真查看,确认无误后再购买;
      4、文档大部份都是可以预览的,金锄头文库作为内容存储提供商,无法对各卖家所售文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;
      5、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据;
      6、如果您还有什么不清楚的或需要我们协助,可以点击右侧栏的客服。
    最新标签
    公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2 2022年小学体育教师学期工作总结 2022年家长会心得体会集合15篇 农村发展调研报告_1范文 2022年电脑说明文作文合集六篇 2022年防溺水初中生演讲稿 2021最新36岁儿童学习与发展指南心得体会 2022年新生迎新晚会策划书模板 20 xx年教育系统计划生育工作总结 英语定语讲解ppt课件 2021年4s店客服工作计划范文 2022年小学优秀作文700字四篇
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.