第十章面向对象设计

上传人:宝路 文档编号:47036085 上传时间:2018-06-29 格式:PPT 页数:78 大小:556.10KB
返回 下载 相关 举报
第十章面向对象设计_第1页
第1页 / 共78页
第十章面向对象设计_第2页
第2页 / 共78页
第十章面向对象设计_第3页
第3页 / 共78页
第十章面向对象设计_第4页
第4页 / 共78页
第十章面向对象设计_第5页
第5页 / 共78页
点击查看更多>>
资源描述

《第十章面向对象设计》由会员分享,可在线阅读,更多相关《第十章面向对象设计(78页珍藏版)》请在金锄头文库上搜索。

1、软件工程(Software Engineering) 沈阳工业大学信息科学与工程学院 魏东 Slide 1第十章 面向对象设计软件工程(Software Engineering) 沈阳工业大学信息科学与工程学院 魏东 Slide 2从面向对象分析(OOA)到面向对象设计(通常缩写为OOD), 是一个逐渐扩充模型的过程。或者说,面向对象设计就是 用面向对象观点建立求解域模型的过程。 尽管分析和设计的定义有明显区别,但是在实际的软件开 发过程中二者的界限是模糊的。 许多分析结果可以直接映射成设计结果,而在设计过程中 又往往会加深和补充对系统需求的理解,从而进一步完善 分析结果。 分析和设计活动是一

2、个多次反复迭代的过程软件工程(Software Engineering) 沈阳工业大学信息科学与工程学院 魏东 Slide 310.1 面向对象设计的准则l 模块化 l对象就是模块。它是把数据结构和操作这些数据的方法紧密地 结合在一起所构成的模块。 l 抽象 l面向对象方法不仅支持过程抽象,而且支持数据抽象。类实际 上是一种抽象数据类型,某些面向对象的程序设计语言还支持 参数化抽象。 l 信息隐藏 l在面向对象方法中,信息隐藏通过对象的封装性实现:软件工程(Software Engineering) 沈阳工业大学信息科学与工程学院 魏东 Slide 410.1 面向对象设计的准则l 弱耦合 l

3、交互耦合: l如果对象之间的耦合通过消息连接来实现,则这种耦合就 是交互耦合。为使交互耦合尽可能松散,应该遵守下述准 则。 l尽量降低消息连接的复杂程度。 l减少对象发送(或接收)的消息数。 l继承耦合 l与交互耦合相反,应该提高继承耦合程度。为获得紧密的 继承耦合,特殊类应该确实是对它的一般化类的一种具体 化,软件工程(Software Engineering) 沈阳工业大学信息科学与工程学院 魏东 Slide 510.1 面向对象设计的准则l强内聚 l服务内聚 l 一个服务应该完成一个且仅完成一个功能。 l类内聚l 设计类的原则是,一个类应该只有一个用途,它的属性和服务应该是高 内聚的。

4、l一般特殊内聚l 设计出的一般特殊结构,应该符合多数人的概念,更准确地说,这种 结构应该是对相应的领域知识的正确抽取。 l可重用 l尽量使用已有的类(包括开发环境提供的类库,及以往开发类似系统时创建 的类), l如果确实需要创建新类,则在设计这些新类的协议时,应该考虑将来的可重 复使用性。软件工程(Software Engineering) 沈阳工业大学信息科学与工程学院 魏东 Slide 610.2 启发规则l 设计结果应该清晰易懂 l 一般特殊结构的深度应适当 l 设计简单的类 l 使用简单的协议 l 使用简单的服务 l 把设计变动减至最小软件工程(Software Engineering

5、) 沈阳工业大学信息科学与工程学院 魏东 Slide 710.3 软件重用l重用 l知识的重用 l方法和标准的重用 l软件成分的重用 l软件成分的重用级别 l代码重用 l 源代码剪贴 l 源代码包含 l 继承 l设计结果重用 l 重用某个软件系统的设计模型 l分析结果重用 l典型的可重用软件成分 l项目计划、成本估计、体系结构、需求模型和规格说明、设计、源代码、用 户文档和技术文档、用户界面、数据、测试用例软件工程(Software Engineering) 沈阳工业大学信息科学与工程学院 魏东 Slide 8l 类构件 l 可重用软构件应具备的特点 l模块独立性 l具有高度可塑性 l接口清晰

6、、简明、可靠 l 类构件的重用方式 l实例重用 l继承重用 l多态重用软件工程(Software Engineering) 沈阳工业大学信息科学与工程学院 魏东 Slide 910.4构件级设计l构件是计算机软件中的一个模块化的构造块 l在UML规范中将构件定义为“系统中某一定型化的、可配置的和可替换的部 件,该部件封装了实现并暴露一系列接口”。l面向对象的观点: l 构件包括一组协作类 l 构件中的每一个类都被详细阐述,包括所有的属性和与其实现相关的操 作。 l 从分析模型开始,详细描述分析类(对于构件而言该类与问题域相关) 和基础类(对于构件而言该类为问题域提供了支持服务)。 l传统观点:

7、 l 一个构件就是程序的一个功能要素,有处理逻辑、实现处理逻辑所需的内部数据 结构以及能够保证构件被调用和实现数据传递的接口构成。传统构件称为模块 l 模块控制构件,协调问题域中所有其他构件的调用; l 问题域构件,完成部分或全部用户的需求; l 基础设施构件,负责完成问题域中所需要相关处理的功能软件工程(Software Engineering) 沈阳工业大学信息科学与工程学院 魏东 Slide 1010.4构件级设计l1:标识出所有与问题域相对应的设计类 l2:确定所有与基础设施相对应的设计类 l3:细化所有不能作为复用构件的设计类 l在类或构件的协作时说明消息的细节 l为每一个构件确定适

8、当的接口 l细化属性并且定义相应的数据类型和数据结构 l详细描述每个操作中的处理流 l4:说明持久性数据源(数据库和文件)并确定管理数据源所需要的 类 l5:开发并且细化类或构件的行为表示 l6:细化部署图以提供额外的实现细节 l7:考虑每一个构件级设计表示,并且时刻考虑其他选择软件工程(Software Engineering) 沈阳工业大学信息科学与工程学院 魏东 Slide 1110.4构件级设计l基于类的构件设计原则 l开闭原则(The Open-Closed Principle, OCP):模块应该对外延具有开放性 ,对修改具有封闭性。 l替换原则(Subsitution Princ

9、iple, SP):子类可以替换它们的基类。 l依赖倒置原则(Dependency Inversion Principle, DIP):依赖于抽象、而 非具体实现 l接口分离原则(Interface Segregation Principle, ISP):多个用户专用接 口比一个通用接口要好。 l迪米特法则(最少知道原则) l合成复用原则 l打包的原则 l发布复用等价性原则(Release Reuse Equivalency Principle, REP):复 用的粒度就是发布的粒度。 l共同封装原则(Common Closure Principle, CCP):一同变更的类应 该和在一起。

10、l共同复用原则(Common Reuse Principle,CRP):不能一起复用的类不能 被分到一组。软件工程(Software Engineering) 沈阳工业大学信息科学与工程学院 魏东 Slide 1210.4构件级设计l 有经验的软件开发者建立了既有通用原则又有惯用方案的 指令系统来指导他们编制软件。 l 如果以结构化形式对这些问题、解决方案和命名进行描述 使其系统化,那么这些原则和习惯用法就可以称为模式。 l基于职责设计对象(General Responsibility Assignment Software Patterns, GRASP) l 信息专家、创建者、控制器、高内

11、聚、低耦合、多态、纯虚构、间接性 和防止变异 lGoF(Gang of Four)模式 l 23种设计模式,其中基本的有适配器、工厂、单实例类、策略、组合、 外观和观察者等模式软件工程(Software Engineering) 沈阳工业大学信息科学与工程学院 魏东 Slide 1310.4构件级设计l 创建模式 l工厂方法模式:如swing 中的BorderFactory l 使用工厂类统一创建继承了同一接口的多个产品对象 l抽象工厂模式 l 为产品族提供了统一的创建接口 l单例模式:如日历单例类 calendar l 一个类只有一个实例,并提供对该实例的全局访问 l创造者模式如字符串建造者

12、 StringBuilder l 将一个复杂对象的创建与它们的表示分开 l原型模式:如进程建造者ProcessBuilder l 通过复制原型实例创建新的对象软件工程(Software Engineering) 沈阳工业大学信息科学与工程学院 魏东 Slide 1410.4构件级设计l 结构型模式 l讨论类和对象的结构 l适配器模式:如Iterator,Enumeration,EventListener l装饰模式:如I/O输入输出流管道 l代理模式:如动态代理机制 l外观模式 l桥接模式 l组合模式 l亨元模式软件工程(Software Engineering) 沈阳工业大学信息科学与工程学

13、院 魏东 Slide 1510.4构件级设计l行为模式:类与对象之间的通信关系 l父类与子类 l 策略模式 l 模板方法模式 l类之间 l 观察者模式 l 迭代子模式 l 责任链模式 l 命令模式 l类的状态 l 备忘录模式 l 状态模式 l通过中间类 l 访问者模式 l 中介者模式 l 解释器模式软件工程(Software Engineering) 沈阳工业大学信息科学与工程学院 魏东 Slide 1610.4构件级设计l职责驱动设计也即基于职责的设计。在设计中软件对象具有职责, 即对其所作所为进行抽象。 lUML把职责定义为“类元的契约或义务”。就对象的角色而言,职责 与对象的义务和行为相关。职责分为以下两种类型: l对象的行为职责包括: l 自身执行一些行为,如创建对象或计算 l 初始化其他对象中的动作 l

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号