面向对象技术试题
- 格式:doc
- 大小:50.50 KB
- 文档页数:5
第1章C/C++部分面向对象的三个基本特征,并简单叙述之?1. 封装:将客观事物抽象成类,每个类对自身的数据和方法实行protection(private, protected,public)2. 继承:广义的继承有三种实现形式:实现继承(指使用基类的属性和方法而无需额外编码的能力)、可视继承(子窗体使用父窗体的外观和实现代码)、接口继承(仅使用属性和方法,实现滞后到子类实现)。
前两种(类继承)和后一种(对象组合=>接口继承以及纯虚函数)构成了功能复用的两种方式。
3. 多态:是将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。
简单的说,就是一句话:允许将子类类型的指针赋值给父类类型的指针。
new、delete、malloc、free关系malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符,new会调用对象的构造函数,delete会调用对象的析构函数。
它们都可用于申请动态内存和释放内存。
对于非内部数据类型的对象而言,光用malloc/free无法满足动态对象的要求。
对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。
由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加于malloc/free。
因此C++语言需要一个能完成动态内存分配和初始化工作的运算符new,以及一个能完成清理与释放内存工作的运算符delete。
注意new/delete不是库函数。
什么是“引用”?申明和使用“引用”要注意哪些问题?答:引用就是某个目标变量的“别名”(alias),对应用的操作与对变量直接操作效果完全相同。
声明一个引用的时候,切记要对其进行初始化。
引用声明完毕后,相当于目标变量名有两个名称,即该目标原名称和引用名,不能再把该引用名作为其他变量名的别名。
高中技术考试试题及答案一、选择题(每题2分,共20分)1. 计算机的中央处理器(CPU)主要负责:A. 数据存储B. 数据输入C. 数据处理D. 数据输出答案:C2. 下列哪个不是计算机网络的组成部分?A. 路由器B. 交换机C. 打印机D. 调制解调器答案:C3. 以下哪种编程语言是面向对象的?A. PythonB. JavaC. CD. Ruby答案:B4. 在HTML中,用于定义文档结构的标签是:A. <head>B. <body>C. <html>D. <title>答案:C5. 以下哪个不是操作系统的功能?A. 文件管理B. 设备管理C. 网络通信D. 数据加密答案:D二、填空题(每题2分,共20分)6. 计算机的三大核心部件包括CPU、内存和______。
答案:硬盘7. 在HTML中,用来创建超链接的标签是______。
答案:<a>8. 计算机网络的拓扑结构主要有星型、环型、总线型和______。
答案:树型9. 数据库管理系统(DBMS)的基本功能包括数据定义、数据操作和______。
答案:数据控制10. 面向对象编程中的三大特性是封装、继承和______。
答案:多态三、简答题(每题10分,共30分)11. 请简述什么是数据库的规范化,并说明其目的是什么?答案:数据库的规范化是指按照一定的规则将数据库中的数据组织起来,以减少数据的冗余和提高数据的一致性。
其目的是优化数据库结构,提高数据的存储效率和查询速度。
12. 请解释什么是云计算,并列举至少三种云计算服务类型。
答案:云计算是一种通过网络提供按需访问共享计算资源的服务模式。
它允许用户通过网络访问存储、处理和软件资源,而无需本地服务器或个人电脑。
常见的云计算服务类型包括基础设施即服务(IaaS)、平台即服务(PaaS)和软件即服务(SaaS)。
13. 请简述什么是网络安全,并说明其重要性。
计算机科学与技术考试:2021软件工程真题模拟及答案(2)共153道题1、软件生存周期的()工作和软件可维护性有密切的关系。
(单选题)A. 编码阶段B. 设计阶段C. 测试阶段D. 每个阶段试题答案:D2、确认测试计划是在()阶段制定的。
(单选题)A. 可行性研究和计划B. 需求分析C. 概要设计D. 详细设计试题答案:B3、软件设计一般分为总体设计和详细设计,它们之间的关系是()。
(单选题)A. 全局和局部B. 抽象和具体C. 总体和层次D. 功能和结构试题答案:A4、软件生存周期模型不包括()。
(单选题)A. 瀑布模型B. 对象模型C. 增量模型D. 喷泉模型试题答案:B5、下图是被测模块的流程图。
测试数据为:A=1,B=0,X=3;A=2,B=1,X=1。
判断符合如下哪个等级的逻辑覆盖:()。
(单选题)A. 判定覆盖B. 语句覆盖C. 判定/条件覆盖D. 条件覆盖试题答案:D6、面向对象方法有许多特征,如软件系统是由对象组成的;();对象彼此之间仅能通过传递消息互相联系等。
(单选题)A. 开发过程基于功能分析和功能分解B. 强调需求分析重要性C. 把对象划分成类,每个对象类都定义一组数据和方法D. 对已有类进行调整试题答案:C7、测试的关键问题是()(单选题)A. 如何组织软件评审B. 如何选择测试用例C. 如何验证程序的正确性D. 如何采用综合策略试题答案:B8、瀑布模型的问题是()。
(单选题)A. 用户容易参与开发B. 缺乏灵活性C. 用户与开发者易沟通D. 适用可变需求试题答案:B9、软件质量必须在()加以保证。
(单选题)A. 开发之前B. 开发之后C. 可行性研究过程中D. 分析、设计与实现过程中试题答案:D10、软件可维护性的特性中相互矛盾的是()。
(单选题)A. 可修改性和可理解性B. 可测试性和可理解性C. 效率和可修改性D. 可理解性和可读性试题答案:C11、软件生存周期的()工作和软件可维护性有密切的关系。
软件技术考试试题及答案一、单项选择题(每题2分,共20分)1. 软件工程的主要目标是()。
A. 提高软件的开发效率B. 提高软件的运行效率C. 提高软件的可维护性D. 提高软件的可移植性答案:C2. 在软件开发过程中,需求分析阶段的主要任务是()。
A. 设计软件的总体结构B. 确定软件的功能需求C. 编写软件的详细设计文档D. 进行软件的测试答案:B3. 软件测试的目的是()。
A. 证明软件是正确的B. 发现软件中的错误C. 证明软件没有错误D. 证明软件是可维护的答案:B4. 软件维护不包括以下哪一项()。
A. 纠错性维护B. 适应性维护C. 完善性维护D. 软件的重新开发答案:D5. 面向对象方法中,对象的基本特征不包括()。
A. 抽象B. 封装C. 继承D. 过程化答案:D6. 在UML中,用于表示类和类之间关系的图是()。
A. 用例图B. 类图C. 序列图D. 活动图答案:B7. 敏捷开发方法的核心是()。
A. 需求驱动B. 迭代开发C. 持续集成D. 客户反馈答案:B8. 软件项目管理的主要目标不包括()。
A. 确保项目按时完成B. 确保项目符合预算C. 确保项目符合技术标准D. 确保项目符合艺术标准答案:D9. 在软件设计中,模块化的主要优点是()。
A. 提高运行效率B. 提高开发效率C. 提高可维护性D. 提高可移植性答案:C10. 软件危机主要表现不包括()。
A. 软件项目超时B. 软件项目超预算C. 软件项目质量低D. 软件项目成本低答案:D二、多项选择题(每题3分,共15分)11. 软件工程的基本原理包括()。
A. 抽象B. 模块化C. 逐步求精D. 复用答案:ABCD12. 软件需求分析阶段可能采用的技术和方法包括()。
A. 数据流图B. 用例图C. 状态图D. 流程图答案:ABC13. 软件测试的类型包括()。
A. 单元测试B. 集成测试C. 系统测试D. 验收测试答案:ABCD14. 面向对象设计的原则包括()。
4. 面向对象的分析方法主要是建立三类模型,即( D )。
A) 系统模型、ER模型、应用模型B) 对象模型、动态模型、应用模型C) E-R模型、对象模型、功能模型D) 对象模型、动态模型、功能模型5. 在E-R模型中,包含以下基本成分( )。
A) 数据、对象、实体B) 控制、联系、对象C) 实体、联系、属性D) 实体、属性、操作9.若有一个计算类型的程序,它的输入量只有一个X,其范围是[-1.0, 1.0],现从输入的角度考虑一组测试用例:-1.001, -1.0, 1.0, 1.001.设计这组测试用例的方法是( c )A.条件覆盖法 B.等价分类法C.边界值分析法 D.错误推测法10、详细设计的基本任务是确定每个模块的( d )A.功能B.调用关系C.输入输出数据 D.算法11.设函数C(X)定义问题X的复杂程序,函数E(X)确定解决问题X需要的工作量(时间)。
对于两个问题P1和P2,如果C(P1)>C(P2)显然E(P1)>E(P2),则得出结论E(P1+P2)>E(P1)+E(P2)就是:( a )A.模块化的根据B.逐步求精的根据C.抽象的根据D.信息隐藏和局部化的根据13.面向数据流的设计方法把( D )映射成软件结构。
A.数据流B.系统结构C.控制结构D.信息流14.内聚程度最低的是( A.偶然 )内聚A.偶然 B.过程 C.顺序 D.时间15.确定测试计划是在( D )阶段制定的.A.总体设计 B.详细设计 C.编码 D.测试16.需求分析的产品是( D )A.数据流程图案B.数据字典C.判定表D.需求规格说明书17.数据字典是软件需求分析阶段的最重要工具之一,其最基本的功能是( C )A.数据库设计B.数据通信C.数据定义D.数据维护18.( D )引入了“风险驱动”的思想,适用于大规模的内部开发项目。
A.增量模型B.喷泉模型C.原型模型D.螺旋模型(×)2、系统测试的主要方法是白盒法,主要进行功能测试、性能测试、安全性测试及可靠性等测试。
《软件工程模拟试题及参考答案》(一)一、单向选择题(四选一、每小题3分,共18分)1、面向对象(Object Oriented)方法是将现实世界的事物以对象的方式(B )到计算机世界的方法。
对应映射反映反射2、盒图也称为(D)或Chapin图。
这种表达方式取消了流程线,它强迫程序员以结构化方式思考和解决问题。
流程图框图判定表N-S图3、面向数据的设计方法就是根据问题的数据结构定义一组映射,把问题的数据结构转换为问题解的(A)结构。
程序数据逻辑物理4、人机界面的风格大致经过了(B)代的演变。
三四五六5、以下不属于白盒测试技术的是(D)逻辑覆盖基本路径测试循环覆盖测试等价类划分6、为改正软件系统中潜藏的错误而进行的维护活动称为(A)。
纠错性维护适应性维护改善性维护预防性维护二、填空题(每空2分,共18分)1.文档—一种数据媒体和其上所记录的(数据)。
2.机器语言、汇编语言:依赖于机器,面向(机器)3.软件有效性,指软件系统的时间和(空间)效率。
4.软件定义过程可通过软件系统的(可行性研究)和需求分析两个阶段来完成。
5.软件定义的基本任务是确定软件系统的工程(需求),也就是要搞清“做什么”。
6.为了使用户需求逐步精细化、完全化、一致化,通常采用(需求建模技术)。
7.一个软件的深度是指其控制的(层数)。
8.以详细设计说明书为输入,将该输入用某种程序设计语言翻译成计算机可以理解并最终可运行的代码的过程叫(编码)过程。
9.软件维护是软件生命周期的(最后)一个阶段。
三、判断题(每小题2分,共24分,错误打X、正确打√)1.缺乏有力的方法学的指导和有效的开发工具的支持,这往往是产生软件危机的原因之一。
(√)2.一个好的开发人员应具备的素质和能力不包括具有良好的书面和口头表达能力。
(X)3.在用户需求分析时观察用户手工操作过程不是为了模拟手工操作过程,而是为了获取第一手资料,并从中提取出有价值的需求。
(√)4.快速原型技术的适用于软件产品要求大量的用户交互、或产生大量的可视输出、或设计一些复杂的算法等场合。
软件技术考试试题及答案一、选择题(每题2分,共60分)1.下列哪个不属于面向对象编程的基本特征?A. 封装B. 继承C. 多态D. 循环2.在Java语言中,以下哪个关键字不属于访问修饰符?A. publicB. privateC. protectedD. static3.以下哪种设计模式用于创建对象的复杂过程和创建过程的表现分离?A. 单例模式B. 工厂模式C. 代理模式D. 观察者模式4.在数据库中,以下哪个命令用于查询数据表的记录?A. INSERTB. UPDATEC. DELETED. SELECT5.以下哪个不属于网络通信协议?A. TCPB. IPC. HTTPD. JVM二、填空题(每题3分,共30分)1.JVM是指______________。
2.Java中集成的GUI框架是______________。
3.数据库操作语言的缩写是______________。
4.在Java语言中,异常处理机制使用的关键字是______________。
5.在面向对象编程中,重写父类方法时使用的关键字是______________。
三、简答题(每题10分,共40分)1.请简要解释面向对象编程的特点和优势。
2.请列举并简要解释至少三种常用的关系型数据库类型。
3.请解释什么是MVC架构,并简要说明各个组成部分的作用。
4.请解释Java中线程同步的概念,并说明至少两种实现线程同步的方法。
四、编程题(共30分)实现一个简单的Java程序,接收用户输入的两个整数,计算并输出它们的和。
答案:一、选择题(每题2分,共60分)1. C2. D3. B4. D5. D二、填空题(每题3分,共30分)1. Java虚拟机(Java Virtual Machine)2. Swing3. SQL(Structured Query Language)4. try5. super三、简答题(每题10分,共40分)1. 面向对象编程的特点包括封装、继承、多态和抽象。
7631(8456)JAVA语言与WWW技术 Java语言与面向对象程序设计一、填空题1.编译Java程序需要使用javac命令。
2.Java中的程序代码都必须在一个类中定义,类使用_ class关键字来定义。
3.若int []a={12,45,34,46,23}; ,则a[2]=34。
4.面向对象的三大特征是封装、继承、_和_多态。
5.定义在类中的变量被称为成员变量,定义在方法中的变量被称为局部变量。
6.异常的捕获通常由try、catch两部分组成,try代码块用来存放可能发生异常,catch代码块用来处理产生的异常。
7.String类中用于返回字符串字符个数的方法是length()。
8.JDK中提供了一系列可以存储任意对象的类,统称为集合。
9.在Java中,能实现线程间通信的流是管道流。
10.System.out是PrintStream类的对象,称为标准输出流,调用System类的etOut(PrintStream out)方法可以实现标准输出流的重定向。
11.Java的三大体系分别是Java EE、Java SE、Java ME。
12.Java中的程序代码都必须在一个类中定义,类使用Class关键字来定义。
13.若int []a={12,45,34,46,23}; ,则a[2]= 34 _。
14.Java中的变量可分为两种数据类型,分别是基本数据类型_和引用数据类型。
15.在非静态成员方法中,可以使用关键字This访问类的其它非静态成员。
16.异常的捕获通常由try、catch两部分组成,try代码块用来存放可能发生异常,catch _代码块用来处理产生的异常。
17.被static关键字修饰的成员变量被称为静态变量,它可以被该类所有的实例对象共享。
18.在程序开发中,要想将一个包中的类导入到当前程序中,可以使用import _关键字。
19.System类中所提供的属性和方法都是静态的,想要引用这些属性和方法,直接使用System类调用即可。
2023年软件开发技术考核试题及答案题目一问题:什么是面向对象编程(OOP)?请简要解释。
答案:面向对象编程(OOP)是一种软件开发的编程范式,它将程序设计问题分解为对象的集合,这些对象通过相互之间的交互来解决问题。
面向对象编程的主要特点包括封装、继承和多态。
题目二问题:请解释什么是异常处理,并提供一个示例。
答案:异常处理是一种在程序执行期间处理错误或异常的方法。
当程序遇到错误或异常情况时,可以使用异常处理来捕获并处理这些问题,使程序能够继续执行或提供合适的错误信息。
例如,在Java程序中,可以使用try-catch语句来捕获并处理异常。
示例:try {int result = divide(10, 0); // 除数为0,会抛出异常System.out.println("结果:" + result);} catch (ArithmeticException e) {System.out.println("除数不能为0");}public int divide(int num1, int num2) {return num1 / num2;}题目三问题:请解释什么是数据库事务,并提供一个示例。
答案:数据库事务是指一组数据库操作序列,对于这组操作要么全部成功执行,要么全部回滚。
事务可以确保数据库的一致性和完整性。
示例:START TRANSACTION; -- 开始事务INSERT INTO users (name, age) VALUES ('John', 25); -- 插入数据UPDATE accounts SET balance = balance - 100 WHERE user_id = 1; -- 更新数据题目四问题:请解释什么是软件测试,并提供一个示例。
答案:软件测试是指用来评估和改进软件质量的过程。
软件测试旨在发现软件中的错误、缺陷和问题,并确保软件在正常使用中的功能恰当。
2024年重庆高职分类考试信息技术模拟试题
1. 下列哪种编程语言是面向对象的编程语言?
A. C
B. Java
C. Python
D. C++
2. 在计算机网络中,ARP协议用于实现什么功能?
A. 路由寻址
B. 流量控制
C. 拥塞控制
D. 地址解析
3. 下列关于IP地址的说法中,正确的是?
A. IP地址由二进制数组成
B. IP地址由主机名和域名组成
C. IP地址由网络号和主机号组成
D. IP地址由点分十进制数表示
4. 在数据库中,关系的完整性是指什么?
A. 关系中的记录要有一定顺序
B. 关系中的字段要有一定顺序
C. 关系中的数据要完整无缺
D. 关系中的数据要准确无误
5. 下列哪个设备属于输入设备?
A. 显示器
B. 键盘
C. 打印机
D. 硬盘
6. 在计算机中,存储容量的基本单位是?
A. 比特
B. 字节
C. 字
D. 千字节
7. 计算机网络中,防火墙的作用是什么?
A. 提高网络传输速率
B. 保证网络安全
C. 扩展网络规模
D. 增加网络连接数量
8. 下列哪个协议是用于传输网页内容的?
A. HTTP
B. DNS
C. FTP
D. SMTP
9. 下列哪个文件扩展名通常表示音频文件?
A. .jpg
B. .mp3
C. .docx
D. .pdf
10. 在Windows操作系统中,回收站的功能是什么?
A. 保存最近删除的文件和文件夹
B. 弹出可移动磁盘
C. 显示计算机所有驱动器的属性
D. 清空硬盘上的无用文件。
UML面向对象技术期末复习整理UML面向对象技术期末复习整理第一章1、UML支撑软件整个生命周期2、对象:面向对象系统的基本构造块,是一些相关的变量和方法的软件集3、事件:指一种由系统预先定义而由用户或系统发出的动作4、面向对象的基本特征:抽象,封装,继承,多态5、模型:对现实客观世界的形状或状态的抽象模拟和简化6、UML定义:是对软件密集系统进行可视化建模的一种语言,也是为面向对象开发系统的产品进行说明、可视化、构造和编制问的一种标准语言7、UML可贯穿软件开发周期的每一阶段,最适用于数据建模、业务建模、对象建模、组件建模填空题1、统一建模语言UML是绘制软件蓝图的标准工具语言,可以对软件系统产品进行说明、可视化、构造和编制文档2、UML在实际软件项目中,可以用于构造各种类型系统的业务模型和软件模型。
3、软件的开发模式有瀑布模型、喷泉模型、基于构件的开发模型和XP方法。
4、面向对象程序的三大要素是多态、封装和继承。
5、瀑布模型的缺点是缺乏灵活性,特别是无法解决软件需求不明确或不准确的问题。
选择题1、对象程序的基本特征是:抽象、封装、继承、多态2、类包含的要素有:名字、属性、操作3、下列关于类与对象的关系说法不正确的是:有些对象是不能被抽象类的4、面向对象方法中的继承机制是子类可以自动地拥有(复制)父类全部属性和操作5、建立对象的动态模型一般包含的步骤有:准备脚本、确定事件、准备事件跟踪表、构造状态图第二章1、UML的概念和模型分为静态结构、动态行为、实现构造、模型组织和扩展机制这几个机制2、面向对象的事物分为:结构事物、行为事物、分组事物、注释事物3、结构事物是UML模型中的名词部分,结构事物分为:类、接口、协作、用例、主动类、构件和结点4、行为事物是指UML模型的相关动态行为,是UML模型的动态部分,它可以用来描述跨越时间和空间的行为。
行为事物是分为:交互和状态机。
5、分组事物:UML对模型中的各种组成部分进行事物分组的一种机制。
1、请将传统方法和面向对象方法进行比较。 答: 2、为什么要有设计模式,谈谈你对设计模式的理解。 3、设计类测试用例时需要考虑哪些方面? 4、你能想到模板方法模式在代码编写中或者生活实践中的那些应用?试举1个例子,用模式图加文字说明。 5、你能想到状态模式在生活实践中的有哪些应用?试举1个例子,用模式图加文字说明。第七章7.7 6、请比对CORBA、EJB和COM技术的优缺点,以及三种技术方案的选择方式和各自的应用环境。
第一题:答:(1)传统的面向过程方法:是结构化设计与分析吗?如是,在第一章绪论
PPT 11页开始,到17页左右。有些直接抄标题,像类型的。 (2)面向对象,就是以对象观点来分析现实世界中的问题。从普通人认识世界的观点出发,把事物归类、综合,提取其共性并加以描述。其基本思想是从现实世界中客观存在的事物(即对象)出发来构造系统并在系统中尽可能运用人类的自然思维方式。 面向对象方法的主要特点: (a)从问题域中存在的客观事物来抽象对象,并以此作为构造软件系统的基本构成单位。(b)事物的静态特征由对象的属性来表示;事物的动态特征由对象的方法来表示。(c)对象的属性和方法结合为一体,成为一个独立的实体,对外屏蔽其内部细节,也即封装。(d)对事物分类,具有相同属性和方法的对象归为一类,类是这些对象的抽象描述,每个对象是它所属类的一个实例。 (e)通过较多或较少地忽略事物之间的差异,来实现不同程度上的抽象,以得到较一般的类和较特殊的类,特殊类继承一般类的属性和方法。(f)复杂的对象可以把简单对象作为其构造成分,也即聚合。(g)对象之间通过消息进行通信。(h)用关联来表达对象之间的静态关系。 面向对象的优势:(a)生产效率高,(b)优良的可复用性(c)面向对象方法对软件复用的支持。 与传统的面向过程方法相比:(a)面向对象方法是从现实世界中客观存在的事物(即对象)出发来构造软件系统;(b)在系统构造中尽可能运用人类的自然思维方式;(c)强调直接以问题域(现实世界)中的事物为中心来思考问题、认识问题;(d)根据事物本质特点,将其抽象为对象,作为系统的基本构成单位;(e)这可以使系统直接地映射问题域,保持问题域中事物及其相互关系的本来面貌。
第二题:答:也许有人会问:“为什么要学习设计模式呢?”原因有很多,一些非常明显,
而另一些则不那么明显。 学习模式最常见的理由是因为我们可以借其: ● 复用解决方案——通过复用已经公认的设计,我能够在解决问题时取得先发优势,而且避免重蹈前人覆辙。我可以从学习他人的经验中获益,用不着为那些总是会重复出现的问题再次设计解决方案了。
● 确立通用术语——开发中的交流和协作都需要共同的词汇基础和对问题的共识。设计模式在项目的分析和设计阶段提供了共同的基准点。
模式还为我们提供了观察问题、设计过程和面向对象的更高层次的视角,这将使我们从“过早处理细节”的桎梏中解放出来。 等你读完本书的时候,我希望你将同意这是学习设计模式的最重要的原因之一。它将改变你的思维定式,使你成为更加高效的分析人员。
为了说明这一优点,我想引述一段两个木匠之间关于“如何为橱柜制作抽屉”的谈话。 想像一下,有两个木匠在讨论怎样为橱柜制作抽屉。 木匠甲:你认为我们应该怎样制作这些抽屉? 木匠乙:这个嘛,我想榫子应该这样做:在木料上直着锯下去,然后向回转45°再锯,接着再直着锯,然后换一个方向45°往回锯,接着再直着锯下去,然后……
现在,你要做的就是搞清楚他们说的是什么意思! 这段描述是不是让人不知所云?木匠乙到底给出了什么建议?细节往往就是如此!让我们试着将他的叙述画出来。
这听上去像不像似曾相识的代码评审?在评审中有一位程序员这样描述自己的代码: 然后,我在这里用一个WHILE 循环来……接着是一系列IF语句执行……这里我用一条SWITCH语句处理……
你获得的是对代码细节的描述,而对“程序到底要做什么”、“为什么这么做”,你却毫无头绪! 当然,正经的职业木匠可不会这样说话。真实的情形应该是这样: 木匠甲:我们应该用鸠尾榫还是斜榫? 看到这里的本质区别没有?木匠们现在讨论的是一个问题的解决方案上的本质差异,他们的讨论层次更高、也更抽象了,从而避免了陷入具体解决方案的细节泥沼中。
当木匠谈到“斜榫”时,他的脑子里已经对这个解决方案浮现出如下特征: ● 它是一个更简单的解决方案——斜榫更容易制作。只需将制作榫的木料锯出45°斜面,然后用钉子或者木胶接合起来即可。
● 它更轻型——斜榫比鸠尾榫强度低。在重压下,将无法保持榫接。 ● 它不太引人注目——斜榫的一个锯面,与鸠尾榫的多个锯面相比,更不显眼。 当木匠谈到“鸠尾榫”时,他的脑子里浮现出另一些特征。这些特征对外行来说可能并不明显,但任何一位木匠都会明白如故:
● 它是一个更复杂的解决方案——制作鸠尾榫涉及的问题更多。因此,它的成本也更高。 ● 它不容易受温度和湿度影响——当温度和湿度变化时,木材会膨胀或收缩,但是,鸠尾榫仍然能够保持坚固。
● 它与紧固系统无关——事实上,鸠尾榫甚至不需要依赖胶水。 ● 它看上去更赏心悦目——如果制作精良,会很美观。 也就是说,鸠尾榫是一个坚固、可靠、美观的榫,但制作复杂(所以成本也比较高)。 所以,当木匠甲这样问的时候: 我们应该用鸠尾榫还是斜榫? 他真正要问的问题是: 我们是应该用一个制作昂贵但美观耐用的榫,还是应该只用一个制作快速而且不美观的榫,能坚持到检查结束就行? 我们应该说,木匠们的讨论其实是在两个层次上进行的:他们话语表面上的层次,和谈话真正的内容,层次更高,外行听不出来,而其中含义却非常丰富。这种更高的层次就是“木匠模式”的层次,它反映了木匠眼中的真正的设计问题。
在第1种情形中,木匠乙讨论的是榫的实现细节,反而使真正的问题模糊不清。在第2种情形中,木匠甲要根据榫的成本和接合性质来决定使用哪种榫。
谁更有效率呢?你更愿意与谁一起工作? 当我说“模式有助于提高思考层次”时,其中就蕴涵着这一层含义。从本书后面的内容中你将了解到,如果能够这样提高自己的思考层次,新的设计方法也将浮现出来。这正是模式真正的威力所在。
第三题:目前,面向对象软件测试用例设计方法,还处于研究和发展阶段。与传统的
软件测试不同的是。面向对象测试更关注于设计适当的操作序列以检查类的状态。设计测试用例有以下几个要点:
(1) 应该唯一标识每一个测试案例, 并且与被测试的类明显地建立关联; (2) 陈述测试对象的一组特定状态; (3) 对每一个测试建立一组测试步骤,要思考或确定的问题包括:对被测试对象的一组特定状态,一组消息和操作,考虑当对象测试时可能产生的一组异常,一组外部条件,辅助理解和实现测试的补充信息。设计类测试用例1.类级随机测试2. 类级划分测试测试类间测试用例:1. 基于场景的测试2. 行为测试。
第四题:PPT 第四章28页 模版方法(Template Method):定义了一个算
法的步骤,并允许子类别为一个或多个步骤提供其实现方式。让子类别在不改变算法架构的情况下,重新定义算法中的某些步骤 。
第五题:PPT 第七章 7.7 120页,例子不会举,和同学讨论一下吧。
第六题:请比对CORBA、EJB和COM技术的优缺点,以及三种技术方案的选择方式
和各自的应用环境。 (1)各自优缺点:(A) CORBA具有如下突出特点: 对象类较之于传统软件的功能模块而另具有的优点是: (a) 易于理解,具有完整的语义特征; (b) 易于扩充和修改,具有较高的通用性和适应性; (c) 易于构造组装,具有规范的外部接口。 CORBA具有如下突出特点: (a)分布计算技术和面向对象编程技术(Object Oriented Programming,OOP)相融合。 (b)引入了“代理”的概念。 (c)客户端程序与服务器端程序的完全分离。 (d)提供了“软件总线”的功能。 (e)设计原则和设计方式的层次化。 (B) EJB具有以下特点: (a) EJB以构件的形式组织服务器:EJB构件是直接用Java语言编写的服 务器构件,Java语言编写的跨平台特性使得EJB构件可以方便地移植到各 种操作系统平台和EJB服务器上; (b) EJB构件实现仅需考虑应用需求,其系统级服务诸如事务管理、安全 性、构件生命周期和线程等,都通过EJB服务器自动进行管理的; (c) EJB体系结构具有面向对象、分布式、跨平台、可扩充性、安全性以 及便于开发等优点,同时它还是以协议为中心的,任何协议都可以被利 用。 (C) COM有以下好处:(a)即插即用(b)二进制重用(c)分布式应用(d)COM与语言无关(e)与平台无关。 COM有以下特性:(a)COM是一种规范。COM规范描述了为创建能共同操作的组件而必须遵守的标准。这个标准描述了COM是什么和它们是如何运转的,以及说明了如何可动态交替更新组件。(b)COM是一套服务。(c)COM是面向对象的。(d)COM能够容易的用户化和升级你的应用程序。。(e)COM能够分布式应用。(f)COM组件可以用任何语言编写。
(2)选择方式?(A) ? (B) EJB构件模型给开发者提供了以下的支持:1. 构件包含应用程序逻辑 2. 可重用的构件 3. 可伸缩性 4. 资源管理 5. 事务支持 6. 并发性管理 (C)? (3)使用环境:(A)CORBA用于在不同进程(程序)之间,甚至是不同物理机器上的进程之间通讯。(B)EJB详细地定义了一个可以方便地部署Java构件的服务框架模型,用于创建可伸缩、多层次、跨平台、分布式的应用,并可创建具有动态扩展性的服务器端的应用(C)COM是一种以组件为发布单元的对象模型,这种对象模型使各软件组件可以用一种统一的方式进行交互。COM不仅定义了组件程序之间进行交互的标准,也提供了组件程序运行所需的环境。