第11章 面向对象设计
张海藩《软件工程导论》(第6版)(章节题库 第11章 面向对象设计)【圣才出品】
第11章面向对象设计一、选择题1.()是不需要接收消息就能主动执行的服务。
A.内部服务B.外部服务C.内嵌服务D.上层服务【答案】B【解析】主动服务是不需要接收消息就能主动执行的服务,它在程序实现中是一个主动的程序成分,而外部服务属于主动服务,所以答案选B项。
2.火车是一种陆上交通工具,火车和陆上交通工具之间的关系是()关系。
A.组装B.整体与部分C.has aD.一般与具体【答案】D【解析】火车是一种陆上交通工具,而陆上交通工具不一定是火车,还可以是汽车、自行车等,说明火车是陆上交通工具的具体化,而陆上交通工具是火车的一般化,所以它们之间的关系是一般与具体的关系。
3.()只供对象内部的其他服务使用,不对外提供。
A.外部服务B.内部服务C.内嵌服务D.上层服务【答案】B【解析】对象的服务分为外部服务和内部服务两种,其中,内部服务只供内部的其它服务使用,不对外提供,外部服务只供对象外部的其它服务使用,不对内提供。
4.对象标识是分配给每个对象的永久性标识(又称作“柄”),它不符合下述条件()。
A.在一定的范围或领域(例如一个应用系统)中是唯一的B.与对象实例的特征、状态及分类(可能是动态的)无关C.在对象存在期间保持一致D.在对象存在之后保持一致【答案】D【解析】对象标识符合如下几个条件:①在一定的范围或领域中是唯一的;②与对象实例的特征、状态及分类无关;③在对象期间保持一致。
5.对象或者类的整体行为(例如响应消息)的某些规则所不能适应的(对象或类的)()。
A.状况B.情态C.条件D.问题【答案】D【解析】对象或者类的整体行为(例如响应消息)的某些规则所能适应的(对象或类的)状况、情况、条件、形式或生存周期阶段。
二、填空题1.对象的服务可分为_____、_____。
【答案】外部服务;内部服务2._____不同取值所构成的组合都可看作对象的一种新的状态。
【答案】对象的每个属性3.如果在一个服务中包括了多项可独立定义的功能,则它是_____,应尝试把它分解为多个服务。
软件工程第十一章面向对象设计
THANKS
感谢观看
01
抽象类是一种不能被实例化的 类,它只能被其他类继承。
02
抽象类可以包含抽象方法和具 体方法。抽象方法是没有具体 实现的方法,需要在继承抽象 类的子类中实现。
03
通过继承抽象类,子类可以继 承抽象类的属性和方法,并且 可以重写或实现抽象类中的方 法。
接口与抽象类的选择
在设计软件时,选择使用接口还是抽象类取决于具体需求和设计目标。
关系
关系描述了对象之间的交互和联系。 常见的关系包括关联、聚合和继承。
继承与多态的设计
继承
继承是一种实现代码重用的方式,子类可以继承父类的属性和方法,并可以扩展或覆盖它们。通过继承,可以建 立类之间的层次结构,使得代码更加清晰和易于维护。
多态
多态是指一个接口可以有多种实现方式,或者一个对象可以有多种形态。多态可以提高代码的灵活性和可扩展性, 使得程序更加易于维护和修改。
02
类与对象的设计
类的定义与属性
类的定义
类是对象的抽象,它描述了一组具有相同属性和行为的对象。类定义了对象的结构、行为和关系。
属性
属性是类中用于描述对象状态的变量。每个对象都有其自己的属性值,这些属性值决定了对象的状态 。
对象的行为与关系
行为
行为是类中定义的方法,用于描述对 象可以执行的操作。方法定义了对象 的行为和功能。
高层模块不应该依赖于低层模块,它们都应 该依赖于抽象。
面向对象设计的优势
提高代码可重用性
通过类和继承实现代码重用,减少重 复代码。
提高代码可维护性
面向对象设计使得代码结构更加清晰, 易于理解和维护。
提高开发效率
通过快速原型开发,快速构建软件系 统。
软件工程课本讲解面向对象的OMT方法
化旳动态模型 + 细化旳功能模型。
16
第11章 面向对象的OMT方法
对象模型化技术OMT 对象模型化技术把分析时搜集旳信息构造在三类
模型中,即对象模型、功能模型和动态模型。
这个模型化旳过程是一种迭代过程。
17
第11章 面向对象的OMT方法
图11.4 三元关联 29
第11章 面向对象的OMT方法
角色为关联旳端点,阐明类在关联中旳作用和角 色。不同类旳关联角色可有可无,同类旳关联角色不 能省。角色旳表达如图11.5所示。
教师
讲授
课程
主讲
内容
图11.5 关联旳角色旳表达
30
第11章 面向对象的OMT方法
2) 受限关联
受限关联由两个类及一种限定词构成,限定词是 一种特定旳属性,用来有效地降低关联旳重数,限定 词在关联旳终端对象集中阐明。
技术之上旳,OMT措施旳基础是开发系统旳3个模型,再 细化这3种模型,并优化以构成设计。对象模型由系统中 旳对象及其关系构成,动态模型描述系统中对象对事件旳响应及对 象间旳相互作用,功能模型则拟定对象值上旳多种变换及变换上旳
约束。
6
第11章 面向对象的OMT方法
11.1.2 系统分析
分析旳目旳是拟定一种系统“干什么”旳模型,该模型经过 使用对象、关联、动态控制流和功能变换等来描述。分析过程是 一种不断获取需求及不断与顾客磋商旳过程。
8
第11章 面向对象的OMT方法
3. 构造动态模型
构造动态模型旳环节如下: (1) 准备经典交互序列旳脚本。 (2) 拟定对象间旳事件并为各脚本安排事件跟踪。 (3) 准备系统旳事件流图。 (4) 开发具有主要动态行为旳各个类旳状态图。 (5) 检验状态图中共享事件旳一致性和完整性。 最终得到:动态模型 = 状态图 + 全局事件流图。
C++铁道第2版-11
程序运行结果如下: 请输入三角形的三个边长(a、b、c): 3 4 5↙ a=3,b=4,c=5 三角形的面积=6 请输入三角形的三个边长(a、b、c): int main() 2 2 4↙ { double a,b,c; a=2,b=2,c=4 这三条边不能构成三角形,异常发生,结束! try //检查异常 { cout<<"请输入三角形的三个边长(a、b、c):"<<endl; cin>>a>>b>>c; if (a<=0||b<=0||c<=0) throw 1; // 语句throw抛出int型异常 while (a>0&&b>0&&c>0) { cout<<"a="<<a<<",b="<<b<<",c="<<c<<endl; cout<<"三角形的面积="<<triangle(a,b,c)<<endl; cout<<"请输入三角形的三个边长(a、b、c):"<<endl; cin>>a>>b>>c; if(a<=0||b<=0||c<=0) throw 1; }} //语句throw抛出int型异常 catch(double) // 捕获异常,异常类型是double型 { cout<<"这三条边不能构成三角形,异常发生,结束!"<<endl; } catch(int) // 捕获异常,异常类型是int型 { cout<<"边长小于或等于0,异常发生,结束!"<<endl;} return 0;}
第11章 Windows 编程初步-面向对象程序设计(C++语言)(第二版)-程磊-清华大学出版社
❖ 第一种方法的特点是可以使应用程序更精炼,运 行效率更高,编写程序时有较大的自由度,但难 度较大;
❖ 第二种方法的特点是采用MFC提供的类库编写程 序,这些类中已经封装了大部分的Windows API 函数,还提供了编写不同程序类型的模版和框架, 所以编写程序比较容易,而且还允许直接调用 Windows API 函数来实现一些特殊的功能。
第三部分 Visual C++环境下Windows程序 开发概述
第11章 Windows 编程初步 第12章 MFC库和应用程序框架 第13章 综合设计实例– 简单绘图程序
第11章 Windows 编程初步
本章要点:
❖简单的Windows程序框架 ❖自定义类和Windows程序框架结合
在编写Windows 应用程序时,常采用两种方法: ❖ 一是使用Windows SDK ( Software development Kit,即
图11.5 向解决方案中添加新项
图11.6 添加main.cpp文件
(6)可以看到在“解决方案管理器”视图中的“源文件” 栏目中被添加了一个main.cpp文件,同时可以看到 Visual Studio开发工具的中间编辑窗口也打开了一个空 白的文件编辑窗口,在这里输入例11.1的源程序,然后保 存,如图11.7所示。
❖ Windows程序一般是一个可视化的窗口程序,通过操作 系统发送的消息来处理用户输入的数据,然后通过在窗口 上绘制或者把数据发给窗口上的组件来显示数据。
❖ 句柄就是一个标识符,用来区别同类对象或者资源的唯一 标志,可以认为它是个无符号整数或者一个指针均可。
第11章-面向对象与Java程序设计 (第3版)-微课视频版-朱福喜-清华大学出版社
第6页
11.1.3 JDBC的实现及其驱动程序
源的SQL请求。数据库驱动程序可修改应用程序的请求,使 得请求符合相关的DBMS所支持的文法。 ·数据源:由用户想要存取的数据以及与它相关的操作系统、 DBMS和用于访问DBMS的网络平台组成。
第5页
11.1.2 从ODBC到JDBC
2. JDBC的诞生
Java 刚诞生时,由于没有数据库API,编程人员不得不在 Java程序中加入C语言的ODBC函数调用。这就使Java的很多 优秀特性无法充分发挥,如平台无关性、面向对象特性等。
第4页
11.1.2 从ODBC到JDBC
1. ODBC的结构模型
ODBC包括4个主要部分: ·应用程序接口:屏蔽不同的ODBC数据库驱动程序之间函数
调用的差别,为用户提供统一的SQL编程接口。 ·驱动程序管理器:为应用程序装载数据库驱动程序。 ·数据库驱动程序:实现ODBC的函数调用,提供对特定数据
("jdbc:odbc:wombat", "login", "password"); Statement stmt = con.createStatement(); ResultSet rs = stmt.executeQuery("SELECT a, b, c FROM
Table1"); while (rs.next())
System.out.println(rs.getString("a") + " " +rs.getString ("b") + " " + rs.getString("c"));
计算机科学与技术专业课课件_软件工程SE_Chapter11
面向对象设计的准则
◆强内聚
(1) 服务内聚
一个服务应该完成一个且仅完成一个功能。
(2) 类内聚
类的属性和服务应该全都是完成该类对象的任务所必需的, 其中不包含无用的属性或服务。如果某个类有多个用途,通 常应该把它分解成多个专用的类。
(3) 一般-特殊内聚
一般-特殊结构应该是对相应的领域知识的正确抽取。 一般说来,紧密的继承耦合与高度的一般-特殊内聚是一致的。
◆信息隐藏
●信息隐藏通过对象的封装性实现:类结构分离了接口 与实现,从而支持了信息隐藏。对于类的用户来说, 属性的表示方法和操作的实现算法都应该是隐藏的。
2013-8-31
上海大学计算机学院
3
面向对象设计的准则
◆弱耦合
(1) 交互耦合 对象之间的耦合通过消息连接来实现,则这种耦合就 是交互耦合。尽量降低消息连接的复杂程度。应该尽 量减少消息中包含的参数个数,降低参数的复杂程度。 减少对象发送(或接收)的消息数。 (2) 继承耦合 继承是一般化类与特殊类之间耦合的一种形式。从本 质上看,通过继承关系结合起来的基类和派生类,构 成了系统中粒度更大的模块。因此,它们彼此之间应 该结合得越紧密越好。 设计应该使特殊类尽量多继承并使用其一般化类的属 性和服务。
实例重用、继承重用和多态重用。
◆可重用软构件应具备的特点
(1) 模块独立性强。具有单一、完整的功能,且经过 反复测试被确认是正确的。 (2) 具有高度可塑性。提供为适应特定需求而扩充或 修改已有构件的机制。 (3) 接口清晰、简明、可靠。
2013-8-31
上海大学计算机学院
9
类构件
◆类构件的重用方式
2013-8-31 上海大学计算机学院 12
第11章面向对象的设计与实现一、填空题(30小题)1、类型一致性原则
第11章面向对象的设计与实现一、填空题(30小题)1、类型一致性原则要求子类S必须满足6个限制条件:( )、( )、( )、( )、( )和( )。
答案:S的状态空间(State-space)必须与T的状态空间一致(但S可以拥有额外空间以延伸T的状态空间)、在S和T的共享空间中,S的状态空间必须等同于或位于T的状态空间之内。
对于T的每一操作(如T.叩),S覆盖或重定义为S.op,则:S.Op必须与T.op名称相同、S.op的形式函数原型的参数必须与T.op的形式函数原型的参数表一一对应、S.op 的前置条件必须等同于或弱于T.op的前置条件、S.op的后置条件必须等同于或强于T.op 的后置条件2、类的实例化是( )。
答案:对象3、对象之间进行通信的构造叫做( )。
答案:消息4、闭合行为原则是指:( )。
答案:在基于类型/子类型层次结构的继承层次结构中,类C的任何对象操作的执行,包括从C的超类继承的所有操作应满足C的类不变式5、类型( )对于创建类库的类层次结构至关重要。
答案:一致性原则6、输出端是指( )。
答案:通过一个给定程序的多行代码来测量引用其他程序的次数7、不同应用中信息共享的这种机制和构造是通过( )来实现的。
答案:类库8、类型一致性设计原则可表述为( )。
答案:如果S为T的真子类型,则S必须与T一致,即类型S的对象可以出现在类型T的对象所需要的任何环境中,并且当该对象的任何获取操作执行时,仍能保持其正确性9、耦合性用来度量( )。
答案:程序之间联系的次数和强度10、没有经过封装的原始代码规定为( )封装。
答案:0级11、一个( )可以具体实现为多个类,每个类又包括自己独特的内部设计。
答案:类型12、受限关联由两个类和一个( )组成。
答案:限定词13、类具有属性,描述类的属性用( )。
答案:数据结构14、一个标准的面向对象系统包含的类通常来自于4个主要领域:( )。
(1)基础领域包含了( )。
VFP专业知识:第11章_表单
第十一章 表 单
2.类 类是对一类相似对象的性质描述,这些对象具有相 同种类的属性以及方法 3.子类与继承 继承是指在基于现有的类创建新类时,新类继承了 现有类里的方法和属性。 此外,可以为新类添加新的方法和属性。 我们把新类称为现有类的子类,而把现有类称为新 类的父类。 一个子类的成员一般包括: (1)从其父类继承的属性和方法。 (2)由子类自己定义的属性和方法。
第十一章 表 单
类 类
抽象
细化
实例化
继承
子类
对象 …… 对象
对象
实例化
例如Visual FoxPro 6.0中CommandButton是命令按钮类, “提交”按钮和“退出”按钮都是CommandButton类的实例。
第十一章 表 单
4、Visual FoxPro基类 Visual FoxPro基类是系统本身内含的,并不存放在 某个类库中。 用户可以基于基类生成所需要的对象,也可以扩展基 类创建自己的子类 VFP的基类见 P132 表5.1
第十一章 表 单
第十一章 表 单
本 章 要 点
面向对象的概念 建立表单 管理表单 运行表单 常用表单控件
第十一章 表 单
一、面向对象的概念
1、对象(Object): 客观世界里的任何实体都可以被看作是对象。 对象可以是具体的物,也可以指某些概念。
1.名字不能更改 2.可以增加新属性
第十一章 表 单
11、常用控件的公共属性 name:控件的名称,它是代码中访问控件的标识(表单或表单 集除外)。 Fontname:字体名。 Fontbold:字体样式为粗体。 Fontsize:字体大小。 Fontitalic:字体样式为斜体。 Forecolor:前景色。 Height:控件的高度 Width:控件的宽度。控件的高度和控件的宽度,也可在设计 时通过鼠标拖曳进行可视化调整。 Visible:控件是否显示。 Enable:控件运行时是否有效。如果为 .T.,则表示控件有效, 否则运行时控件不可使用。
软件工程导论(第11章)
3. 信息隐蔽
在面向对象方法中,信息隐蔽通过对象的封
装性实现:类结构分离了类的接口与类的实
现,从而支持了信息隐蔽。
4. 弱耦合
弱的耦合可以提高软件模块的独立性,避免 某一部分模块发生变化对其它模块有较大的影 响。
一般来说,对象间的耦合有两大类:
A.交互耦合:对象间的耦合通过信息连接来
实现。应使交互耦合尽量松散。
2. 一般—特殊结构的深度应适当
中等规模的系统中,类等级层次数应保持 为7±2。不是必要情况,不应该随意创建派生类;
3. 设计简单的类:设计小而简单的类,便于
开发和管理;
1)避免包含过多的属性; 2)有明确的定义; 3)尽量简化对象之间的合作关系; 4)不要提供太多服务。
4. 使用简单的协议:设计简单的类接口,发送 的消息中参数要少。 5. 使用简单的服务:编写实现每一个服务时, 避免复杂的语句和结构; 6. 把设计变动减至最小。
2.
两个方向的关联都用属性实现,这种方法能 实现快速访问。
3.
用独立的关联对象实现双向关联。关联对象 不属于相互关联的任何一个类,它是独立的 关联类的实例 。
40
41
4、关联对象的实现
关联对象的实现方法取决于关联的阶数:
一对一关联:
• 关联对象可以与参与关联的任一个对象合并。
一对多关联:
• 关联对象可以与“多”端对象合并。
11.9 设计类中的服务 11.9.1 确定类中应有的服务 11.9.2 设计实现服务的方法
1. 设计实现服务的算法
1)算法复杂度;
2)容易理解、容易实现;
3)容易修改;
2. 选择数据结构 3. 定义内部类和内部操作
第11章 面向对象编程-Python程序设计-黄蔚-清华大学出版社
class Student:
构造方法
def __init__(self, ID, name, sex):
self.ID = ID
定义实例
属性
= name
实例方法
def sayhello(self): fmt = "Hello, " if self.sex == "female": fmt = fmt + "Ms. {}!" else:
(2)通过继承大幅减少冗余的代码,并可以方便地扩展现有代码,提高 编码效率,降低了软件维护的难度;
(3)通过对对象的辨别、划分,可以将软件系统分割为若干相对独立的 部分,在一定程度上更便于控制软件复杂度;
(4)以对象为中心的设计可以帮助开发人员从静态(属性)和动态(方 法)两个方面把握问题,从而更好地实现系统;
# 创建 Employee 类的第二个对象 emp2 = Employee("Manni", 5000) emp1.displayEmployee()
Name : Zara , Salary: 2000 Name : Manni , Salary: 5000 Total Employee 2
emp2.displayEmployee()
self.sex = sex
接下一页(续)
fmt = fmt + "Mr. {}!" print(fmt.format())
接上页(续)
st1 = Student("1111","Holly","female") st1.sayhello() st2 = Student("2222","John","male") st2.sayhello() print(, "的学号是", st1.ID)
第11章面向数据的设计方法
Shuttle -1
软件工程
wait- body1
Leave(1)
TRANSit- b ody1
Shuttlebody1
Arrive(1)
Wait(1)*
Transit(1)* Station(i)*
11.2.2 扩充功能性过程
Button-0
BD
软件工程
Button-1
Shuttle-0
SV
Shuttle-1
LAMP CMDS
图10-2-2 修改后的SSD LAMPCMDS—Lamp commands
软件工程
SHUTTLE_1 seq LON(1) /* 控制发光板“亮”,说 明交通车正停在站1上 */ read 状态向量 WAIT_BODY1 itr while Wait(1) read 状态向量 WAIT_BODY1 end LOFF(1) /* 交通车即将离站;控 制发光板“暗” */ LEAVE(1) TRANSIT_BODY1 itr while Transit(1) read 状态向量 TRANSIT_BODY1 end
分析技术识别出系统中的实体(包括人、对象、 产生或使用信息的组织)和动作(客观世界中 影响系统实体的那些事件); 2)生成实体结构图:针对每一实体,将影响它 的所有动作按发生的时间顺序用Jackson结构 图(Jackson diagrams)表示出来。为了描述 时间约束,同一动作必须出现在多张结构图中;
LEAVE(i)
TRANSIT_BODY itr while Transit(i) read 状态向量
软件工程第11章面向对象设计
2. 重用已有的类
重用已有类(代码重用)实现分析模型;若没有可以重用类而需要创建新 类时,则在设计这些新类时需要考虑其可重用性。
对于已有的可重用类,典型重用方法和过程如下: 1)选择可能被重用的已有类,标出类中对本问题无用的属性和服务,选 择那些能使无用的属性和服务最少的类; 2)从被重用的已有类派生出问题域类(继承重用类而产生问题域类); 3)标出从已有类继承来的属性和服务,而无须在分析类内定义;
6. 可重用
软件重用是提高软件开发生产率和目标系统质量的重要途径。 重用有两方面的含义: 一是尽量使用已有的类(类库或已建立的类), 二是如果确实需要创建新类,则在设计这些新类的协议时,应该考虑将 来的可重复使用性。
11.2
启发规则
与结构设计规则类似,通过OOD实践也总结了一些设计规则: 1. 设计结果应该清晰易懂 设计结果清晰、易读、易懂,是提高软件可维护性和可重用性的重要 措施。保证设计结果清晰易懂的主要因素为:用词一致;使用已有的 协议;避免模糊的定义等。
1)层次组织:这种组织方案把软件系统组织成一个层次系统,每层是一 个子系统。上层和下层自系统形成C/S结构 层次结构的两种模式:封闭式和开放式:封闭式,每层子系统仅仅使用其 直接下层提供的服务;开放式,任一层次可以向下跨层次调用。 2)块状组织:把软件系统垂直地分解成若干个相对独立的、松耦合的子 系统,一个子系统相当于一块,每块提供一种类型的服务。
第11章
11.1 11.2 11.3 11.4 11.5 11.6 11.7 11.8 11.9 11.10 11.11
面向对象设计
面向对象设计的准则 启发规则 软件重用 系统分解 设计问题域子系统 设计人机交互子系统 设计任务管理子系统 设计数据管理子系统 设计类中的服务 设计关联 设计优化
张海藩《软件工程导论》(第6版)(课后习题 第11章 面向对象设计)【圣才出品】
4.试用面向对象方法,设计本书第 2 章中给出的订货系统的例子。 答:略。
break; }
int main(){ FILE *fi; int i,inQuote; fi=fopen(“xxx.c”, “r”) if(fi==NULL) return 1; i=inQuote=0;
2/8
圣才电子书 十万种考研考证电子书、题库视频学习平台
b.有明确的定义。为使类的定义明确,分配给每个类的任务应该简单。 c.简化对象之间的合作关系。 d.不要提供太多的服务。 ④使用简单的协议 ⑤使用简单的服务 ⑥把设计变动减至最小 (2)启发规则的必要性 人们使用面向对象方法学开发软件的历史虽然不长,但也积累了一些经验。总结这些经 验得出了几条启发规则,它们往往能帮助软件开发人员提高面向对象设计的质量。
char input[Len_Max+2]; int n=sizeof(input); void CheckKeyWord(){ int i,result; for(i=0;i<n;i++) {
result=strcmp(input,Key[i]); if(result==0){ count[i]++; break; } if(result<0)
3/8
圣才电子书 十万种考研考证电子书、题库视频学习平台
5.试用面向对象方法,设计本书习题 2 第 2 题中描述的储蓄系统。 答:使用面向对象方法设计出的储蓄系统的对象模型如图 11-7 所示:
ly_新标准C++程序设计教材11-20章课后题答案
新标准C++程序设计教材11-20章课后题答案第11章:1.简述结构化程序设计有什么不足,面向对象的程序如何改进这些不足。
答案:结构化程序设计的缺点:(1)用户要求难以在系统分析阶段准确定义,致使系统在交付使用时产生许多问题。
(2)用系统开发每个阶段的成果来进行控制,不适应事物变化的要求。
(3)系统的开发周期长。
面向对象的程序设计如何改进这些不足:面向对象程序设计技术汲取了结构忧程序设计中好的思想,并将这些思想与一些新的、强大的理念相结台,从而蛤程序设计工作提供了一种全新的方法。
通常,在面向对象的程序设计风格中,会将一个问题分解为一些相互关联的子集,每个子集内部都包含了相关的数据和函数。
同时会以某种方式将这些子集分为不同等级,而一个对象就是已定义的某个类型的变量。
2.以下说怯正确的是( )。
A.每个对象内部都有成员函数的实现代码B.一个类的私有成员函数内部不能访问本类的私有成员变量C.类的成员函数之间可以互相调用D.编写一个类时,至少要编写一个成员函数答案:C3.以下对类A的定义正确的是( )。
A.class A{ B.class A{private: int v; int v; A * next;public: void Func() {} void Func() {}} };C.class A{ D. class A{int v; int v;public: public:void Func(); A next;}; void Func() {}A::void Func() { } };答案:B4.假设有以下类A:class A{public:int func(int a) { return a * a; }};以下程序段不正确的是( )。
A.A a; (5);B.A * p = new A; p->func(5);C.A a;A&r =a ; (5);D.A a,b; if(a!=b) (5);答案:D5.以下程序段不正确的是(A)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3.面向对象编程的测试
将测试的目光集中在: 将测试的目光集中在: 类功能的实现 面向对象程序风格 主要体现为以下两个方面(假设编程使用C++语言): 主要体现为以下两个方面(假设编程使用C++语言): C++语言 数据成员是否满足数据封装的要求; 数据成员是否满足数据封装的要求; 类是否实现了要求的功能。 类是否实现了要求的功能。
设计内容
面向对象模型设计一般包括四个方面的 面向对象模型设计一般包括四个方面的 模型 内容: 内容: 一、问题域部分:进一步修改、完善、补充; 进一步修改、完善、补充; 二、人机交互部分; 人机交互部分; 三、任务管理部分; 任务管理部分; 四、数据管理部分。
OOA向OOD的演进 向 的演进
主题层 类-&-对象层 结构层 属性层 服务层 问题域 部分 人机交 互部分 任务管 理部分 数据管 理部分
4.面向对象的单元测试 (1)类层测试 (2)对象集群层测试 5.面向对象的集成测试 对类间协作进行测试 (1)基于线程的测试 把响应系统的一个输入或一个事件所需要的那些类集成 起来。分别集成并测试每个线程。 (2)基于使用的测试 先测试独立类,再测试使用独立类的下一个层次的类 (称为依赖类) 6.面向对象的确认测试 检查用户可见的动作和用户可识别的输出。 根据动态模型和描述系统行为的脚本来设计确认测试用例。
例:订单处理系统
第11 章 面向对象的软件设计
2.部署图 部署图描述了处理器、设备和软件构件运行时 的体系结构。 (1)结点:是某种计算资源的物理对象,包括计 算机、设备(如打印机、通信设备)等 (2) 连接:连接用一条直线表示,它指出结点之间 存在着某种通信路径,并指出通过哪条通信路径 可使这些结点间交换对象或发送消息
面向对象测试
对面向对象软件的测试可分为下列 四个层次进行: 层次进行 四个层次进行:
1. 算法层 2. 类层(方法与属性之间的相互作用) 类层(方法与属性之间的相互作用) 3. 主题层(类-&-对象之间的相互作用) 主题层( 对象之间的相互作用) 对象之间的相互作用 4. 系统层
面向对象测试步骤
第11 章 面向对象的软件设计
本章学习内容: 1.理解面向对象软件设计的基本原理 2. 掌握系统设计的过程与方法 3.掌握详细设计的内容与过程 4.了解面向对象的实现技术 5.了解面向对象测试的概念与方法
1. 分析阶段 理解应用问题,建立对象模型、 理解应用问题,建立对象模型、动态 对象模型 模型和功能模型,说明对象关联、 模型和功能模型,说明对象关联、控制流及 数据变换。 数据变换。 2. 系统设计阶段 确定系统框架 考虑并发任务、 系统框架, 确定系统框架,考虑并发任务、通讯机 制和数据存储策略。 制和数据存储策略。 3. 对象设计阶段 从实现的角度细化分析对象模型、 细化分析对象模型 从实现的角度细化分析对象模型、 动态模型和功能模型
配给适当的硬件或软件去执行
1. 确定事件驱动型任务(一些与硬件设
备通讯的任务) 备通讯的任务) 隔激发的事件) 隔激发的事件)
2. 确定时钟驱动型任务(以固定时间间
3. 确定优先任务 4. 确定关键任务 5. 确定协调任务
数据管理设计
数据管理部件提供了在数据管理系统 中存储和检索对象的基本结构。 中存储和检索对象的基本结构。 数据管理方法 方法有 数据管理方法有: 1. 关系数据库管理系统 ( RDBMS ) 2. 面向对象数据库管理系统 面向对象数据库管理系统(OODBMS)
面向对象分析模型
对面向对象分析的扩充
面向对象设计模型
OOA向OOD的演进图
人机交互部分
人机接口部件的最基本对象是窗口, 主要的窗口类型包括 窗口类型包括: 主要的窗口类型包括:
安全/登录窗口 登录窗口。 ① 安全 登录窗口。 启动窗口。启动窗口主要完成: ② 启动窗口。启动窗口主要完成:
对象的创建和初始化; 对象的创建和初始化 系统管理功能; 系统管理功能 外设的激活与关闭。 外设的激活与关闭
第11 章 面向对象的软件设计
11.1 面向对象软件设计概述
11.1.1 面向对象设计准则 –模块化 –抽象 –信息隐蔽 –低耦合 –高内聚 –可重用
启发式规则
简单清晰、深度适当。 简单清晰、深度适当。
单位
演第11 章 面向对象的软件设计
11.1.2 面向对象设计的过程 1.系统设计 (1)首先进行系统架构设计,使系统具有良好 的稳定性、开放性和可扩充性 (2)如果系统复杂,应将系统划分为若干个子 系统 (3)给系统分配处理机和任务 (4)根据数据结构、文件和数据库选择实现数 据存储的基本策略 (5)标识全局资源和确定控制访问这些资源的 机制
第11 章 面向对象的软件设计
举例:
第12 章 面向对象软件实现
12.1 面向对象软件实现 面向对象实现阶段的主要任务: 选择合适的面向对象的编程语言与开发环境; 基于选定的语言和开发环境编码实现详细设计 中所得到的对象、算法、公式和规则等; 将编写好的各个类代码模块根据类的相互关系 集成; 对软件进行测试和调试,完成各个部分和整个 系统。
7.面向对象的系统测试
–检测软件的整体行为表现 。 检测软件的整体行为表现
OOT的视角扩大到包括复审分析和 OOT的视角扩大到包括复审分析和 设计模型,此外, 设计模型,此外,测试的焦点从过程构 模块)移向了类。 件(模块)移向了类。
面向对象的软件维护
OO方法可提高软件维护效率的重要 OO方法可提高软件维护效率的重要 原因是: 原因是: 由于程序与问题域一致, 由于程序与问题域一致,各个阶段的表 示一致,从而大大降低了理解的程度。 示一致,从而大大降低了理解的程度。 将系统中最容易变化的因素(功能) 将系统中最容易变化的因素(功能)作 为对象的服务而封装在对象的内部, 为对象的服务而封装在对象的内部,对 象的封装性使一个对象的修改对其他影 响也小,从而避免了波动效应。 响也小,从而避免了波动效应
11.2 系统设计
6.2.1逻辑体系架构设计 1.层次模式分析 (1)分层模式 表示层:图形用户界面、窗口 等。 应用逻辑层:管理业务过程的 任务和规则。 对象存储层:持久化存储机制, 例如,文件系统、数据库等。
第11 章 面向对象的软件设计
(2)设计要求 层与层之间的耦合应尽可能地松散; 级别相同、职责类似的元素应该被组织到同一 层中; 复杂的模块应被继续分解为粒度更细的层或子 系统; 应尽量将可能发生变化的元素封装到一层中; 每一层应当只调用下一层提供的功能服务,而 不能跨层调用; 一层绝不能使用上一层提供的功能服务,即不 能在层与层之间造成双向依赖。
< < la y e r> > A'
< < la ye r> > C
第11 章 面向对象的软件设计
2.子系统划分 设计准则: 子系统应具有良好的接口,通过接口和系统的 其他部分通信; 除了少数的“通信类”外,子系统中的类应只 和该子系统中的其他类协作; 子系统的数量不宜太多; 可以在子系统内部再次划分,以降低复杂度。
1. 2. 3. 4. 5. 6. 7.
面向对象分析的测试 面向对象设计的测试 面向对象编程的测试 面向对象的单元测试 面向对象的集成测试 面向对象的确认测试 面向对象的系统测试
1.面向对象分析的测试 重点在其完整性和冗余性。 重点在其完整性和冗余性。 2.面向对象设计的测试 建议针对功能的实现和重用以及对 OOA结果的拓展,应从如下三方面考虑: 结果的拓展,应从如下三方面考虑: 结果的拓展 (1)对认定的类的测试; )对认定的类的测试; (2)对构造的类层次结构的测试; )对构造的类层次结构的测试; (3)对类库的支持的测试。 )对类库的支持的测试。
业务功能窗口。 ③ 业务功能窗口。 大多数面向对象的用户界面的设计都是事 件驱动的。 件驱动的。
GUI准则 准则
1. 一致性 2. 减少步骤 3. 及时提供反馈信息 4. 提供撤消命令 5. 无须记忆 6. 易学 7. 富有吸引力
任务管理设计
确定必须同时动作的对象 找出相互排斥的对象 设计任务管理子系统: 设计任务管理子系统:确定各类任务并把任务分
第11 章 面向对象的软件设计
11.2.2 物理体系结构建模 用构件图和部署图来描述系统的物理体系结构 1.构件图 构件图就是描述构件类及其它们之间的关系。 (1)构件间的依赖关系:依赖关系,用来表示 一个构件需要另一些构件才能有完整的定义。 (2)接口:是一个构件提供给其他构件的一组 操作
第11 章 面向对象的软件设计
12.3 程序设计风格 1.提高可重用性 (1)提高方法的内聚 (2)减小方法的规模 (3)保持方法的一致性 (4)把策略与实现分开 (5)全面覆盖 (6) 尽量不使用全局信息 (7)利用继承机制
2.提高可扩充性 (1)封装实现策略 (2)不要用一个方法遍历多条关联链 (3)避免使用多分支语句 (4)精心确定公有方法 3.提高健壮性 (1)预防用户的操作错误 (2)检查参数的合法性 (3)不要预先确定限制条件 (4)先测试后优化
12.2程序设计语言 1.面向对象语言的技术特点 (1)支持类与对象概念的机制 (2)实现整体/部分结构的机制 (3)实现一般/特殊结构的机制 (4)对于实现属性和服务的机制 (5)类型检查 (6)类库 (7)效率 (8)持久保存对象 (9)参数化类 (10)开发环境
2.面向对象语言的选择 (1)可复用性 (2)类库和开发环境 (3)其他因素
第11 章 面向对象的软件设计
2.详细设计 (1)细化、补充类的属性和操作 (2)设计类操作的实现算法 (3)优化数据访问路径 (4)实现外部交互式的控制 (5)调整类结构,增加继承性 (6)设计类之间的关联的实现方式 (7)确定对象属性的精确表示 (8)把类和关联打包归纳到模块中