文档介绍:软件工程学ppt课件
面向对象的概念
面向对象的开发过程
面向对象分析与模型化
面向对象设计
面向对象程序的实现与测试
第9章 面向对象技术
开发模式
什么是面设计一个新类,可以视为描述一个新的对象集,它是既存类所描述对象集的子集合。
这个新的子集合可以认为是既存类的一个特殊化。Quadrilateral类是Polygon类的特殊化。Quadrilateral是限制为四条边的多边形。我们还可以进一步地把类Quadrilateral特殊化为Rectangle 。
类Quadrilateral的界面可以等同于类Polygon的界面,而Rectangle类的界面又与Quadrilateral类的界面相同。
新类的界面还可以被看做是既存类界面的一个扩充界面。例如,从一个既存的车辆类派生的四轮驱动车类可能不仅是车辆类子集合定义的特殊化,而且还可能在新类的界面中引入新的能力。
类的继承层次
在类的继承层次中,Quadrilateral的实际参数可以替换Polygon的形式参数。
类Quadrilateral的界面与类Polygon的界面是相容的
Quadrilateral的界面可响应Polygon界面的所有消息。
面向对象方法改进了在生存期各个阶段之间的接口,因为在生存期各个阶段所开发出来的“部件”都是类。
在面向对象生存期的各个阶段对各个类的信息进行细化,类成为分析、设计和实现的基本单元。
应用生存期
类生存期
复用 (Reusable)
在软件开发中,复用扮演了重要角色。软件部件应当独立于当初开发它们的应用而存在。
部件的开发瞄准某些局部的设计和实现,它们能够帮助当前问题的解决,但为了在以后的项目中使用,它们还应当足够通用。
类就是一个希望能够复用的单元,因此,提出了一个“类生存期”。
类生存期是与应用生存期是交叉的。即就是说,类的标识是应用生存期的一个阶段,但类生存期的步骤独立于任一特殊应用的开发。
类的开发应能完整地描述一个基本实体。而不仅仅考虑当前正在开发的系统。
类的定义
一旦标识了一个类,就给出了它的规格说明,其中包括类的实例可执行的操作和它们的数据表示。
对每一个,无论是在哪一个阶段标识的类都是如此。
对于那些使应用与数据库交互的类来说,其规格说明应当包括查找数据库和向数据库加入数据的行为。
类的规格说明定义了施加于对象的数据存储上的一组操作。
这组操作应工作在封装在对象内部的数据存储上,或返回关于对象状态的信息。
操作的名字应能反映这个操作本身的含义。
类的设计与实现
类的规格说明可指导对存放既存类的软件库进行查找,这些既存类可用来提供为当前应用所需要的功能。
三个可能的利用既存类的方向。开发过程可能依赖于这种查找的结果。
既存类的复用
从既存类进行演化
从废弃型进行开发
实现
通过变量的声明、操作界面的实现及支持界面操作的函数的实现,可实现一个类的预期行为和状态。
实现是与语言有关的。一个好的面向对象语言应当分离共有界面与其内部实现。
采取必要措施分别编译界面和内部表示。
测试
单个的类为测试提供了自然的单元。
如果类的定义提供的界面比较狭窄,那么穷举测试就有可能实现。
类的测试在最抽象的层次开始,沿继承关系继续向下进行。
已经测试过的部分不需要从新测试。
重点放在对新类的测试和组装测试。
求精和维护
这是一个在软件生存期中最花费时间的部分。
传统的维护活动是针对应用的,而求精过程是针对类,针对把类集成在一起的结构。
我们可以标识抽象的抽象,使得继承结构通过一般化增加新的层次,即在既存的根类之上增加新的层次。
概念的封装和实现的隐蔽
概念的封装和实现的隐蔽,使得类具有更大的独立性。在任一时刻都可以在类的界面上增加新的操作,并能够修改实现,以改进性能,或引入原来设计中没有的新服务。
为便于类的调整,应尽量做到定义与实现分离。对一个类的共有界面的实现所做的多次修改不应影响利用它的那些类。
面向对象分析是软件开发过程中的问题定义阶段。
这一阶段最后得到的是对问题论域的清晰、精确的定义。
分析阶段包括两个步骤:论域分析和应用分析。
它们都要标识问题论域中的抽象。
在分析中,需要
找到特定对象
基于对象的公共特性组合它们
标识出对这个问题的抽象
在分析阶段中要标识
抽象之间的关系
这些关系在应用系统中常常用对象之间的消息来表示,叫做消息连接。
在一个面向对象的应用中的控制流由两部分构成:
每个单独操作内部的控制流
对象之间的消息模式
面向对象分析过程分两阶段:
论域分析
应用分析
论域分析
论域分析开发问题