- 1、本文档共11页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
面向对象的设计概述
OOA和OOD之间有密切的衔接关系,从OOA到OOD是一个逐渐扩充模型的过程。分析处理以问题为中心,可以不考虑任何与特定计算机有关的问题,而OOD则把我们带进了面向计算机的“实地”开发活动中去。通常,OOD分为两个阶段,即高层设计和低层设计。高层设计建立应用的体系结构。低层设计集中于类的详细设计。
(1) 高层设计
高层设计阶段开发软件的体系结构,构造软件的总体模型。在这个阶段,标识在计算机环境中进行问题解决工作所需要的概念,并增加了一批需要的类。这些类包括那些可使应用软件与系统的外部世界交互的类。此阶段的输出是适合应用软件要求的类、类间的关系、应用的子系统视图规格说明。通常,利用面向对象设计得到的系统框架如图6.11所示。
① 高层设计模型
一个典型的高层设计模型即客户-服务器模型,它构造起应用软件的总体模型,这个模型导出的体系结构既可在过程性系统中使用,又可在面向对象的系统中使用。
客户-服务器模型的想法是让系统的一个部分(服务器子系统)提供一组服务给系统的另一个部分(客户子系统)。请求服务的对象都归于客户子系统,而接受请求提供服务的部分就是服务器。
图6.11 OOD设计导出的体系结构
② 高层设计的规则
( 最小化各构件间的通信:在子系统的各个高层构件之间的通信量应当达到最小。一个用户界面应当能够自行处理交互、错误改正和硬件控制,而不需打扰主应用。
( 隐藏复杂性:子系统应当把那些成组的类打包,形成高度的内聚。
( 逻辑功能分组:虽然输入和输出设备可能相互间不通信,但逻辑上把它们归组到一个处理输入/输出的子系统中。这样比较容易识别并定位问题论域中的事件。
类与通过概念封装的子系统十分类似。事实上,每个子系统都可以被当做一个类来实现,这个类聚集它的构件,提供了一组操作。类和子系统的结构是正交的,一个单个类的实例可能是不止一个子系统的一部分。
高层设计阶段增加了一批必要的类,主要包括了那些可使应用软件与系统的外部世界交互的类。这些交互则包括与其它软件系统(如数据库管理系统、鼠标和键盘)的界面,与使用来进行数据收集或者负责控制的硬件设备的界面等。
高层设计可以表征为标识和定义模块的过程。但这种模块可以是单个的类,还可以是由一些类组合成的子系统。定义过程是职责驱动的。
高层设计和类设计这两个阶段是相对封闭的。在这种情况下,应用软件中的每一个事物都是一个对象,包括应用软件自身在内! 根据这个思想,这两个阶段又是连接的。应用软件的设计是大类的设计,这种类设计考察应用软件所期望的每一个行为,并利用这些行为形成应用类的界面。
(2) 类设计的目标和方针
类设计的第一步是标识应用所需的概念。应用分析过程包括了对问题论域所需的类的模型化;但在最终实现应用时不只有这些类,还需要追加一些类。类设计的主要目标如下:
① 单一概念的模型 :在分析与高层设计阶段, 常常需要使用多个类来表示一个“概念”。一般人们在使用面向对象方法开发软件时,常常把一个概念进行分解,用一组类来表示这个概念。当然,也可以只用一个独立的类来表示一个概念。
② 可复用的构件 :我们希望所开发的构件可以在未来的应用中使用。因此,需要一些附加特性。例如,在相关的类的集合中界面的标准化
③ 可靠的构件 :应用软件必须是可靠的(健壮的和正确定义的)软件。而这种可靠性与它的构件有关。每个构件必须经过充分的测试。但由于成本关系,往往测试不够完备。然而,如果我们要建立可复用的类,则通过测试确保构件的可靠性是绝对必要的。
④ 可集成的构件 :我们希望把类的实例用到其它类的开发和应用中,这要求类的界面应当尽可能小,一个类所需要的数据和操作都定义在类定义中。因此,类的设计应当尽量减少命名冲突。面向对象语言的消息语法可通过鉴别带有实例名的操作名来减少可能的命名冲突。
类结构提供的封装使得把概念集成到应用的工作变得很容易。封装特性保证了把一个概念的所有细节都组合在一个界面下,而信息隐蔽则保证了实现级的名字将不会其它类的名字互相干扰。
我们讨论的方针是类的模块设计的方针,还要给出类设计质量的度量。
① 信息隐蔽 :软件设计通过信息隐蔽可增强抽象,并可保护类的存储表示不被抽象数据类型实例的用户直接存取。对其表示的唯一存取途径只能是界面。
② 消息限制 :类的设计者应当为类的命令设计一个明确的界面,该类实例的用户应当只使用界面提供的操作。
③ 狭窄界面 :不是所有的操作都是公共的。只有对其它类的实例是必要的操作才放到界面上,其它操作应是隐蔽实现的部分。
④ 强内聚 :模块内部各个部分之间应有较强的关系
⑤ 弱耦合 :一个单独模块应尽量不依赖于其它模块。如果在类A的实例中建立了类B的实例,或者如果类A的操作需要类B的实例做为参数,或者如果类A是类B的一个派生类,则称类
文档评论(0)