该版本不提示答案是否是对的
选择题
1,在计算机技术发展的早期,软件开发的主要活动就是算法研究。f错误
2,软件按其功能划分为三种类型:系统软件、支撑软件和应用软件。t正确
3,从软件使用者的角度,把软件生存周期分为定义软件、开发软件和维护软件三个阶段。f错误
4,在软件生存周期中,软件维护会持续很长一段时间,甚至超过全周期的一半。t正确
5,瀑布式开发过程,也叫软件生存期模型,它规定自上而下、相互分离的固定次序。f错误
6,根据软件生存周期的概念和划分,软件测试不属于实现阶段的活动。f错误
7,增量开发模型的基本思想是让开发者能够从早期的开发、系统的增量、交付的版本中学到经验。t正确
8,数据流语言的计算模型是原始函数节点上的信息元素(Tokens)流,它们到达节点后触发节点的计算。t正确
9,从软件开发者的角度,一般把软件生存周期分为提出需求、开发软件和维护软件三个阶段。f错误
10,依据软件构造技术,关注点聚合是面向方面的程序设计的核心概念。t正确
11,在模块化理论中,通信内聚指一个函数中各个处理元素都密切相关于同一功能且必须顺序执行。f错误
12,调试的基本活动包括隔离、定位和更正错误。t正确
13,根据编码风格,命名标识符的首要原则是要完全准确地表达所代表的事物或动作。t正确
14,提高软件的模块化能够提高软件的可修改性。t正确
15,软件测试是使用人工或自动手段来运行或测定某个系统的过程,目的在于检测它是否满足规定的需求或者是否弄清预期结果与实际结果之间的差别。t正确
16,软件测试是说明程序是否正确的唯一技术手段。f错误
17,由于测试数据或预期结果的错误而导致根据测试程序显示待测程序可能有误,称为测试漏判。f错误
18,基于等价类划分测试的基本思想是:将程序可能的输入数据依据某个准则分成若干等价子集,其和覆盖了整个程序即可。f错误
19,根据测试覆盖原则,满足一个测试覆盖就能为软件的正确程度提供充足的保证。f错误
20,严格的封装不会带来诸如编程麻烦、执行效率低的问题。f错误
21,关键抽象是构成问题域术语的一个类或对象,其主要价值在于识别确定问题边界的抽象,指出在系统中出现的问题相关的类(领域类)、因而与设计相关的事情。t正确
22,多数调试器不允许设置监视点来应对变量值的变化。f错误
23,测试实施占据了测试的大部分工作和时间,而这部分工作相对测试设计,具有重复性和机械性,容易实现自动化。t正确
24,根据模块化理论,松散耦合的一个作用是避免程序的一处改动产生连锁反应,导致一系列相关模块的改动。F错误
25,用调试器可以观察运行栈、追踪函数之间的调用关系和变量值的来源、变化N等信息。F错误
26,测试工具Junit能自动判断待测程序是否正确。f错误
27,根据第3章案例设计二,BinaryOperation对象可以访问子类继承或隐藏的成员变量,可以操作子类新增的成员变量、调用子类新增的方法。f错误
28,根据第3章案例设计二,类BinaryOperation中计算算式结果的方法calculate()最好是具体方法。T正确
29,异常处理中的终止模式一旦抛出异常, 不能表明错误已无法挽回。f错误
30,在软件构造中,异常使用得当,能降低程序的复杂性,同时提高程序的健壮性。t正确
31,程序单元的圈复杂数就是它的基本路径的数量,所以,覆盖基本路径的测试数据集一定是唯一的。f错误
32,一般而言,测试的判定覆盖和条件覆盖有重叠,彼此之间有差别,不能相互取代。 t正确
33,在Java中,成员变量和局部变量都能被public,private,static,final所修饰。f错误
34,程序的用户界面集成实质上就是如何把一组功能合理地组织并呈现给用户使用。t正确
35,交互设计的基本原则中学习性指的是新的用户能用它进行有效的交互并获得大的性能。t正确
36,静态程序分析没有自动化的工具支持,就能更好地支持代码审查工作,为审查者提供更多的信息。f错误
37,代码重构后,原先复杂的功能划分到若干相互独立的、短小的方法中。f错误
38,把一个Java包(package)打包成JAR文件后,包(package)中定义的每个类和接口都在最底层的同一个文件目录里。T正确
39,GUI基本元素的使用要符合窗口与对话框的标准。t正确
40,GUI开发中采用的观察者模式,一个被观察者只能有一个观察者监听。f错误
单选题
1,有关C/S、B/S结构下列说法错误的是
A.在C/S结构,即客户端/服务器结构中,有专门的数据库服务器,但客户端还要运行客户端应用程序,这也叫做胖客户端
B.Web应用是基于C/S结构的,也就是客户端/服务器结构
C.在B/S结构中,客户端在浏览器中只负责表示层逻辑的实现,业务逻辑和数据库都在服务器端运行。也就是说,应用程序部署在服务器端,客户端通过浏览器访问应用程序
D.通常B/S结构中,客户端发送HTTP请求消息传给服务器,服务器将请求传递给Web应用程序,Web应用程序处理请求,并把相应的HTML页面传给客户端
答案B
2,软件是能够完成预定功能和性能的可执行的程序和使程序正常执行所需要的数据,加上描述软件开发过程及其管理、程序的操作和使用的有关( ).
A.注释
B.文档
C.算法
D.第三方库
答案B
3,将系统功能分配到系统不同组成元素的过程,包括一组活动①划分需求②确定子系统③给子系统分配需求④定义子系统的功能⑤ ____ 。
A.定义子系统接口
B.划分子系统
C.测试子系统
D.维护子系统
答案A
4,软件按服务对象的范围划分为:项目软件(定制开发)和( )(或通用软件)。
A.产品软件
B.系统软件
C.交互式软件
D.批处理软件
答案A
5,软件实现与通常的程序设计的主要区别是 ____ 。
A.算法
B.软件的集成与测试
C.数据结构
D.代码格式标准
答案B
6,软件测试也属于实现阶段的活动,可以分为对程序基本组成单元的测试(单元测试)对软件组装结果的测试( )、(系统测试),(验收测试)
A.白盒测试
B.集成测试
C.黑盒测试
D.回归测试
答案B
7,预防性维护是为改善软件系统的( ),也为以后的改进奠定基础。
A.可用性
B.可维护性和可靠性
C.可理解性
D.可移植性
答案B
8,瀑布式软件开发过程把软件开发分为制定计划、需求分析、软件设计、程序编写、 ____ 和运行维护等6 个基本活动。
A.设计者评价
B.软件测试
C.用户评价
D.项目经理评价
答案B
9,在Java语言中,下列数据类型的精度由高到低的顺序是 ____ 。
A.byte,long,double,float
B.double,int,float,long
C.float,double,int,long
D.double,float,int,byte
答案D
10,根据软件构造的定义,软件构造就是通过设计、编码、测试等一系列活动创建软件,没有特别指出()。
A.可运行的
B.可工作的
C.高质量的
D.有意的
答案C
11,模块具有三大特征:独立性、()、通用性。
A.互换性
B.可维护性
C.整洁性
D.可理解性
答案A
12,图灵奖获得者 Wirth 提出的()的方法,可以简化为“算法+数据结构=程序”。
A.面向数据流设计
B.面向对象设计
C.结构化程序设计
D.过程化设计
答案C
13,()是计算机存储、组织数据的方式,是指相互之间存在一种或多种特定关系的数据元素的集合。
A.算法
B.数据结构
C.数据库
D.内存
答案B
14,根据软件的模块化理论,下列耦合度最低的是()。
A.控制耦合
B.外部耦合
C.数据耦合
D.非直接耦合
答案D
15,依据编码风格,命名标识符的首要原则是()。
A.使用驼峰命名法或匈牙利命名法
B.简单
C.要完全准确地表达所代表的事物或动作
D.正确
答案C
16,对本案例,假设算式有3种数据结构:结构体、一维数组和字符串;习题有4种,则案例程序可以有()种数据结构的组合方式。
A.12
B.7
C.3
D.4
答案A
17根据模块化理论,()是两函数之间没有直接关系,之间的联系完全是通过其他函数的控制和调用来实现的。
A.外部耦合
B.非直接耦合
C.控制耦合
D.标记耦合
答案B
18,Java程序中,关于static不正确的说法是()。
A.static关键字允许在没有创建对象的情况下来进行调用(方法/变量)
B.static可以用来修饰类的成员方法
C.static不可以用来修饰类的成员变量
D.static不可以用来修饰局部变量
答案C
19,()是从众多的事物中抽取出共同的、本质性的特征,而舍弃其非本质的特征。
A.抽象
B.模板
C.模块
D.封装
答案A
20,数据类型可分为两类:()、结构类型。
A.基本类型
B.引用类型
C.抽象类型
D.原子类型
答案D
21,()是那些仅仅可以访问当前抽象的表示就能有效实现的操作。
A.完整操作
B.原始操作
C.实际操作
D.抽象操作
答案B
22,类的模块化准则要求一个类应当是()、原始的、充分的。
A.抽象的
B.丰富的
C.完整的
D.安全的
答案C
23,()是类型理论的一个概念,一个名字可以表示多个不同类的实例,只要它们具有某个共同的超类而且相关。
A.封装
B.多态
C.继承
D.接口
答案B
24,用面向对象开发软件时,通常先设计一个包含基本属性和()的类。然后,随着类的使用,会发现需要补充、修改甚至细化类及其接口。
A.操作
B.可见性
C.接口
D.方法
答案D
25,类的()提供了外部视角,重在抽象,同时隐藏了它的结构和组成。
A.接口
B.属性
C.方法
D.操作
答案A
26,在UML中,类是用一个带有类名、可选属性和操作()表示
A.圆形
B.梯形
C.菱形
D.矩形
答案D
27,子类型必须能够替换它们的基类型。这一思想体现了对继承机制的约束规范,只有子类能够替换基类时,才能保证系统在运行期内识别子类,这是保证继承复用的基础。这是()原则。
A.单一职责
B.开闭封闭
C.里氏代换
D.依赖倒转
答案C
28,在数据处理中,将对象的成员变量转换为可以存储或传输的形式的过程就是()。
A.立体化
B.序列化
C.编程化
D.结构化
答案B
29,能够匹配正则表达式"[A-Z]*\\+[0-9]+"的是()。
A.+5
B.B9
C.98
D.AA++4
答案A
30,能够匹配Java正则表达式"[A-Za-z][A-Za-z0-9]*@[1-9]{3,5}[.]com"是()。
A.disizhang@22.com
B.disizhang@1263.com
C.disizhang@126
D.disizhang@163
答案B
31,程序单元的圈复杂数反映了程序单元的复杂程度,一般情况下,圈复杂数超过了( )就要采用基本路径覆盖的测试。
A.3
B.4
C.5
D.6
答案C
32,基于程序结构的测试方法,不包括()。
A.边界值测试
B.判断覆盖测试
C.路径覆盖测试
D.语句覆盖测试
答案A
33,在程序中,可以把文件理解成物理概念,流是( )概念。
A.具体
B.逻辑
C.操作
D.抽象
答案B
34,研究人员提出了不同的原则和规则用于指导人机交互的设计,特别是3条基本原则,在下面的说法中不包括( )。
A.快速性
B.健壮性
C.学习性
D.灵活性
答案A
35,对于交互式系统中提供信息反馈,下列说法错误的是( )。
A.对每个用户动作都要有反馈
B.界面对象的可视化表现的变化应该能够清醒地提供这一反馈
C.对少用的操作,反馈信息应当精简
D.对常用操作,反馈信息可以减短
答案C
36,对于设计对话框以产生结束信息,下列说法错误的是( )。
A.每组动作结束后应该告诉用户系统已经准备好接收下一组动作。
B.应设计多个对话框,在每个操作完成后都给予用户提示。
C.设计能够终止的交互会话,使用户知道什么时候完成了任务。
D.应当把操作分成动作序列,有开始、中间和结束三个阶段。
答案B
37,关于快速原型,下列叙述错误的是( )。
A.在构造一个原型时,应当强调着眼于预期的评估,而不是为了正规地长期使用。
B.根据原型实现的特点和环境,可以把原型作为试验工具,用完可以循环使用。
C.终系统对每个软件需求都要求详细实现,而原型仅仅是为了试验和演示用的。
D.开发系统采用原型法,需要有交互式开发环境、可复用代码框架及自动编程系统的支持。
答案C
38,( )是软件开发队伍对程序质量和信赖性进行的自我评估,包括代码的可维护性、可扩展性、可使用性,以及安全和编程规范是否得到遵守。
A.正式审查
B.同行评审
C.代码走查
D.桌面检查
答案B
39,人们在开发用户交互界面时用交互设计的过程模型作为指导,其中设计评估阶段的任务主要是评估交互设计的可运行性和( )。
A.稳定性
B.灵活性
C.可接受性
D.健壮性
答案C
40,代码重构是增量迭代开发不可或缺的技术,它在完成构造、交付代码前改进代码质量。从中可以看出,代码重构的目的是()。
A.提高软件的运行效率
B.提高软件的正确性
C.提高软件的可维护性
D.提高软件的存储效率
答案C
41,通常情况下,软件交付的基本活动不包括()。
A.构建
B.部署
C.测试
D.打包
答案C
42,根据使用软件的不同用途,软件环境有多种划分,但是通常不包括()。
A.开发环境
B.安装环境
C.测试环境
D.运行环境
答案B
43,
答案A
44,在GUI设计中,以下哪个组件的功能是获取用户输入的一行信息()?
A.文本区域
B.标签
C.密码域
D.文本域
答案D
45,在某些场合,使用()比使用文字更加简洁、更加容易辨析。
A.图标
B.图形
C.图像
D.图画
答案A
46,在事件驱动编程的实现中有若干参与者,不包括()。
A.事件
B.控制器
C.事件源
D.侦听器
答案B
47,Java语言中,GridLayout的布局策略是( )。
A.组件相互叠加排列在容器中
B.将窗口划分成五部分,在这五个区域中添加组件
C.按添加的顺序由左至右将组件排列在容器中
D.按设定的行数和列数以网格的形式排列组件
答案D
48,Java语言中,组件相互叠加排列在容器中,这个布局类是()。
A.FlowLayout
B.CardLayout
C.GridLayout
D.BorderLayout
答案B
49,Java GUI 设计模式主要有观察者模式和()。
A.代理模式
B.MVC模式
C.工厂设计模式
D.适配器模式
答案B
多选题
1. 架构师要考虑的因素
A.成本.可靠性
B.质量.投入.进度.
C.性能.可扩展性
D.团队技能水平
答案ABCD
2. 软件架构设计流程可以分为以下几步:
A.照猫画虎:将领域架构中的各部分的名称后增加“子系统”,形成初始的软件架构。
B.按图索骥:“图”是质量需求,“骥”是架构模式,逐一对照质量需求,设计满足要求的软件架构。
C.深思熟虑:“深思”全面评估各个备选方案的优劣点。“熟虑”挑选最优的方案。
D.精益求精:逐步迭代,进一步优化。
答案ABCD
3.架构设计的任务是:
A.把系统拆分为不同子系统或不同模块。
B.有机的组织好这些子系统或模块。
C.通过封装“类”来降低复杂度。
D.架构 = 子系统(模块)+ 交互。
答案ABCD
4. 下面属于通常所说的六大设计原则的选项?
A.单一职责原则
B.开闭原则
C.里氏替换原则
D.高内聚低耦合
答案ABC
5. 下面关于里氏替换原则的描述正确的是?
A.子类必须实现或继承父类所有的公有方法,否则调用者调用了一个父类中有,而子类中没有的方法,运行时就会出错
B.类每个方法的输入参数必须和父类一样,否则调用父类的代码不能调用子类
C.子类每个方法的输出(返回值.修改全局变量.插入数据库.发送网络数据库)必须不比父类少,否则基于父类的输出做的处理就没法完成
D.指导类继承的设计
答案ABCD
6. 下列关于设计模式,说法正确的是
A.设计模式是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结。
B.模式描述了⼀个在我们周围不断重复发⽣的问题,以及该问题的解决⽅案的核⼼。
C.模式就是重复发⽣的问题的解决⽅案。
D.设计模式主要⽤于指导“类的定义”的设计,设计原则主要⽤于指导“类的⾏为”的设计
答案AB
7. 模式的类别
A.创建型模式
B.结构型模式
C.⾏为型模式
D.状态式模式
答案ABC对的
8. 软件=( )+( )+ ____ 。
A.程序
B.文档
C.数据
D.数据结构
答案ABC对的
9. 增量开发模型的优点: ____
A.在短时间内向用户提交一个可运行软件,能够提供解决用户急用的一些功能。
B.可以使软件适应需求变化。
C.用户有较充分的时间学习和适应新的产品。
D.有利于系统维护,当需求变更时,只变更部分部件,而不必影响整个系统。
答案ABCD对的
10,敏捷开发核心价值观: ____
A.响应变化胜过遵循计划
B.工作的软件胜过详尽的文档
C.客户合作胜过合同谈判
D.个体和互动胜过流程和工具
答案ABCD
11. 从用户的角度,软件生存周期分为 ____ 三个阶段。
A.使用软件
B.开发软件
C.获取软件
D.提出需求
答案ACD对的
12.软件规模的划分依据有多个因素,通常不包含()。
A.产品规模
B.组织方式
C.参加人数
D.运行平台
答案DB
13. 在程序设计和软件开发的实践和理论中,存在过以()为中心和以()为中心的开发方法。
A.数据
B.操作
C.效率
D.功能
答案AB对的
14. ISO为程序质量定义了下列哪几个独立的质量特性()。
A.可靠性
B.功能性
C.可用性
D.可维护性
答案ABCD对的
15. 软件质量是许多质量属性的综合体现,各种质量属性反映了软件质量的不同方面。从认识和评估的角度,软件质量分为()。
A.功能质量属性
B.内部质量属性
C.用户体验质量属性
D.外部质量属性
答案:BD
16. 教材把“算式”设计成C的结构体或类表示一个“算式”时,具有如下优势。
A.代码可读性高
B.节省存储空间
C.直接显示输出
D.较易修改
答案ABD
17. 程序设计有两种抽象,分别是()(函数抽象)和()。
A.数据抽象
B.过程抽象
C.接口抽象
D.功能抽象
答案AB
18. 在软件开发中,封装具有如下优势()。
A.改善通用性和维护性,因为需要复用构件、组合成软件,需要构件尽可能通用、正确;理
解一个构件无须理解整个程序,自由地改进构件的内部,有助于维护程序。
B.构件的外部不能随意访问构件的内部数据和操作,而只允许通过由构件提供的外部可用的
操作来访问其内部,这就降低了构件间的耦合度,还可以避免外部错误对程序其他部分的
“交叉感染”。
C.更容易快速开发正确的程序,因为程序员在编写一个构件时只需考虑少量事情。在一个包
含多人的项目中特别有用:一旦程序员们确定了构件间的交互,每个人都可以独立地开发
和测试分配的构件。事实上,没有封装,是不可能编写、调试和维护非常大的程序的。
D.构件的内部修改对外部的影响变小,减少了修改引起整个程序范围的“波动效应”。
答案ABCD
19. 用面向对象开发软件时,通常先设计一个包含()的类。然后,随着类的使用,会发现需要补充、修改甚至细化类及其接口。
A.基本方法
B.基本属性
C.析构函数
D.接口
答案BA
20. 合成复用原则(Composite/Aggregate Reuse Principle,CARP)是指尽量使用()关系,而不使用继承。
A.组合
B.继承
C.泛化
D.聚合
答案AD对的
21. 下面关于依赖倒转原则(Dependency Inversion Principle,DIP),正确的说法有( )。
A.高层模块依赖于低层模块
B.低层模块负责实现
C.抽象不依赖于实现
D.高层调用低层的功能
答案CD
22. 在软件结构测试的技术中,逻辑覆盖测试主要包含了( )准则。
A.判定覆盖
B.条件覆盖
C.结果覆盖
D.科学覆盖
答案AB
23. 防御编程的基本思想是:程序员要预计其他程序员的过错,对包括()情形,采取适当措施保护自己的程序
A.编程错误
B.需求歧义
C.无效的输入
D.有害的输入数据
答案CD对的
24. 关于Java的成员变量与局部变量,下面正确说法的有()。
A.局部变量是在方法中定义的变量或是方法的参数
B.成员变量是对象的一部分,而对象存在于栈内存
C.成员变量如果没有被赋初值,通常会自动以类型的默认值而赋值
D.局部变量不能被访问控制修饰符修饰
答案ACD对的
25. 许多专家学者提出了不同的原则和规则用于指导人机交互的设计,最基本的3条原则包括( )。
A.健壮性
B.美观性
C.学习性
D.灵活性
答案ACD
26. 把多个软件的功能整合到一个软件,或是把软件的各部分组合在一起成为一个可执行的软件,为确保整合软件的质量需要集成测试,它更关注的是()。
A.模块间的调用
B.方法内部语句是否正确
C.对象之间的消息传递
D.不同模块的可组合性
答案BCD对的
程序填空题
第一大题
设计一个名为Triangle的类来扩展GeometricObject类。该类包括:
三个名为side1、side2和side3的double数据域表示这个三角形的三条边,它们的默认值是1.0。
一个无参构造方法创建默认的三角形。
一个能创建带制定side1、side2和side3的三角形的构造方法。
所有三个数据域的访问器方法。
一个名为getArea()的方法返回这个三角形的面积。
一个名为getPerimeter()的方法返回这个三角形的周长。
一个名为toString()的方法返回这个三角形的字符串描述,返回的信息包括三角形的颜色、是否填充和三条边的边长。
编写一个测试程序,提示用户输入三角形的三条边、颜色以及一个boolean值表明该三角形是否填充。
程序应该使用输入创建一个具有这些边并设置color和filled属性的三角形。程序应该显示面积、边长、颜色以及表明是否填充的真或者假的值。
import java.util.Scanner;
class GeometricObject {
private String color = ____"white"___
;
private boolean filled;
private java.util.Date dateCreated;
public ________GeometricObject______() {
_____dateCreated__= new java.util.Date();
}
public GeometricObject(_String color, boolean filled___
) {
dateCreated = new java.util.Date();
this.color = color;
this.filled = filled;
}
public String ____getColor_____() {
_____return color;__
}
public void _____setColor____(String color) {
____this.color = color;__
}
public boolean ___isFilled__() {
return ___ filled;____
;
}
public void setFilled(____boolean______ filled) {
this.filled = filled;
}
public java.util.Date getDateCreated() {
return dateCreated;
}
public String toString() {
return "color: " + color + " and filled: " + filled;
}
}
class Triangle ___extends______ GeometricObject{
private ______double______ side1,side2,side3;
public ____Triangle______ {
side1 = 1.0;
side2 = 1.0;
side3 = 1.0;
}
public _Triangle(double side1,double side2,double side3)__ {
this.side1 = side1;
this.side2 = side2;
this.side3 = side3;
}
public double _____getArea_______ (){
double s = (side1 + side2 + side3) / 2;
return _____Math.sqrt(s*(s-side1)*(s-side2)*(s-side3));____
}
public double getPerimeter(){
return _side1+side2+side3;___
}
public _____String _______ toString(){
return ____getPerimeter_______ .toString() + "\nTriangle: side1=" + side1 + " side2=" + side2 + " side3=" + side3;
}
}
public class Main{
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
double side1 = input.nextDouble();
double side2 = input.nextDouble();
double side3 = input.nextDouble();
Triangle triangle = new Triangle(side1, side2, side3);
String color = input.next();
triangle.setColor(color);
boolean filled = input.nextBoolean();
triangle.setFilled(filled);
System.out.println("The area is " + triangle.getArea());
System.out.println("The perimeter is " + triangle.getPerimeter());
System.out.println(triangle);
}
}
第二大题
设计一个名为Square的正方形类。该类包括:
(1)一个名为side的double成员变量,表示这个正方形的边长。
(2)一个无参构造方法,将正方形的边长设置为默认值1.0。
(3)一个带参数的构造方法,参数列表为“double side”,用这个参数的值初始化正方形的边长。
(4)成员变量side的get方法和set方法。
(5)一个名为getArea()的方法返回这个正方形的面积。
(6) 一个名为toString()的方法返回这个正方形的字符串描述。如边长分别为1.0,则返回字符串“Square: side=1.0 area=1.0”。
(7)设计一个测试程序,输入边长x,输出正方形的描述。如输入为3.0,则输出为:Square: side=3.0 area=9.0
所有的成员变量都为私有变量,所有的成员方法都为公共方法。
运行该程序,当输入10时,输出为:
Square: side=10.0 area=100.0
根据设计要求用Java语言编写程序,在以下空格处填上合适的内容:
import java.util.Scanner;
class Square{
private double _____side_______;
public Square(){
side = 1.0;
}
public _________Square______(double side) {
_______________this.side________ = side ;
}
public double getSide() {
_______return side_________
}
public ______void_________________ setSide (double side) {
__________ this.side _____________ = side;
}
public double getArea(){
_______return side*side________________
}
public _____String__________ toString(){
______return “Square:side=”+side+”area=”+getArea()__________
}
}
public class Main{
public static void main(String[] args) {
Scanner input = new Scanner( System.in );
double x = input. nextDouble() ;
Square s = _new Square(x)___
;
System.out.println( s.toString() );
}
}
第三大题
构造一个Vehicle类,表示交通工具。该类包含如下成员:
私有的int类型成员变量speed,表示当前时速(单位为公里每小时,不能是负数)。
带一个int型参数的构造方法,参数用来初始化当前时速的值(如果参数小于0,则将当前时速设为0)。
为speed添加getter()和setter()方法。注意setSpeed(int speed)方法的参数小于0时,将当前时速设为0。
构造一个Car类表示汽车 , 该类继承至Vehicle类。该类包含如下成员:
私有的double类型成员变量distance,表示汽车的已行驶里程;
带一个int型参数的构造方法,用参数的值初始化speed的值,distance设为0。
带一个double型参数的构造方法,用参数的值初始化distance的值,speed设为0。
带一个int型和一个double型参数的构造方法,用参数分别初始化speed和distance的值。
public void increaseSpeed (int differenceInc)方法,将汽车的当前时速增加differenceInc。
public void decreaseSpeed (int differenceDec)方法,将汽车的当前时速降低differenceDec(汽车的当前时速不能小于0)。
public void brake()方法,将汽车的当前时速设为0。
public void driving(int minutes) 方法,汽车以当前时速行驶minutes分钟,将行驶距离递加到distance(如果当前时速为0,提示“当前时速为0,请先加速”)。
该类有一个公共方法toString(),根据汽车的数据生成并返回一个字符串,形式为"Car{当前时速=******,总行驶距离=**}",可以参考输出样例。
_______ import________ java.util.Scanner;
_____class______ Vehicle{
private ____int___ speed;
public ____Vehicle___________ (int speed) {
_________ this.speed = speed;______
}
public int getSpeed() {
_________ return speed;______
}
public void setSpeed(int speed) {
if(____speed<0____ )
this.speed = 0;
else
_____{this.speed=speed;}__________
}
}
class Car ____extends_____ Vehicle{
private double distance;
public Car(int speed) {
___if(speed<0)________
distance = 0;
}
public Car(double distance) {
__this.speed=speed;_______
this.distance = distance;
}
public Car(int speed, double distance) {
_______________
_______________
}
public void increaseSpeed (int differenceInc) {
_______________
}
public void decreaseSpeed (int differenceDec) {
_______________
}
public void brake() {
_______________
}
public void driving(int minutes) {
_______________
System.out.println(_______________);
else
_______________
}
public String toString() {
_______________
}
}
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
Car golf = new Car(input.nextInt(),input.nextDouble());
golf.driving(30);
System.out.println(golf);
golf.decreaseSpeed(80);
golf.driving(30);
System.out.println(golf);
golf.increaseSpeed(50);
golf.driving(30);
System.out.println(golf);
golf.brake();
golf.driving(30);
}
}
第四大题
本题目要求根据注释补全代码。
public class Main
{
public static void main(String[] args)
{
Cat c = new Cat("加菲猫",8);
c.eat();
c.sleep();
JumpCat jc = new JumpCat("跳高猫",3);
jc.eat();
jc.sleep();
jc.jump();
}
}
abstract class Animal
{
private String name;
private int age;
_____ public Animal(){}__________//空参构造
public Animal(String name, int age)
{
this.name = name;
this.age = age;
}
public void setName(String name)
{
this.name = name;
}
public String getName()
{
return name;
}
public void setAge(int age)
{
this.age = age;
}
public int getAge()
{
return age;
}
_____ public abstract void eat();__________//公共的无返回值的抽象方法eat()
_____ public abstract void sleep();__________//公共的无返回值的抽象方法sleep()
}
interface Jumping
{
____ public abstract void jump();___________//公共无返回值的jump()方法
}
class Cat extends Animal
{
public Cat(){}
public Cat(String name,int age)
{
super(name,age);
}
public void eat()
{
System.out.println(getName() + "吃鱼");
}
public void sleep()
{
System.out.println(super.getName() + "侧着睡");
}
}
class JumpCat extends Cat implements Jumping
{
___ public JumpCat(){}____________//空参构造
public JumpCat(String name, int age)
{
super(name,age);
}
public void jump()
{
System.out.println(super.getName() + "跳高");
第五大题
定义一个Person类,该类包括age,name两个数据成员和eat(),work()两个成员方法,并实现对两个数据成员的Getter方法。然后通过测试程序,实现相应对象的操作。程序输出结果如下:
请按提示完善相应的程序。
class Person
{
public int age; //声明公共字段age
__private String name_________; //声明私有字段name
public int getAge() {//实现age成员的Getter方法
return age;
}
public String getName() {//实现name成员的Getter方法
____return name;_______;
}
public void eat() //定义无参数的eat方法
{
System.out.println(__name+"is earing"_________);
}
public void work(String s) //定义带参数的work方法
{
System.out.println("努力创造"+s);
}
public Person(int age, String name) //定义一个带参数构造函数
{
this.age = age;
this.name = name;
}
}
public class Main
{
public static void main(String[] args)
{
Person p = __new Person_________(18, "张三");//调用类的有参构造函数
System.out.println("姓名:"+p.getName()+"\n年龄:" + p.getAge());
____System.out.println("Age:"+p.getAge());p.eat()_______; //调用对象的eat方法
p.work("美好生活");//
}
}
第六大题
设计并实现Box类,它包含盒子的高度、宽带和深度的实例数据:还包含布尔变量full这个实例数据,变量full表示盒子是否满了。所有数据都定义为私有。定义Box构造函数接收并初始化盒子的高度、宽带和深度。每次新创建的Box都为空,构造函数将full初始化为假。该类所有实例都有getter和setter方法;该类还包含了一个计算盒子体积的方法。
该类包含一个toString方法,用来返回一行关于盒子的描述。
例如,输入的长、宽、高分别为4,如果盒子为空,则输出:
Box is empty, The Volumn is 64
若将盒子的宽度修改为5,盒子设置为满,则输出:
Box is full, The Volumn is 80
创建一个测试类BoxTest,其main方法输入盒子的长、宽、高,实例化一个Box对象,并输出盒子的描述。
根据以下的测试类,在空格出填入Box类的设计程序。
______import java.util.Scanner;______
class ___Box_________ {
private boolean _____full_______;
private int width;
private int height;
private int lenght;
public Box(_int full, int width,int height,int lenght___________) {
full = false;
this.width = width;
this.height = height;
this.lenght = lenght;
}
public ______int______ isFull() {
return full;
}
public void setFull(boolean full) {
this.full = full;
}
public int getWidth() {
return width;
}
public void setWidth(int width) {
this.width = width;
}
public int getHeight() {
return height;
}
public void setHeight(int h) {
this.height = height;
}
public int getLenght() {
return lenght;
}
public void setLenght(int lenght) {
this.lenght = lenght;
}
public int getVolumn() {
___return width * height*length;_________
}
@Override
public String ___toString()_________ {
return "Box is " + (full ? "full" : "empty") + ", The Volumn is " + getVolumn();
}
}
public class Main {
public ____static void________ main(String[] args) {
Scanner input = new Scanner(System.in);
int w = input.nextInt();
int h = input.nextInt();
int l = input.nextInt();
Box box1 = ____new Box(w,h,l)________
System.out.println(box1.toString());
box1.setWidth(5);
box1.setFull(____true________);
System.out.println(box1.toString());
}
}
主观题
- 软件静态测试的方式有哪些?说明每种测试的流程。
答案:
1.代码审查(Code Review):对代码进行检查,发现潜在的错误和不规范的代码,以提高代码质量和可维护性。
2.静态分析(Static Analysis):通过对代码进行语法和语义分析,找出代码中的潜在问题和错误。
3. 静态检查(Static Checking):对软件文档、代码和其他相关文档进行检查,以发现问题和错误。
4. 形式化验证(Formal Verification):使用形式化方法对软件进行验证,以确保其满足规格说明和要求。
5,人工检查(Manual Inspection):对软件进行手动检查,以发现问题和错误。
- 请说明字节流、字符流和对象流的特点。
答案:对象流作用:进行对象的序列化和反序列化的操作。
字节流: 一个字节(byte)一个字节的去读取, 或者写出
字节流(stream):针对二进制文件(文本,图片,音频,视频...等)
字符流: 一个字符一个字符的去读取, 或者写出
字符流:针对文本文件,读写容易发生乱码现象,在读写时最好指定编码集为utf-8
所有的字符流都是高级流。
- 用户交互设计的原则有哪些?
答案:
匹配用户体验和用户期望,一致性,功能极简主义,减小认知负荷,提高参与度,可控制、可信任和可探索性,可感知性,易学性,防错原则,功能可见性
- 软件开发模型有哪些?简述这些模型的特点。
答案:
瀑布模型:瀑布模型是最早也是最经典的软件开发模型之一。它将软件开发过程划分为一系列线性的阶段,从需求分析开始,逐步进行设计、编码、测试和维护。每个阶段都具有确定的输入和输出,且各个阶段之间是顺序进行的。瀑布模型的特点是有序、清晰,适用于需求稳定的项目,并且注重文档化。
喷泉模型:喷泉模型是一种以用户需求为动力,以对象为驱动的开发模型。它强调了迭代和交互的开发过程。不同于瀑布模型的线性顺序,喷泉模型中的各个开发阶段可以相互重叠和多次反复,类似于水喷上去又可以落下来。喷泉模型的特点是灵活、交互性强,适用于需求变化频繁的项目。
增量模型:增量模型是一种渐进式的开发模型,将软件开发过程划分为多个增量,每个增量都是完整的软件功能。每个增量都经过需求分析、设计、编码、测试等阶段,逐步实现更多的功能。增量模型的特点是逐步交付、灵活性高,适用于长期项目和大规模项目。
敏捷模型:敏捷模型是一种注重快速开发、迭代和适应性的开发模型。它强调团队合作、用户反馈和持续交付。敏捷模型通过迭代的方式,不断进行需求分析、设计、编码和测试,并在每个迭代结束时交付可用的软件。敏捷模型的特点是灵活、快速响应变化,适用于需求不确定的项目。
- 软件设计的原则有哪些?简述其中含义。
答案:
开闭原则是总纲,它告诉我们要对扩展开放,对修改关闭。
里氏替换原则告诉我们不要破坏继承体系。
依赖倒置原则告诉我们要面向接口编程。
单一职责原则告诉我们实现类要职责单一。
接口隔离原则告诉我们在设计接口的时候要精简单一。
迪米特法则告诉我们要降低耦合度。
合成复用原则告诉我们要优先使用组合或者聚合关系复用,少用继承关系复用。
- 简述敏捷开发的含义和指导思想。
答案:
客户价值至上,团队合作至上,灵活应变至上
敏捷开发是一种以人为本、强调协作、快速交付可用产品的软件开发方法。如今,敏捷开发已经渗透到软件开发的各个领域。后面我们将详细讲述,帮助项目团队提高软件开发的效率和质量。