资源预览内容
第1页 / 共78页
第2页 / 共78页
第3页 / 共78页
第4页 / 共78页
第5页 / 共78页
第6页 / 共78页
第7页 / 共78页
第8页 / 共78页
第9页 / 共78页
第10页 / 共78页
亲,该文档总共78页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
软件工程(Software Engineering) 沈阳工业大学信息科学与工程学院 魏东 Slide 1第十章 面向对象设计软件工程(Software Engineering) 沈阳工业大学信息科学与工程学院 魏东 Slide 2从面向对象分析(OOA)到面向对象设计(通常缩写为OOD), 是一个逐渐扩充模型的过程。或者说,面向对象设计就是 用面向对象观点建立求解域模型的过程。 尽管分析和设计的定义有明显区别,但是在实际的软件开 发过程中二者的界限是模糊的。 许多分析结果可以直接映射成设计结果,而在设计过程中 又往往会加深和补充对系统需求的理解,从而进一步完善 分析结果。 分析和设计活动是一个多次反复迭代的过程软件工程(Software Engineering) 沈阳工业大学信息科学与工程学院 魏东 Slide 310.1 面向对象设计的准则l 模块化 l对象就是模块。它是把数据结构和操作这些数据的方法紧密地 结合在一起所构成的模块。 l 抽象 l面向对象方法不仅支持过程抽象,而且支持数据抽象。类实际 上是一种抽象数据类型,某些面向对象的程序设计语言还支持 参数化抽象。 l 信息隐藏 l在面向对象方法中,信息隐藏通过对象的封装性实现:软件工程(Software Engineering) 沈阳工业大学信息科学与工程学院 魏东 Slide 410.1 面向对象设计的准则l 弱耦合 l交互耦合: l如果对象之间的耦合通过消息连接来实现,则这种耦合就 是交互耦合。为使交互耦合尽可能松散,应该遵守下述准 则。 l尽量降低消息连接的复杂程度。 l减少对象发送(或接收)的消息数。 l继承耦合 l与交互耦合相反,应该提高继承耦合程度。为获得紧密的 继承耦合,特殊类应该确实是对它的一般化类的一种具体 化,软件工程(Software Engineering) 沈阳工业大学信息科学与工程学院 魏东 Slide 510.1 面向对象设计的准则l强内聚 l服务内聚 l 一个服务应该完成一个且仅完成一个功能。 l类内聚l 设计类的原则是,一个类应该只有一个用途,它的属性和服务应该是高 内聚的。 l一般特殊内聚l 设计出的一般特殊结构,应该符合多数人的概念,更准确地说,这种 结构应该是对相应的领域知识的正确抽取。 l可重用 l尽量使用已有的类(包括开发环境提供的类库,及以往开发类似系统时创建 的类), l如果确实需要创建新类,则在设计这些新类的协议时,应该考虑将来的可重 复使用性。软件工程(Software Engineering) 沈阳工业大学信息科学与工程学院 魏东 Slide 610.2 启发规则l 设计结果应该清晰易懂 l 一般特殊结构的深度应适当 l 设计简单的类 l 使用简单的协议 l 使用简单的服务 l 把设计变动减至最小软件工程(Software Engineering) 沈阳工业大学信息科学与工程学院 魏东 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接口清晰、简明、可靠 l 类构件的重用方式 l实例重用 l继承重用 l多态重用软件工程(Software Engineering) 沈阳工业大学信息科学与工程学院 魏东 Slide 910.4构件级设计l构件是计算机软件中的一个模块化的构造块 l在UML规范中将构件定义为“系统中某一定型化的、可配置的和可替换的部 件,该部件封装了实现并暴露一系列接口”。l面向对象的观点: l 构件包括一组协作类 l 构件中的每一个类都被详细阐述,包括所有的属性和与其实现相关的操 作。 l 从分析模型开始,详细描述分析类(对于构件而言该类与问题域相关) 和基础类(对于构件而言该类为问题域提供了支持服务)。 l传统观点: l 一个构件就是程序的一个功能要素,有处理逻辑、实现处理逻辑所需的内部数据 结构以及能够保证构件被调用和实现数据传递的接口构成。传统构件称为模块 l 模块控制构件,协调问题域中所有其他构件的调用; l 问题域构件,完成部分或全部用户的需求; l 基础设施构件,负责完成问题域中所需要相关处理的功能软件工程(Software Engineering) 沈阳工业大学信息科学与工程学院 魏东 Slide 1010.4构件级设计l1:标识出所有与问题域相对应的设计类 l2:确定所有与基础设施相对应的设计类 l3:细化所有不能作为复用构件的设计类 l在类或构件的协作时说明消息的细节 l为每一个构件确定适当的接口 l细化属性并且定义相应的数据类型和数据结构 l详细描述每个操作中的处理流 l4:说明持久性数据源(数据库和文件)并确定管理数据源所需要的 类 l5:开发并且细化类或构件的行为表示 l6:细化部署图以提供额外的实现细节 l7:考虑每一个构件级设计表示,并且时刻考虑其他选择软件工程(Software Engineering) 沈阳工业大学信息科学与工程学院 魏东 Slide 1110.4构件级设计l基于类的构件设计原则 l开闭原则(The Open-Closed Principle, OCP):模块应该对外延具有开放性 ,对修改具有封闭性。 l替换原则(Subsitution Principle, 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):一同变更的类应 该和在一起。 l共同复用原则(Common Reuse Principle,CRP):不能一起复用的类不能 被分到一组。软件工程(Software Engineering) 沈阳工业大学信息科学与工程学院 魏东 Slide 1210.4构件级设计l 有经验的软件开发者建立了既有通用原则又有惯用方案的 指令系统来指导他们编制软件。 l 如果以结构化形式对这些问题、解决方案和命名进行描述 使其系统化,那么这些原则和习惯用法就可以称为模式。 l基于职责设计对象(General Responsibility Assignment Software Patterns, GRASP) l 信息专家、创建者、控制器、高内聚、低耦合、多态、纯虚构、间接性 和防止变异 lGoF(Gang of Four)模式 l 23种设计模式,其中基本的有适配器、工厂、单实例类、策略、组合、 外观和观察者等模式软件工程(Software Engineering) 沈阳工业大学信息科学与工程学院 魏东 Slide 1310.4构件级设计l 创建模式 l工厂方法模式:如swing 中的BorderFactory l 使用工厂类统一创建继承了同一接口的多个产品对象 l抽象工厂模式 l 为产品族提供了统一的创建接口 l单例模式:如日历单例类 calendar l 一个类只有一个实例,并提供对该实例的全局访问 l创造者模式如字符串建造者 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) 沈阳工业大学信息科学与工程学院 魏东 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
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号