- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
7第七讲——面向对象设计方法与示例ok
面向对象的设计方法及示例 ;1 怎样发现对象 ; 1.1 从问题领域发现对象
从问题域中去发现对象,例如问题域是物资采购,我们在分析发现对象时,就应从人员、物品、设备、事件、表格、结构等因素去考虑。
● 人员:大多数系统的问题域都涉及各种各样的人员,需要考虑的是以下两种情况:一是需要由系统保存和管理其信息的人员,如供货商;二是在系统中扮演一定角色(提供某些服务)的人员。符合上述情况之一者,应考虑用相应的人员来描述。
; ● 组织:在系统中发挥一定作用的机构。
● 物品:需要系统管理的各种物品。除了各种有形的,还要注意那些无形的事物。正因为它们是无形的,容易被忽视,所以要特别注意。
● 设备:在系统中动态地进行,由系统进行监控或者供系统使用的各种设备。仪表、机器等这些对象也可以广义地属于物品的范畴,不过这里强调的是它们的动态特征。为了使分析模型不受硬件选择的影响,计算机设备已经被屏蔽起来,不需要在被开发的系统中设立相应的对象。
; ● 事件:指那些需要由系统长期记忆的事件。大部分系统每时每刻都可能会发生许多事件,其中有些事件的信息需要在系统中长期记忆。对于这样的事件,可考虑设立相应的对象来记录其信息。我们首先要判断哪些事件是需要长期记忆的,然后根据其信息的复杂程度及其与其他对象的相关情况决定是否为它设立一个对象。
; ● 结构:通过考虑结构可以得到一种启发——从已经发现的对象联想到其他更多的对象。例如,考虑“汽车”这个对象的类在一般-特殊结构中的位置,向上可以联想到“车辆”,向下可以联想到“客车”和“货车”,左右可以联想到“摩托车”;考虑它在整体-部分中的位置,可以联想到“车队”和“发动机”。; 1.2 从系统责任发现对象
通过对问题领域的考虑,发现了许多对象,但是可能还存在一些疏漏。通过考虑系统的责任可以检查所存在的疏漏,发现遗漏的对象。可能无法从问题领域中找到相应的对象来提供系统责任所要求的某些功能(例如系统安装、配置、数据信息备份等),这说明我们遗漏了对象,此时就必须按照系统责任所要求的每一项功能,查看是否有相应的对象来实现,如果没有就可以考虑增加一些对象来实现这些功能。
; 系统责任要求的某些功能可能与实现环境有关。OOA的对象不提供这些功能也是正常的,这就应该推迟到设计阶段考虑。因为按照我们的原则,OOA模型应该独立于具体的实现环境。
; 1.3 对象的审查和筛选
按上面介绍的方法我们可能会找到许多候选对象,这些对象中可能有一些是重复的,也可能存在一些对OOA模型无用的对象,这就要求我们对已找出的对象进行逐一审查,丢弃那些无用的对象,然后精简、合并一些对象,并区分哪些对象是应该推迟到OOD阶段考虑的。
1. 舍弃无用的对象
对于每个候选的对象,要判断它在系统中是否真正有用,判断的标准是它们是否提供了有用的属性和服务。; (1) 通过属性判断:这个对象是否将记录一些对用户或者对系统的其他对象有用的信息?也就是说对于这个对象所对应的事物,是否确实有些信息需要在系统中进行保存和管理的?如果回答是肯定的,则这个对象是有用的。
(2) 通过服务判断:这个对象是否将提供一些对用户或系统中其他对象有用的服务?是否直接或间接地提供了一些用户需要的功能?也就是这个对象所对应的事物,是否有某些行为需要在系统中模拟,并在系统中发挥一份作用?如果回答是肯定的,则这个对象是有用的。; 2. 对象的精简
如果系统中对象的种类及数量过多,则将增加系统的复杂性,应该考虑是否能精简对象。下述情况需要特别注意:
(1) 只有一个属性的对象。如果对象只有一个属性,应考虑它是被哪些对象引用的,是否能合并到这些对象中。例如,教学管理系统中有“班主任”对象,它只有一个“姓名”属性,而这个对象是被“班级”对象引用的,此时完全可以把它合并到“班级”对象中,只在“班级”对象中增加一个属性“班主任姓名”。
; (2) 只有一个服务的对象。如果一个对象只有一个服务,没有属性,并且系统中只有一个类的对象请求这个服务,可以考虑将这个服务合并到它的请求对象中。例如,“格式转换器”对象只有一个“文件格式转换”服务,系统中有“输出设备”类的对象使用这个服务,此时把可它合并到“输出设备”对象中,把“文件格式转换”服务作为合并之后的对象的服务。 ;
文档评论(0)