基于案例的软件构造教程第二章课后题答案
这篇文章只提供题号为 奇数 的答案,因为是我们的NT老师要求的
1.名词解释:分解,模块化,逐步求精,软件测试,测试需求,测试设计,测试覆盖,软件调试,缺陷,软件质量,编程风格。
分解:把一个大的、错综复杂的问题划分成一个一个相对简单、独立的问题,运用合适的方法分别解决。
模块化:通过把一个程序分解成简单独立、互相作用的模块,对不同的模块设定不同的功能,来实现大型、复杂的程序。
逐步求精:将现实问题经过几次抽象(细化)处理,最后到求解域中只是一些简单的算法描述和算法实现问题。
软件测试:在规定的条件下对程序进行操作,以发现错误,对软件质量进行评估。
测试需求:组件/系统中能被测试用例验证的条目或事件。
测试设计:包含设计测试用例,实施哪些层次的测试、采用哪些测试工具或框架、如何组织人员测试等。
测试覆盖:指测试所包含的软件的特征、元素、成分等方面的程度或范围。
软件调试:指根据程序的出错情况,分析、猜测可能出现错误的程序区域,让程序运行,观察程序的变化来发现错误的根源。
缺陷:程序中存在的某种破坏正常运行能力的问题、错误,或者隐藏的功能缺陷。
软件质量:软件与明确地和隐含地定义的需求相一致的程度。
编程风格:编写代码的样式规则。
3. 针对算法的数据结构的4种关系,除了本书给出的例子,你还能分别为4种情形举出若干个例子吗?
不能,因为没搜到。
5. 模块化的基本原则是什么?如何评价程序的模块化?
单一职责原则,里氏替换原则,依赖倒置原则,接口隔离原则,迪米特原则,开闭原则
(1)有利于程序复用。
把功能模块化之后有利于程序后续开发的复用,这样可把公共的功能进行深入的抽象、优化。
(2)利于系统开发集成
模块化的功能,明确了本模块的职责,已定的模块只负责该模块的特定功能,这样以系统以后做集成、重构神马的时候将会有很大的便利之处。
(3)利于调试、后续功能拓展
程序模块化后,单个模块既是系统的组成部分,也是个单独的个体,对于系统开发而言,针对单个模块进行调试往往会比整个系统的调试要方便得多。并且在系统要进行后续开发的时候,把要拓展的功能拆分到具体的模块当中这样把大大减轻了开发难度及成本等。
(4)代码结构清晰易读
在编写代码的时候把程序模块化,这样将使得代码的可读性更强。把方法的职责明确且单一化(即一个方法只做一件固定的事情),在以后维护的时候大大减少维护人员在阅读理解代码上时间。
7. 解释模块耦合性的含义,对不同的耦合举例说明
耦合性,也叫耦合度,是对模块间关联程度的度量。耦合的强弱取决与模块间接口的复杂性、调用模块的方式以及通过界面传送数据的多少。模块间的耦合度是指模块之间的依赖关系,包括控制关系、调用关系、数据传递关系。模块间联系越多,其耦合性越强,同时表明其独立性越差。软件设计中通常用耦合度和内聚度作为衡量模块独立程度的标准。划分模块的一个准则就是高内聚低耦合。
数据耦合
int sum(int a, int b) {int c;c = a + b;return c;
}
main() {int x, y;printf("x+y=%d", sum(x, y));
}
主函数与sum函数之间即为数据耦合关系
控制耦合
void output(int flag) {if(flag) printf("OK!");else printf("NO!");
}
main() {int flag;output(flag);
}
主函数与output函数之间即为控制耦合关系.
内容耦合
public class Product {public float unitPrice;......
}public class Order {private Product p = new Product();public void setItem() {p.unitPrice = 100;}
}
Product 类与 Order 类构成内容耦合
非直接耦合
void PrintDog() {System.out.println("汪汪汪");
}
void PrintCat() {System.out.println("喵喵喵");
}public static void main(String[] args) {printDog();printCat();
}
标记耦合
typedef equation {int a;
}Equation;Equation generateExercise(){Equation e;return e;
}
void printExercise(Equation e) {...
}main() {Equation e = generateExercise();printExercise(e)
}
两个函数为传递了数据结构Equation的函数,视为标记耦合
外部耦合
import com.la.pojo.Dog;public static void main(String[] args) {private Dog dog;
}
使用import引入另一个软件包就产生了外部耦合
公共耦合
int temp;
void student() {temp = 1;......
}
void teacher() {......temp = 3;......
}
一组函数都访问同一个公共数据环境就构成公共耦合
同学给发了答案,就补充上了,没有验证这个答案对不对
9. 按照任务1的设计和输出,完成程序编写,并输出加法练习和减法练习各两套
int main() {int num1[100], num2[100], op[100], user[100], result[100];for(int i=0; i<100; i++) {num1[i] = getNumber();num2[i] = getNumber();op[i] = getOp();}getSum(num1, num2, op, user, result);getResult(num1, num2, op, user, result)
}
11. 针对2.2.2节的设计1,编写完整的程序,并给出一套题的输出
public class ExerciseGenerator {public static void generateExerciseOfAdditionEquation(){int n, m;for(int i=0; i<50; i++) {n = generateOperand();m = generateOperand();System.out.println((i+1) + ":" + n +"+" + m + "=");}}...
}
输出:1:11+22 ... 2:55+16
13. 如果要求习题中不允许有相同的算式,(1)请修改代码2.2、2.2.2节设计1的代码,以及2.2.2节设计2的代码,并分别输出;(2)思考:如何确定写出程序满足这个要求呢?
public static void generateExerciseOfAdditionEquation() {int n, m, v;for(int i=0; i<50; i++) {n = generateOperand();do {m = generateOperand();v = m + n; }while(v >= 100);System.out.println((i+1) + ":" + n + "+" + m + "=" + v);}
}
public static int generateOperand(){Random random = new random();return (short)random.nextInt(101);
}
public static void main(String[] args) {printHeader()generateExerciseOfAdditionEquation();
}
不允许有相同的算式,对每次生成的算式进行比较
15. 用C/JAVA/Python等语言采用结构化编程,(1)完成任务2的程序,分别为加法,减法,加减法输出两套习题…
generateExerciseOfAdditionEquation() {...for(int i=0; i<50; i++) {do {n = generateOperand();m = generateOperand();v = m + n; }while(v >= 100);}
}
generateExerciseOfSubtraction() {...for(int j=0; j<50; j++) {do {n = generateOperand();m = generateOperand();v = n - m;}while(v <= 100);}
}
generateEquation() {...if(nextInt(2) == 1) {return generateExerciseOfAdditionEquation();} else {return generateExerciseOfSubtraction();}
}
constructEquation(short left, short right, char op) {geberateExerciseOfEquation() {...for(int i=0; i<EQUATION_NUMBER; i++) {equation = generateEquation();...}}
}
17. 如何改变案例程序,使其可以产生最多3个数值的 [0…100] 的二元算式?…
public static void main(String[] args) {int arr[][] = new int[3][3];for(int []is: arr) {for(int i=0; i<50; i++){......}}...
}
public static void main(String[] args){int a = 1;for(int i=0: i<50; i++){System.out.println(i);if(a%5 == 0){...}...}
}
19. 如何改变案例程序,使其输出任意列数 。…
public static void main(String[] args){Scanner Equation = new Scanner(System.in);System.out.println("请输入几列");int n = Equation.nextInt();for(int j=5; j<n; j++) {for(int i=1; i<n; i++) {...System.out.println(generateExercise());}}
}
21. 修改案例程序,要求尽可能整齐打印输出每行5列算式…
void equationGeneratorTest() {bool equal;Equation testData[10];String expected[10];int succeed, failed, execute = 0;testData[1] = contructAdditionEquation(9, 90, "+");expected[1] = "9+90="...for(int i=0; i<10; i++) {equal = asString(testData[i] == expected(i));if(equal) {succeed++;} else {failed++;}execute++;...}
}
23. 修改案例程序,要求尽可能整齐打印输出每行6列算式…
void isEquationTest() {bool equal;Equation testData[10];Equation anEquation;int succeed, failed, execute = 0;testData[1] = contructAdditionEquation(3, 35, "+");...anEquation = contructAdditionEquation(45, 26, "+");for(int i=0; i<10; i++) {equal = isEqual(anEquation, testData[i]);if(equal) {...}}
}
新加的答案不一定正确,谨慎 Copy
基于案例的软件构造教程第二章课后题答案相关推荐
- 计算机网络第八版——第二章课后题答案(超详细)
第二章 该答案为博主在网络上整理,排版不易,希望大家多多点赞支持.后续将会持续更新(可以给博主点个关注~ 第一章 答案 [2-01]物理层要解决哪些问题?物理层的主要特点是什么? 解答:物理层考虑的是 ...
- 基于案例的软件构造教程第三章课后题答案
2.用C.Java等编程语言,(1)定义ADT Stack.ADT Queue.ADT List:(2)编程实现上面定义的ADT:(3)设计测试用例,并用JUnit测试. class Stack {p ...
- 基于案例的软件构造教程学期大作业-100以内的加减法
小组开发,感谢组内大佬带我飞,我就是个做ppt的混子 说明: ①代码仅供参考,实现了课本上的所有功能并且通过了上台展示. ②编写用的eclipse,具体的文件路径结构已经不记得了. ③下面的代码是很多 ...
- 《计算机网络技术》第二章课后习题答案(全)
<计算机网络技术>第二章课后习题答案(全) 1.消息和信息的各自概念是什么?两者之间有何关系? 答: 消息:人类能感知的描述. 信息:消息中所包含的有意义的内容. 关系:消息是信息的载体. ...
- c语言定义y1代表英里数,河南理工大学C语言第二章课后习题答案.ppt
河南理工大学C语言第二章课后习题答案 第二章 基本数据类型.运算符与表达式 1.选择题 (1)下面四个选项中,均是合法整型常量的选项是 A. 160 , -0xffff, 011B. -0xcdf, ...
- JavaEE企业级应用开发教程 传智课后题答案
JavaEE企业级应用开发教程 传智课后题答案 第一章(Spring的基本应用) 第二章(Spring中的Bean) 第三章(3-1)(Spring AOP) 第三章(3-2)(Spring AOP) ...
- c语言课后题2.52.8答案,新概念第二册课后题答案详解:Lesson52
新概念英语作为一套世界闻名的英语教程,以其全新的教学理念,有趣的课文内容和全面的技能训练,深受广大英语学习者的欢迎和喜爱.为了方便同学们的学习,新东方在线新概念英语网为大家整理了最全面的新概念第二册课 ...
- c语言中5 2 11 意思,新概念第二册课后题答案详解:Lesson55
新概念英语作为一套世界闻名的英语教程,以其全新的教学理念,有趣的课文内容和全面的技能训练,深受广大英语学习者的欢迎和喜爱.为了方便同学们的学习,新东方在线新概念英语网为大家整理了最全面的新概念第二册课 ...
- 是一种以计算机为工具 应用决策科学,管理信息系统第十一章课后题答案1
管理信息系统第十一章课后题答案 第十一章决策支持系统 11.1请为DSS做简要特征描述. 答:DSS是一种以计算机为工具,应用决策科学及有关学科的理论.方法与技术,以人机交互方式辅助决策者解决半结构化 ...
最新文章
- $.cookie is not a function
- regex_search
- 昨天订了一台FSC Lifebook S6220
- C# 扩展object类 将string强制转换成int
- android 5.0状态栏下载地址,Android沉浸式状态栏(5.0以上系统)
- MouseColor | 颜色获取及转换工具
- 远程办公(2)-重新定义“雇佣关系”:交易成果,而不是时间
- android-swipelistview的开源项目的配置
- dbcc_name 空的_DBCC INPUTBUFFER和sys.dm_exec_input_buffer DMF概述
- HDU6464 (权值线段树)-(查找区间第k1小于第k2小之间的和)
- Mybatis常见面试题
- 一文彻底搞懂激光雷达原理!
- 墨子科技成果是计算机,近年来取得了哪些科技成就_现代史_我爱历史网
- ubuntu18设置屏幕旋转_[Android6.0][MTK6737] 设置屏幕旋转 270 度
- STM32 通过定时器产生PPM信号
- css定位“十字架“之水平垂直居中
- 从飞信,超信看中国通讯行业的不作为
- 情不知所起,一“网”而深
- ErrorCannot find module XXX 解决方法
- AT32 ISP Console 用户手册
热门文章
- Notion——构建个人知识库
- 20200425观《玄奘之路》心得
- 部分TD-SCDMA缩写含义
- 【AI写作】 机器人流程自动化 介绍 - Robotic Process Automation (RPA) Introduction
- 大数据和人工智能之间,主要是什么关系?
- 美对地防空火力压制系统综述(SEAD)
- Non-UTF-8 code starting with ‘\xe8‘ in file解决方案
- EasyExcel导出文件wps打开正常excel打开乱码
- java中的整型常量,在Java中,整型常量不可以是?
- 准确率、查准率、召回率