第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.如果在一个服务中包括了多项可独立定义的功能,则它是_____,应尝试把它分解为多个服务。
《Python程序设计》课程标准
《Python程序设计》课程标准课程名称:Python程序设计课程性质:专业必修课计划学时:72学时适用专业:计算机各专业1.前言1.1课程定位《Python程序设计》课程定位于软件技术、大数据技术与应用、人工智能等相关专业的专业基础课程。
主要讲述Python程序设计的基础知识和相关技术,学生通过学习该课程,掌握Python程序设计语言的基本知识和使用Python语言进行软件开发的思想和基本方法,进而掌握程序设计的基本步骤和通用方法,提高通过编写程序解决实际问题的能力,为今后进一步使用数据采集和分析等大数据及人工智能方面的运用打好基础。
课程着眼于学生的长远发展,重点培养其软件开发、大数据及人工智能领域岗位基本工作技能、职业素养、社会适应能力、交流沟通能力、团队协作能力、创新能力和自主学习能力。
1.2设计思路随着人工智能、物联网及大数据产业的兴起,Python作为主要使用的开发语言,正被各个新型行业广泛的应用。
本课程通过大量的案例,引导学生学会使用Python语言思考问题、分析问题,学生在理解知识点的过程中遇到困难时,可以继续往后学习。
通过逐渐深入的学习,前面不懂和疑惑的知识点会“豁然开朗”。
通过大量的案例实操讲解Python理论知识,提高学生对Python知识的理解以及应用能力。
通过任务驱动、理实一体的教学模式,让学生在边学、边练、边做、边玩的过程中,了解实际案例实现的同时学到软件编程的基本技能。
课程重在让学生掌握程序设计的一般方法,并贯彻“方法强于代码”的意识,以加强学生的自学能力,从而有利于其将来发展。
2.课程目标2.1总体目标通过本课程的学习,使得学生能够理解Python的编程模式(命令式编程、函数式编程),熟练运用Python运算符、内置函数以及列表、元组、字典、集合等基本数据类型和相关列表推导式、切片等特性来解决实际问题,熟练掌握Python分支结构、循环结构、函数设计以及类的设计与使用,熟练使用字符串方法,适当了解正则表达式,熟练使用Python读写文本文件,适当了解二进制文件操作,了解Python程序的调试方法,掌握处理Python异常,了解Python 面向对象程序设计模式,同时还应培养学生的代码优化与安全编程意识。
《软件工程导论》课后习题答案
作业及解答(第3章)
• 数据结构的描述 符 号
= +
含 义
x = a+b
举
例
被定义为 与 或
[...,...] 或 [...|...] { ... }或 m{...}n (...) “...” ..
23:59:38
x = [a , b],x = [a | b] 重复 x = {a}, x = 3{a}8 可选 x = (a) 基本数据元素 x = “a” 连结符 x = 1..9
P1 记录存款信息
P2 打印存单 F5存款信息 F3存单 E1 储户 F4利息
F5存款信息 D1存款信息 F7密码 F2取款单
F5存款信息 P3 核算密码
F4利息 F4利息 F6取款信息 P6 设置利率 P4 计算利息
P5 打印利息清单 F8储蓄利率
E2 业务员
23:59:38
F8储蓄利率
F8储蓄利率
23:59:38
重庆工学院计算机科学与工程学院 李梁(liliang@) 李梁
作业及解答( 作业及解答(第3章)
23:59:38
重庆工学院计算机科学与工程学院 李梁(liliang@) 李梁
作业及解答( 作业及解答(第3章)
• 3-6 复印机的工作过程大致如下:未接到复印 命令时处于闲置状态,一旦接到复印命令则进 入复印状态,完成一个复印命令规定的工作后 又回到闲置状态,等待下一个复印命令;如果 执行复印命令时发现没纸,则进入缺纸状态, 发出警告,等待装纸,装满纸后进入闲置状态, 准备接收复印命令;如果复印时发生卡纸故障, 则进入卡纸状态,发出警告等待维修人员来排 除故障,故障排除后回到闲置状态。 • 请用状态转换图描绘复印机的行为。
软件工程课本讲解面向对象的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"));
第11章 软件维护
第2种方法:站在三层结构的角度上,来划分软件 维护的方法。 B/C/S的三层结构是一种最有发展潜力的应用 软件结构。客户机上的软件维护不需到用户现场去, 只需在系统后台服务器上借助网络的运行,使得软件 的安装与升级变成了一个完全透明的过程,再不用担 心光盘的安装或软盘的损伤。 这就是三层结构的优点之一。也是网络革命带来 的软件维护革命,使用户能享受简单、方便、全面、 及时的维护与升级服务。 常见的杀病毒工具升级办法就是这样一种维护。
2.维护管理文档 软件维护管理文档有: · 用户意见反馈表。 · 用户意见分类整理表。 · 维护申请单。 · 维护文档评审报告。 · 产品缺陷统计表。 · 功能扩充统计表。 · 未答复问题汇总表。 · 未验证问题汇总表。 · 已修改问题汇总表。 · 已验证问题汇总表。 · 维护费用统计表。
11.4 本章小结 要将软件维护变为一种美差事,就必须做到: · 开发文档、管理文档、维护文档必须齐全,使 所有的维护工作都变为集成化维护工作,即提高系统 的可维护性。 · 在签订合同时必须将软件的维护工作范围、内 容、期限和费用增加进去,并明确甲乙双方在维护工 作中的责任。 · 维护人员在缺陷维护(即程序级维护)和功能维护 (即设计级维护)上虽然不能随意地创新,但是可以分 析维护前系统的缺陷或毛病,收集并整理用户的意见 与建议,从而去策划新版本的蓝图,在新版本的升级 上做到有所创新。
首先,定义指出,软件维护是针对一种软件产品 而言的,维护活动发生在该产品的生存周期之内。 其次,定义将软件维护定义为一种面向客户提供 的服务。在激烈的软件市场竞争中,同类软件产品的 价格、功能、性能、接口都不相上下,那么用户如何 选择产品呢?软件厂商要推销自己的产品,推销的焦 点就是服务。谁的售后服务及时、到位,谁的产品就 可能占领市场。
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.,则表示控件有效, 否则运行时控件不可使用。
Python教程之----第11章-Python的面向对象(上)
第11章 面向对象编程(上)
· 面向对象编程 · 类和对象 · 构造方法和析构方法
· self的使用 · 运算符重载
✎ 学习目标
1 了解面向对象编
程思想
掌握类和对象的定义 2
和使用
掌握构造方法的使用
4
掌握self的使用
3
✎ 目录页
01 面向对象编程概述 02 类和对象 03 构造方法和析构方法 04 self的使用 05 运算符重载
print("%s的车在鸣笛..."%(self.color))
✎ 析构方法
• 当删除一个对象来释放类所占用资源的时候, Python解释器默认会调用另外一个方法,这个方 法就是__del__( )方法。
• __del__方法被称为析构方法。
✎ 过渡页
01 面向对象编程概述 02 类和对象 03 构造方法和析构方法 04 self的使用 05 运算符重载
✎ 过渡页
01 面向对象编程概述 02 类和对象 03 构造方法和析构方法 04 self的使用 05 运算符重载
✎ 面向对象
程序员“面向对象”
在现实世界中存在各种不同形态的事物, 这些事物之间存在着各种各样的联系。在程 序中使用对象来映射现实中的事物,使用对 象间的关系来描述事物之间的联系,这种思 想就是面向对象。
✎ self的使用
• 在方法的列表中,第1个参数永远都是self。 • self的字面意思是自己,我们可以把它当做C++里面的
this指针理解,表示的是对象自身。 • 当某个对象调用方法的时候,Python解释器会把这个对
象作为第1个参数传给self,开发者只需要传递后面的参 数就可以了。
(优选)软件工程学第三版课后习题答案
如果字长为32位,则这个存储器的价格是:
P 0.00332 0.7219951974 73577679 7,127(美元)
如果一条指令为一个字长,则为使存储器装满程序共需 73,577,679条指令。
在上列公式中Y代表年份,M是存储容量(字数),P1和P2代 表价格。
基于上述假设可以比较计算机硬件和软件成本的变化趋势。 要求计算:
作业及解答(第1-2章)
(1) 在1985年对计算机存储容量的需求估计是多少?如果字 长为16位,这个存储器的价格是多少?
(2) 假设在1985年一名程序员每天可开发出10条指令,程 序员的平均工资是每月4000美元。如果一条指令为一个 字长,计算使存储器装满程序所需用的成本。
如果字长为16位,则这个存储器的价格是
P 0.048 0.7219851974 4474263 5,789(美元)
(2)如果一条指令的长度为一个字,则使存储器装满程序共 需4474263条指令。
在1985年一名程序员每天可开发出10条指令,如果每月 有20个工作日,则每人每月可开发出10×20条指令。
为了开发出4474263条指令以装满存储器,需要的工作量
是: 4474263 22,371(人月) 200
作业及解答(第1-2章)
程序员的月平均工资是4000美元, 开发出4474263条指
令的成本是 22371 4000 89,484,000(美元)
(3)在1995年对存储容量的需求估计为:
(3) 假设在1995年存储器字长为32位,一名程序员每天可 开发出30条指令,程序员的月平均工资为6000美元,重 复(1)、(2)题。
软件工程_张海蕃
张海藩 编著
软件工程导论 (第4版)
总 目 录
第1章 第2章 第3章 第4章 第5章 第6章 第7章 软件工程学概述 可行性研究 需求分析 形式化说明技术 总体设计 详细设计 实现
总 目 录
第8章 维护 第9章 面向对象方法学引论 第10章 面向对象分析 第11章 面向对象设计 第12章 面向对象实现 第13章 软件项目管理
(6) 软件成本在计算机系统总成本中所占的比例逐 年上升。由于微电子学技术的进步和生产自动化程 度不断提高,硬件成本逐年下降,然而软件开发需 要大量人力,软件成本随着通货膨胀以及软件规模 和数量的不断扩大而持续上升。美国在1985年软件 成本大约已占计算机系统总成本的90%。 (7) 软件开发生产率提高的速度,远远跟不上计算 机应用迅速普及深入的趋势。软件产品“供不应求” 的现象使人类不能充分利用现代计算机硬件提供的 巨大潜力。
应该推广使用在实践中总结出来的开发软件的成功 的技术和方法,并且研究探索更好更有效的技术和 方法,尽快消除在计算机系统早期发展阶段形成的 一些错误概念和做法。 应该开发和使用更好的软件工具。正如机械工具可 以“放大”人类的体力一样,软件工具可以“放大” 人类的智力。在软件开发的每个阶段都有许多繁琐 重复的工作需要做,在适当的软件工具辅助下,开 发人员可以把这类工作做得既快又好。如果把各个 阶段使用的软件工具有机地集合成一个整体,支持 软件开发的全过程,则称为软件工程支撑环境。
1983年IEEE为软件下的定义是:计算机程序、方 法、规则、相关的文档资料以及在计算机上运行程 序时所必需的数据。虽然表面上看来在这个定义中 列出了软件的5个配置成分,但是,方法和规则通 常是在文档中说明并在程序中实现的。 更重要的是,必须充分认识到软件开发不是某种个 体劳动的神秘技巧,而应该是一种组织良好、管理 严密、各类人员协同配合、共同完成的工程项目。 必须充分吸取和借鉴人类长期以来从事各种工程项 目所积累的行之有效的原理、概念、技术和方法, 特别要吸取几十年来人类从事计算机硬件研究和开 发的经验教训。
软件工程第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
面向对象设计
面向对象设计的准则 启发规则 软件重用 系统分解 设计问题域子系统 设计人机交互子系统 设计任务管理子系统 设计数据管理子系统 设计类中的服务 设计关联 设计优化
面向对象的系统分析与设计rup统一软件过程
整理ppt
20
建立可视化的软件模型
• RUP的可视化建模基础是UML; • RUP指导如何有效地使用UML进行建模; • RUP在开发过程中开发和维护模型,帮助理
解和找到解决方案;
② 能跟踪和文档化项目的解决方案并对项目 做出决策,有时候需要对方案和决策进行 折中;
③ 能够对商业需求进行捕获,并进行交流;
整理ppt
19
基于构件的架构应用
• RUP是以架构为中心的,该过程在开发之前, 关注开发和产生健壮的可执行的体系结构 的基线,描述如何设计灵活的、可容纳修 改的、直观便于理解的并且促进有效软件 重用的弹性结构;
整理ppt
21
软件质量验证
• 软件质量关注两方面质量:产品质量和过 程质量;
• 软件产品的质量应关注于可靠性、功能性、 应用和系统性能等方面并根据需求进行验 证;
• RUP帮助开发人员计划、设计、实现、执行 和评估,将软件产品质量评估内驾驭所有 过程和活动中;
• RUP还针对如何验证和客观评价软件产品能 否达到预期质量提出一系列的标准;
整理ppt
28
时间维
• 时间维空间是RUP随着时间的动态组织,RUP将软件生命 周期划分为初始阶段、细化阶段、构建阶段和转换阶段4 个阶段,每个阶段的结果都是一个里程碑(Milestones),都 要达到特定的目标。 – 初始阶段的任务、输出和评价准则 – 细化阶段的任务、输出和评价准则 – 构建阶段的任务、输出和评价准则 – 移交阶段的任务、输出和评价准则
• RUP专注于处理软件生命周期中每个阶段的 最高风险,通过一系列的迭代过程和风险 控制极大减少了项目的风险;
张海藩《软件工程导论》(第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 所示:
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
退出
11.1 程序设计语言 11.2 程序设计风格 11.3 小结
11.1 程序设计语言
11.1.1 面向对象语言的优点 面向对象语言的优点 选择编程语言的关键因素, 选择编程语言的关键因素,是语言的一致的表达 能力、可重用性及可维护性。从面向对象观点看来, 能力、可重用性及可维护性。从面向对象观点看来, 能够更完整、 能够更完整、更准确地表达问题域语义的面向对象语 言的语法是非常重要的, 言的语法是非常重要的,因为这会带来下述几个重要 优点。 优点。 1. 一致的表示方法 可重用性 2. 可重用性 3. 可维护性 可维护性
1. 2. 3. 4. 5. 6. 7. 8. 9.
支持类与对象概念的机制 支持类与对象概念的机制 实现整体—部分结构的机制 实现整体 部分结构的机制 部分结构的机制 实现一般—特殊结构的机制 实现一般 特殊结构的机制 特殊结构的机制 实现属性和服务的机制 实现属性和服务的机制 类型检查 类型检查 类库 类库 效率 效率 持久保存对象 持久保存对象 参数化类 参数化类
图11.1 通过调用公用方法实重用
11.2.2
提高可扩充性 提高可扩充性
上一小节所述的提高可重用性的准则, 上一小节所述的提高可重用性的准则,也能提高 程序的可扩充性。此外, 程序的可扩充性。此外,下列的面向对象程序设计准 则也有助于提高可扩充性。 则也有助于提高可扩充性。 1. 封装实现策略 封装实现策略 不要用一个方法遍历多条关联链 2. 不要用一个方法遍历多条关联链 避免使用多分支语句 3. 避免使用多分支语句 精心确定公有方法 4. 精心确定公有方法
11.3 小结
直接支持面向对象设计范型的面向对象程序语言、 直接支持面向对象设计范型的面向对象程序语言、 开发环境及类库, 开发环境及类库,对于面向对象实现来说是非常重要 的。 具有方便的开发环境和丰富的类库的面向对象程 序设计语言,是实现面向对象设计的最佳选择。 序设计语言,是实现面向对象设计的最佳选择。 良好的程序设计风格对于面向对象实现来说格外 重要。它既包括传统的程序设计风格准则, 重要。它既包括传统的程序设计风格准则,也包括与 面向对象方法的特点相适应的一些新准则。 面向对象方法的特点相适应的一些新准则。
提高方法的内聚 1. 提高方法的内聚 减小方法的规模 2. 减小方法的规模 保持方法的一致性 3. 保持方法的一致性 把策略与实现分开 4. 把策略与实现分开 为提高可重用性,在编程时不要把策略和实现放 为提高可重用性, 在同一个方法中, 在同一个方法中,应该把算法的核心部分放在一个单 独的具体实现方法中。 独的具体实现方法中。为此需要从策略方法中提取出 具体参数,作为调用实现方法的变元。 具体参数,作为调用实现方法的变元。
5.全面覆盖 5.全面覆盖 全面覆盖 6.尽量不使用全局信息 6.尽量不使用全局信息 尽量不使用全局信息 7.利用继承机制 7.利用继承机制 利用继承机制 在面向对象程序中, 在面向对象程序中,使用继承机制是实现共享和 提高重用程度的主要途径。 提高重用程度的主要途径。 调用子过程 (1) 调用子过程 分解因子 (2) 分解因子 (3) 使用委托 使用委托 把代码封装在类中 (4) 把代码封装在类中
11.2.3
提高健壮性 提高健壮性
程序员在编写实现方法的代码时, 程序员在编写实现方法的代码时,既应该考虑效 率,也应该考虑健壮性。通常需要在健壮性与效率之 也应该考虑健壮性。 间做出适当的折衷。必须认识到, 间做出适当的折衷。必须认识到,对于任何一个实用 软件来说,健壮性都是不可忽略的质量指标。 软件来说,健壮性都是不可忽略的质量指标。为提高 健壮性应该遵守以下几条准则。 健壮性应该遵守以下几条准则。 预防用户的操作错误 1. 预防用户的操作错误 检查参数的合法性 2. 检查参数的合法性 不要预先确定限制条件 3. 不要预先确定限制条件 先测试后优化 4. 先测试后优化
10. 开发环境 10. 开发环境
11.1.3
选择面向对象语言 选择面向对象语言
开发人员在选择面向对象语言时, 开发人员在选择面向对象语言时,还应该着重考 虑以下一些实际因素。 虑以下一些实际因素。 1. 将来能否占主导地位 将来能否占主导地位 可重用性 2. 可重用性 类库和开发环境 3. 类库和开发环境 其他因素 4. 其他因素
11.1.2 面向对象语言的技术特点 一般说来, 一般说来,纯面向对象语言着重支持面向对象方 法研究和快速原型的实现, 法研究和快速原型的实现,而混合型面向对象语言的 目标则是提高运行速度和使传统程序员容易接受面向 对象思想。成熟的面向对象语文通常都提供丰富的类 对象思想。 库和强有力的开发环境。 库和强有力的开发环境。 下面介绍在选择面向对象语言时应该着重考察的 一些技术特点。 一些技术特点。
第11章 面向对象实现
面向对象实现主要包括两项工作: 面向对象实现主要包括两项工作:第一项工作是 把面向对象设计结果, 把面向对象设计结果,翻译成用某种程序设计语言书 写的面向对象程序; 写的面向对象程序;第二项工作是测试并调试面向对 象的程序。 象的程序。 面向对象测试的目标,也是用尽可能低的测试成 面向对象测试的目标, 本和尽可能少的测试方案,发现尽可能多的错误。 本和尽可能少的测试方案,发现尽可能多的错误。
11.2.1
提高可重用性 提高可重用性
面向对象方法的一个主要目标, 面向对象方法的一个主要目标,就是提高软件的 可重用性。软件重用有多个层次, 可重用性。软件重用有多个层次,在编码阶段主要考 虑代码重用的问题。一般说来,代码重用有两种: 虑代码重用的问题。一般说来,代码重用有两种:一 种是本项目内的代码重用, 种是本项目内的代码重用,另一种是新项目重用旧项 目的代码。 目的代码。 下面讲述主要的准则。 下面讲述主要的准则。
11.2 程序设计风格
良好的程序设计风格对面向对象实现来说尤其重 要,不仅能明显减少维护或扩充的开销,而且有助于 不仅能明显减少维护或扩充的开销, 在新项目中重用已有的程序代码。 在新项目中重用已有的程序代码。 良好的面向对象程序设计风格, 良好的面向对象程序设计风格,既包括传统的程 序设计风格准则, 序设计风格准则,也包括为适应面向对象方法所特有 的概念(例如,继承性)而必须遵循的一些新准则。 的概念(例如,继承性)而必须遵循的一些新准则。