面向对象技术试题

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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)相融合。

相关文档
最新文档