第--章-面向对象设计优秀文档.ppt
上传人:天马****23 上传时间:2024-09-10 格式:PPT 页数:136 大小:4.2MB 金币:10 举报 版权申诉
预览加载中,请您耐心等待几秒...

第--章-面向对象设计优秀文档.ppt

第--章-面向对象设计优秀文档.ppt

预览

免费试读已结束,剩余 126 页请下载文档后查看

10 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第9章面向对象设计9.1面向对象的设计概念及原则分析模型设计模型概念模型,回避了实现问题;物理模型,是实现蓝图;对设计是通用的;针对特定的实现;对类型有3种构造型;对类型有任意数量的构造型(依赖于实现语言);不太形式化;比较形式化;开发费用较低;开发费用较高;层数少;层数多;动态的;动态的(特别关注时序);勾画系统的设计轮廓;进行系统设计;主要通过研讨会等方式创建;设计模型和实现模型需双向开发;可能不需要在整个生命周期在整个生命周期内都应该维护内都做维护2、OO设计原则(1)封装是将一个完整的概念组成一个独立的单元,然后通过一个名字来引用它。在OO系统的较高层次,将一些相关的应用问题封装在一个子系统中,对子系统的访问是通过访问子系统的接口实现的;在较低的层次将具体对象的属性和操作封装在一个对象类中,通过类的接口访问其属性。(2)抽象OO方法不仅支持过程抽象还支持数据抽象。类封装了数据和操作数据的方法,类是一种包含过程抽象的数据抽象,它对外提供的公共数据接口构成了类的规格说明(类的协议)。使用者无需知道类中的具体操作是如何实现的,无需了解内部数据的具体表现方式,只要搞清它的规格说明,就可通过接口定义的操作访问类的数据。(3)信息隐蔽信息隐蔽是通过对象的封装实现的。类的结构分离了接口和实现,对于类的使用者来说,属性的表示和操作的实现都是隐蔽的。(4)强内聚•服务内聚:一个服务完成且仅完成一个功能。•类内聚:一个类的属性和操作全部都是完成某个任务所必须的,其中不包括无用的属性和操作。•层内聚:把向用户或高层提供相关服务的功能放在一起,而将其他内容排除在外。为了保证适当的层内聚,往往有严格的层次结构,高层能够访问低层的服务,而低层却不能访问高层的服务(下图描述了这种关系)。以下的相关服务可以放在同一层:计算服务、消息或数据传输服务、数据存储服务、管理安全服务、用户交互服务、访问操作系统服务、硬件交互服务等。•用户界面层向外界提供服务的过程和方法通常称为应用编程接口(ApplicationProgrammingInterface,API)。API的规格说明必须描述高层用来访问服务的协议,还要描述每个服务的语义和副作用。层内聚的优点如下:•替换高层模块对低层模块没有影响。•可以用等价的层替换低层,但必须复制该层所有的API,这样高层才不受影响。其他有关传统方法中的功能内聚、通信内聚、顺序内聚、时间内聚等概念及提高内聚的原则在OO设计中仍然适用。(5)弱耦合OO设计中,耦合主要指不同对象(包括类、包)之间相互关联的程度,如果一个对象过多地依赖于其它对象来完成自己的工作,不仅使系统的可理解性下降,还会增加测试、修改的难度,同时降低了类的可复用性和可移植性。但对象不可能完全孤立,当两个对象必须相互联系时,只通过类的公共接口实现耦合,不应该依赖于类的具体实现细节。设计时尽量减少对象之间发送的消息数(Meyer建议的少接口),减少消息中的参数个数(小接口),对象之间以明显和直接的方式通信,减少通信的复杂程度(显式的接口)。传统方法中有关降低耦合的原则在OO方法中仍然适用。(6)可复用为了提高工作效率、减少错误、降低成本,就要充分考虑软件的复用性。复用有两个方面的含义:一是尽量使用已有的类,包括开发环境提供的类库和已有的相似类。二是创建新类时考虑将来的可复用性。类有三种复用方式:•实例复用由于类的封装特性,使用者不需要了解内部的实现细节就可用适当的构造函数创建需要的实例,然后向所创建的实例发送适当的消息,启动相应的服务,完成需要的任务。设计一个可复用性好的类是一件很困难的事情,因为,类提供的服务太多,会增加接口的复杂度,降低类的可理解性;提供的服务太少,则可能会降低复用性。在设计时,需要根据具体的应用环境和以往的经验来综合考虑,设计出合适的类构件。•继承复用当已有的类构件不能通过实例复用满足要求时,可以通过继承复用对已有的类构件进行修改,使它满足要求。在设计时,关键是要设计一个合理的、具有一定深度的类构件的继承层次结构。每个子类在继承父类的属性和服务的基础上,加入少量的新属性和新服务,这样做的好处是父子类的耦合度比较适当,接口简单,易于理解。•多态复用多态是一种特性,这种特性使得一个属性或变量在不同的时期可以表示不同的对象。利用多态性可以使对象的对外接口更加一般化,系统运行时,根据接收消息的对象类型,由多态机制启动正确的方法,响应一个一般化的消息。例如出现下列情况:•操作与数据结构大小有关。•操作与外部设备特性有关。•实现算法将来可能会改进。为了克服与表示方法、数据结构或硬件特点相关的操作给复用带来的困难,可以设计一个基类把与上述操作有关的服务定义为纯虚函数,然