第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
类与对象的设计
类的定义与属性
类的定义
类是对象的抽象,它描述了一组具有相同属性和行为的对象。类定义了对象的结构、行为和关系。
属性
属性是类中用于描述对象状态的变量。每个对象都有其自己的属性值,这些属性值决定了对象的状态 。
对象的行为与关系
行为
行为是类中定义的方法,用于描述对 象可以执行的操作。方法定义了对象 的行为和功能。
高层模块不应该依赖于低层模块,它们都应 该依赖于抽象。
面向对象设计的优势
提高代码可重用性
通过类和继承实现代码重用,减少重 复代码。
提高代码可维护性
面向对象设计使得代码结构更加清晰, 易于理解和维护。
提高开发效率
通过快速原型开发,快速构建软件系 统。
软件工程第四版课后答案

20
作业及解答(第3章)
ER模型
本问题中共有两类实体,分别是“储户”和“储蓄所”,
E2 业务员
13:07:42
F8储蓄利率
D2存款利率
19
重庆工学院计算机科学与工程学院 李梁(liliang@)
作业及解答(第3章)
F2取款单 无效取款信息 D1存款信息 F7密码 F7密码 P3.2 密码校验 P3.1 输入取款信息 F5存款信息
E1 储户
13:07:42
重庆工学院计算机科学与工程学院 李梁(liliang@)
13:07:42
重庆工学院计算机科学与工程学院 李梁(liliang@)
4
作业及解答(第1-2章)
(1)在1985年对计算机存储容量的需求,估计是
M 4080 e
0.28(19851960)
4080e 4,474,263(字)
7
如果字长为16位,则这个存储器的价格是 19851974
73,577,679条指令。 在1995年一名程序员每天可开发出30条指令,每月可开 发出600条指令,为了开发出可装满整个存储器的程序, 需要的工作量为 73577679 122 629(人月) , 600
13:07:42 重庆工学院计算机科学与工程学院 李梁(liliang@)
13:07:42
重庆工学院计算机科学与工程学院 李梁(liliang@)
15
作业及解答(第3章)
电话号码=[校内电话号码|校外电话号码] 校内电话号码=非零数字+
3 位数字 //后面继续定义 校外电话号码=[本市号码|外地号码] 本市号码=数字零+8位数字 外地号码=数字零+3位数字+8位数字 非零数字=[1|2|3|4|5|6|7|8|9] 数字零=0 3位数字=3{数字}3 //3至3个数字 8位数字=非零数字+7位数字 7位数字=7{数字}7 数字=[0|1|2|3|4|5|6|7|8|9]
软件工程课本讲解面向对象的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程序一般是一个可视化的窗口程序,通过操作 系统发送的消息来处理用户输入的数据,然后通过在窗口 上绘制或者把数据发给窗口上的组件来显示数据。
❖ 句柄就是一个标识符,用来区别同类对象或者资源的唯一 标志,可以认为它是个无符号整数或者一个指针均可。
Eplan-PLC设计(一)

11.3 PLC编址
图11-21 PLC地址设置
11.3 PLC编址 在“地址格式”选项卡中可设置PLC地址的显示格式,例如,需要显示 十六进制大写的地址格式,单击“地址格式”栏后面的...按钮,在弹出的 “PLC地址格式”界面中单击“计数器”元素进行编辑,如图11-22所示。
图11-21 PLC地址设置
11.2 基于对象设计PLC 1.PLC的创建和放置
图11-12 创建宏
11.2 基于对象设计PLC
1.PLC的创建和放置 在部件库管理中,将创建的通道宏添加到“技术数据”选项卡下的
“宏”选项中,如图11-13所示。
11.2 基于对象设计PLC 1.PLC的创建和放置
图11-13 部件宏设置
11.2 基于对象设计PLC 1.PLC的创建和放置
112基于对象设计plc1plc的创建和放置图113plc总览112基于对象设计plc1plc的创建和放置添加io的功能定义时选中要编辑的io点鼠标右键选择表格式编辑命令在弹出的配置表格界面的功能文本列中填写各个io的功能信息在表格中填写的io功能文本会自动显示在plc总览图中如图114所示
第十一章 PLC设计(一)
在采用地址点设计方式之前,首先在PLC 导航中设置“视图”显示为 “基于地址”,如图11-5所示。
11.2 基于对象设计PLC 1.PLC的创建和放置
图11-5 “基于地址”视图设置
11.2 基于对象设计PLC 1.PLC的创建和放置
设置完成之后,PLC导航器中显示基于地址点的各个I/O信息,将左侧 地址点“拖放” 至原理图中,此时的符号是软件默认的地址点符号,如图 1-6所示。
11.2 基于对象设计PLC
1.PLC的创建和放置 在本项目中需要一个16通道的数字量输入模块和16通道的数字量输出
第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"));
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2) 确定时钟驱动型任务 某些任务每隔一定时间间隔就被触发以执行某些处 理, 例如,某些设备需要周期性地获得数据;某些人机 接口、子系统、任务、处理器或其他系统也可能需 要周期性地通信。在这些场合往往需要使用时钟驱 动型任务。 3) 确定优先任务 某些服务具有很高的优先级,为了在严格限定的时 间内完成这种服务,可能需要把这类服务分离成独 立的任务。
3. 定义内部类和内部操作 在面向对象设计过程中,可能需要增添一些在需求 陈述中没有提到的类,这些新增加的类,主要用来 存放在执行算法过程中所得出的某些中间结果。 此外,复杂操作往往可以用简单对象上的更低层操 作来定义。因此,在分解高层操作时常常引入新的 低层操作。在面向对象设计过程中应该定义这些新 增加的低层操作。
11.2 启发规则
1. 设计结果应该清晰易懂; 2. 一般-特殊结构的深度应适当; 3. 设计简单的类; 4. 使用简单的协议; 5. 使用简单的服务; 6. 把设计变动减至最小。
图11.1 理想的设计变动情况
11.3 软件重用
11.3.1 概述
1. 重用 重用也叫再用或复用,是指同一事物不作修改 或 稍加改动就多次重复使用。广义地说,软件重 用 可分为以下3个层次: 1) 知识重用 2) 方法和标准的重用 3) 软件成分的重用
2. 软件成分的重用级别 软件成分的重用可以进一步划分成以下3个级别: 1) 代码重用 2) 设计结果重用 3) 分析结果重用 3. 典型的可重用软件成分 1) 项目计划 2) 成本估计 3) 体系结构 4) 需求模型和规格说明 5) 设计 6) 源代码 7) 用户文档和技术文档 8) 用户界面 9) 数据 10) 测试用例
◆下面介绍,在面向对象设计过程中,可能对 面向对象分析所得出的问题域模型做的补充 或修改。 1. 调整需求 2. 重用已有的类 3. 把问题域类组合在一起 4. 增添一般化类以建立协议 5. 调整继承层次 1)使用多重继承机制 2)使用单继承机制
图11.4 窄菱形模式
图11.4 阔菱形模式
图11.6 把多重继承简化为单一层次的单继承
11.8 设计数据管理子系统
◆ 数据管理子系统是系统存储或检索对象的基本 设 施,它建立在某种数据存储管理系统之上,并且隔 离了数据存储管理模式(文件、关系数据库或面向 对象数据库)的影响。
11.8.1 选择数据存储管理模式
1. 文件管理系统 文件管理系统是操作系统的一个组成部分,使用它 长期保存数据具有成本低和简单等特点。 但是,文件操作的级别低。
图 公司、雇员及技能之间的关联链
公司类中的服务find_skill返回具有指定技能的雇员 集合。例如,用户可能询问公司中会讲日语的雇员 有哪些人。
◆ 提高访问效率的一种方法是使用哈希(Hash)表: “具有技能”这个关联不再利用无序表实现,而是 改 用哈希表实现。 ◆ 给那些需要经常查询的对象建立索引: 这是更有效的提高查询效率的改进方法。例如,针 对上述例子,可以增加一个额外的限定关联“精通 语言”,用来联系公司与雇员这两类对象,如下图 所示。
2. 关系数据库管理系统 关系数据库管理系统的理论基础是关系代数, 它 有 坚实的理论基础。 3. 面向对象数据库管理系统 面向对象数据库管理系统是一种新技术,主要有两 种设计途径: 1) 扩展的关系数据库管理系统 是在关系数据库的基础上,增加了抽象数据类型和 继承机制,此外还增加了创建及管理类和对象的通 用服务。 2) 扩展的面向对象程序设计语言
11.3.2 类构件
1. 什么是类构件? 面向对象技术中的“类”,是比较理想的可重用 软 构件,不妨称之为类构件。 2. 类构件有3种重用方式: 1) 实例重用 由于类的封装性,使用者无须了解实现细节就可 以 使用适当的构造函数,按照需要创建类的实例。 然 后向所创建的实例发送适当的消息,启动相应的 服
11.1 面向对象设计的准则
★ 所谓优秀设计:就是权衡了各种因素,从而使 得 系统在其整个生命周期中的总开销最小的设计。 ★ 优秀软件设计的一个主要特点就是容易维护。 ★ 面向对象设计准则: 1. 模块化 2. 抽象 3. 信息隐藏 4. 弱耦合 :交互耦合,继承耦合 5. 强内聚:服务内聚,类内聚,一般-特殊内聚 6. 可重用
11.10 设计关联
◆ 在对象模型中,关联是联结不同对象的纽带, 它 指定了对象相互间的访问路径。 ◆ 为了更好地设计实现关联的途径,首先应该分 析 使用关联的方式。 ◆关联的遍历 在应用系统中,使用关联有两种可能的方式: 单向遍历和双向遍历。
11.11 设计优化
11.11.1 确定优先级
1) 系统的各项质量指标并不是同等重要的,设计人 员必须确定各项质量指标的相对重要性(即确定 优先级),以便在优化设计时制定折衷方案。 2) 系统的整体质量与设计人员所制定的折衷方案密 切相关。 3) 在折衷方案中设置的优先级应该是模糊的。事实 上,不可能指定精确的优先级数值。 4) 最常见的情况,是在效率和清晰性之间寻求适当 的折衷方案。
2) 扩展的面向对象程序设计语言 扩充了面向对象程序设计语言的语法和功能,增加 了在数据库中存储和管理对象的机制。开发人员可 以用统一的面向对象观点进行设计,不再需要区分 存储数据结构和程序数据结构。
11.8.2 设计数据管理子系统
设计数据管理子系统,既需要设计数据格式又需要 设计相应的服务。
和表示方法上的一致性, 保证了在各项开发活动之间的平滑(无缝)过渡, 领域专家和开发人员能够比较容易地跟踪整个 系统开发过程,这是面向对象方法与传统方法 比较起来所具有的一大优势。 6. 面向对象设计再细分为系统设计和对象设计。 系统设计确定实现系统的策略和目标系统的高 层结构。对象设计确定解空间中的类、关联、 接口形式及实现服务的算法。 7. 系统设计与对象设计之间的界限,比分析与设 计之间的界限更模糊。
11.3.3 软件重用的效益 实例证明:通过积极的软件重用能够获得可观的商业效 益、产品质量、开发生成率和整体成本都得到了改善。
11.4 系统分解
1. 软件工程师在设计比较复杂的应用系统时普遍采 用的策略是: 首先把系统分解成若干个比较小的部分, 然后再分别设计每个部分。 2. 系统的主要组成部分称为子系统。 通常根据所提供的功能来划分子系统。一般说 来,子系统的数目应该与系统规模基本匹配。 3. 各个子系统之间应该具有尽可能简单、明确的接 口。
11.6 设计人机交互子系统
◆在面向对象分析过程中,已经对用户界面需求做 了初步分析,在面向对象设计过程中,则应该对 系统的人机交互子系统进行详细设计,以确定人 机交互的细节,其中包括指定窗口和报表的形 式、设计命令层次等项内容。 ◆本节仅从面向对象设计的角度讲述一下设计人机 交互子系统的策略。 1. 分类用户 2. 描述用户 3. 设计命令层次 4. 设计人机交互类
2. 设计任务管理子系统 ◆ 常见的任务有事件驱动型任务、时钟驱动型任 务、优先任务、关键任务和协调任务等。 ◆ 设计任务管理子系统,包括确定各类任务并把 任务分配给适当的硬件或软件去执行。 1) 确定事件驱动型任务 某些任务是由事件驱动的,这类任务可能主要完成 通信工作。例如,与设备、屏幕窗口、其他任务、 子系统、另一个处理器或其他系统通信。事件通常 是表明某些数据到达的信号。
5. 典型的面向对象设计模型
◆ 子系统之间的两种交互方式: 1) 客户-供应商关系(Client-supplier) 2) 平等伙伴关系(peer-to-peer)
11.5 设计问题域子系统
使用面向对象方法开发软件时,在分析与设计之间 并没有明确的分界线。但是,分析与设计毕竟是性 质不同的两类开发工作,分析工作可以而且应该与 具体实现无关,设计工作则在很大程度上受具体实 现环境的约束。在开始进行设计工作之前(至少在 完成设计之前),设计者应该了解本项目预计要使 用的编程语言,可用的软构件库(主要是类库)以及 程序员的编程经验。
4) 确定关键任务 关键任务是有关系统成功或失败的关键处理,这类处理通 常都有严格的可靠性要求。在设计过程中可能用额外的任 务把这样的关键处理分离出来,以满足高可靠性处理的要 求。 5) 确定协调任务 当系统中存在3个以上任务时,就应该增加一个任务,用它 作为协调任务。 6) 尽量减少任务数 必须仔细分析和选择每个确实需要的任务。应该使系统中 包含的任务数尽量少。 7) 确定资源需求 设计者必须通过计算系统载荷来估算所需要的CPU的处理 能力。
第11章 面向对象设计
1 2 3 4 5 6 7 8 面向对象设计的准则 启发规则 软件重用 系统分解 设计问题域子系统 设计人机交互子系统 设计任务管理子系统 设计数据管理子系统 9 设计类中的服务 10 设计关联 11 设计优化
1. 面向对象设计是把分析阶段得到的需求转变成系 统实现方案的过程。 2. 从面向对象分析到面向对象设计,是一个逐渐扩 充模型的过程。或者说,面向对象设计就是用面 向对象观点建立求解域模型的过程。 3. 尽管分析和设计的定义有明显区别,但是在实际 的软件开发过程中二者的界限是模糊的。许多分 析结果可以直接映射成设计结果, 4. 而在设计过程中又往往会加深和补充对系统需求 的理解,从而进一步完善分析结果。因此,分析 和设计活动是一个多次反复迭代的过程。
2) 继承重用 面向对象方法特有的继承性提供了一种对已有的类构件进行 裁剪的机制。当已有的类构件不能通过实例重用完全满足当 前系统需求时,继承重用提供了一种安全地修改已有类构 件,以便在当前系统中重用的手段。 3) 多态重用 利用多态性降低了消息连接的复杂程度,而且还提供了一种 简便可靠的软构件组合机制。
11.7 设计任务管理子系统
◆设计工作的一项重要内容就是,确定哪些是必须 同时动作的对象,哪些是相互排斥的对象。然后进 一步设计任务管理子系统。 1. 分析并发性 通过面向对象分析建立起来的动态模型,是分析并 发性的主要依据。如果两个对象彼此间不存在交 互,或者它们同时接受事件,则这两个对象在本质 上是并发的。