当前位置:文档之家› 软件设计模式试题集 含答案

软件设计模式试题集 含答案

软件设计模式试题集 含答案
软件设计模式试题集 含答案

设计模式试题

一.选择

1. 设计模式具有的优点()。

A.适应需求变化 B.程序易于理解

C.减少开发过程中的代码开发工作量 D.简化软件系统的设计

2. 设计模式一般用来解决什么样的问题( )。

A.同一问题的不同表相 B 不同问题的同一表相

C.不同问题的不同表相

D.以上都不是

3. 设计模式的两大主题是( )。

A.系统的维护与开发

B.对象组合与类的继承

C.系统架构与系统开发

D.系统复用与系统扩展

4. 以下哪些问题通过应用设计模式不能够解决。()

A)指定对象的接口B)针对接口编程

C)确定软件的功能都正确实现D)设计应支持变化

二.填空

1. 模式的基本要素包括名称、意图、问题、解决方案、参与者和协作者、(效果)、实现、GoF 参考。

2. 设计模式基本原则包括:开闭原则,(从场景进行设计的原则),包容变化原则。

3. 设计模式是一个(抽象)的方案,它可以解决一类问题。

4. 1. 在设计模式群体中,效果是指(原因和结果)。三.

判断

1. 适配器模式属于创建型模式。错

2. 在设计模式中,“效果”只是指“原因和结果”。对

3. 设计模式使代码编制不能真正工程化。错

4. 设计模式的两大主题是系统复用与系统扩展。对四.

名词解释

1. 设计模式

是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。

2. 模板

模式定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。

3. 模式

就是解决某一类问题的方法论。把解决某类问题的方法总结归纳到理论高度,那就是模式。

4. 内聚度

模块内部各成分彼此结合的紧密程度。五.简答

1. 什么是设计模式?设计模式的目标是什么?设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码

设计经验的总结。使用设计模式是为了可

重用代码、让代码更容易被他人理解、保证代码可靠性。

2. 设计模式的基本要素有哪些?

名称,意图,问题,解决方案,参与者和协作者,效果,实现,GOF 参考。

3. 设计模式中一般都遵循的原则有什么?

开-闭原则,根据场景进行设计原则,优先组合原则,包容变化原则。

4. 四人团针对“创建优秀面向对象设计”建议了哪些策略?

针对接口编程,优先使用对象组合而不是类继承,找到并封装变化点。

第6 章 facade(外观)模式

一.选择

1. 外观模式的作用是()。A.当不能采用生成子类的方法进行扩充时,动态地给一个对象添加一些

额外的功能。B.为了系统中的一组功能调用提供一个一致的接口,这个接口使得这一子系统更

加容易使用。

C.保证一个类仅有一个实例,并提供一个访问他的全局访问点。 D.在方法中定义算法的框架,

而将算法中的一些操作步骤延迟到子类中实现。

2. Fa?ad e(外观)模式的意图是()。

A. 希望简化现有系统的使用方法,你需要定义自己的接口。

B. 将一个无法控制的现有对象与一个特定借口相匹配。

C. 将一组实现部分从另一组使用它们的对象中分离出来。 D.你需要为特定的客户(或情况)

提供特定系列的对象。

3. ()模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。

A. Adapter(适配器)模式

B. Bridge(桥接)模式

C. Strategy(策略)模式

D.Facade (外观)模式

4. 下面属于结构模式的有()。

A 观察者模式(Observer) B.单例模式(Singleton)

C.策略模式(Strategy)

D.外观模式(Fa?ade)

二.填空

1. Facade 模式可以用来(隐藏)系统。该模式能够将系统作为自己的私有成员包含进来。

2. Fa?ade模式要解决的问题:只需要使用一个复杂系统的一个(子集)。或者,需要用一种特殊的方式与系统交互。

3. Fa?ade模式不仅可以为方法调用创建更(简单)的接口,还可以减少客户必须处理的对象数量。

4. Fa?ade 外观模式的解决方案是向客户展现使用现有系统的一个新的(接口)。

三.判断

1. Fa?ade(外观)模式不仅可以为方法调用创建更简单的接口,还可以减少客户必须处理的对象数量。对

2. 外观模式,当不能采用生成子类的方法进行扩充时,动态地给一个对象添加一些额外的功能。错

3. Fa?ade模式为子系统中的一组接口提供的界面可能不一致。错

4. Fa?ade外观模式只能为方法调用创建更简单的接口,不能减少客户必须处理的对象数量。错四.

名词解释

1.Fa?ade模式模式定义了一个高层接口,使得这一子系统更加容易使用,为子系统中的一组接口提供一个一

致的界面。

2. 接口

包含了一系列不被实现的方法,而把这些方法的实现交给继承它的类。

3. 组合一个类是另一个类的组成成分。

4. 耦合度对模块间关联程度的度量。五.简答

1. Fa?ade(外观)模式解决问题的方案是什么?如何实现?

Fa?ade向客户展现使用现有系统的一个新的接口。如何实现:定义一个(或一组)新的类来封装所需的接口。让新的类使用现有的系统。

2. 请简要说明在一个复杂系统中应用Fa?ade(外观)模式的优点。当拥有一个复杂的系统时,F a?ade(外观)模

式使我们只需要使用它的一部分功能。最终我们将得到一个更简

单,更容易使用的或根据我们的需要定制的系统。

3. Fa?ade模式的意图是什么?

望那个简化现有系统的使用方法,需要定义自己的接口。

4. 在Facade 模式中,客户是如何使用子系统的?

六.应用题

1. 请论述在一个系统中应用Fa?ade(外观)模式的必要性,并给出一种解决方案。Fa?ade(外观)模式不仅可以

为方法调用创建更简单的接口,还可以减少客户必须处理的对象数量。举个例子。

假设有一个Client 对象,这个对象必须处理Database、Model、Element 类的对象。Client 必须首先通过Database 对象打开数据库,以得到一个对Model 对象的引用,然后再向Model 对象请求一个Element 对象,最后向Element 对象查询所需的信息。而如果能创建一个DatabaseFacade 类,让Client 对象向它发出请求,那么上面的过程可能就会变得简单一些。

2. 请举例说明Facade 模式和Adapter 模式使用场景的差异,并说明它们的解决方案及表现的特点。

第7 章 Adapter(适配器)模式一.

选择

1. Adapter(适配器)模式的意图是()。

A. 希望简化现有系统的使用方法。你需要定义自己的借口。B.将一个无法控制的现有对象与

一个特定借口相匹配。

C. 将一组实现部分从另一组使用它们的对象中分离出来。 D.你需要为特定的客户(或情况)

提供特定系列的对象。

2. 下面不属于创建型模式的有()。

A.抽象工厂模式( Abstract Factory )B.工厂方法模式(Factory Method)

C.适配器模式(Adapter)D.单例模式(Singleton)

3. 将一个类的接口转换成客户希望的另一个接口。这句话是对下列哪种模式的描述()。

A.策略模式(Strategies) B.桥接模式(Bridge)

C.适配器模式(Adapter)D.单例模式(Singleton)

4. 以下关于结构型模式说法不正确的是。()A)结构型模式可以在不

破坏类封装性的基础上,实现新的功能。B)结构型模式主要用于

创建一组对象。C)结构型模式可以创建一组类的统一访问接口。

D)结构型模式可以在不破坏类封装性的基础上,使得类可以同不曾估计到的系统进行交互。二.

填空

1. 适配器模式,分为类的适配器和对象的适配器两种实现。其中类的适配器采用的是继承关系,而对象适配器采用的是(组合聚合)关系。

2.Adapter 模式有两种类型有:对象Adapter 模式、(类Adapter 模式)。

3. UML 是一种用来创建(程序模型)的图像语言。

4. (Adapter 适配器)模式使原本接口不兼容而不能一起工作的类可以一起工作。

5. 适配器模式,分为类的适配器和对象的适配器两种实现。其中类的适配器采用的是(继承)关系,而对象适配器采用的是组合聚类关系。

三.判断

1. 对象适配器模式是合成聚合复用原则的典型应用。对

2. Adapter 模式使原本由于接口不兼容而不能一起工作的那些类可以一起工作。对

3. Fa?ade模式和Adapter 模式是相同类型的包装器。错

4. Adapter 模式不是必须针对某个接口进行设计。错

四.名词解释

1.Adapter 模式

将一个类的接口转换成客户希望的另外一个接口。Adapter 模式使原本由于接口不兼容而不能一起工作的那些类可以一起工作。

2.对象Adapter 模式

使用 Adapter 模式与适当的抽象类相匹配,它通常依赖于一个对象(适配对象)包含另一个对象(被适配对象)。

3.类Adapter 模式

当实现Adapter 模式的方法是使用多重继承。在这种情况下,它被成为类Adapter 模式。

4. 多态

相关的对象按照各自类型来实现方法的能力。五.

简答题

1. 给出Adapter 模式的定义及意图。

意图是将一个类的接口转换成客户希望的另外一个接口。Adapter 模式使原本由于接口不兼容而不能一起工作的那些类可以一起工作。

2. Adapter 模式的最常见的用法是什么?该模式可以使你不用操心什么方面?

Adapter 模式最通常的用途就是保持多态。Adapter 模式让我们在进行设计时不必再担心现存类的接口问题。

3. Adapter 模式问题的解决方案以及如何实现?

解决方案是Adapter 模式用我们需要的接口对无法修改的类进行包装。实现:将现存的类包含在另一个类之中。

包容类与需要的接口相匹配,并调用被包容类的方法。4.

请简要说明在软件设计中设计模式的作用?

软件设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类编目的代码设计经验的总结。使用设计模式是为了适应需求变化、可重用代码、让代码更容易被他人理解、保证代码的可靠性。

六.应用题

1. 根据你的理解,请分析Fa?ade模式比Adapter 模式的相同点和不同点,并说明它们在实际应用中的差异?在两

个模式中,都拥有现存的类,但是在Fa?ade模式中,无须针对某个接口进行设计;而在Adapter 模式中

则必须针对某个特定接口进行设计。在Fa?ade模式中,动机是简化接口,而在Adapter 模式中,尽管也是越简单越好,目的是针对一个现有的接口进行设计,并不能简化任何东西,即使可能有另一个更简单的接口。总之,在实际应用中,Fa?ade模式简化接口,而Adapter 模式将接口转换成另一个现有的接口。

2. 请说明什么是Adapter 模式,Adapter 模式有哪几种形式?请举例说明?

第8 章扩展我们的视野

第9 章 Bridge(桥接)模式一.选

1. 关于继承表述错误的是:()。A.继承是一种通过扩展一个已有对象的实现,从而获得新功能的

复用方法。 B.超类可以显式地捕获那些公共的属性和方法。子类则通过附加属性和方法来进行

实现的扩展。 C.在一定意义上说破坏了封装性,因为这会将父类的实现细节暴露给子类。D.继

承本质上是“白盒复用”,对父类的修改,不会影响到子类。

2. 在不破坏类封装性的基础上,使得类可以同不曾估计到的系统进行交互。主要体现在()。

A 外观模式(Facade)

B 装饰模式(Decorator)

C 策略模式(Strategies)

D 桥接模式(Bridge)

3. 行为类模式使用()在类间分派行为。

A 接口

B 继承机制

C 对象组合

D 委托

4. 下面的类图表示的是哪个设计模式?()。

A 抽象工厂模式(Abstract Factory)

B 观察者模式(Observer)

C 策略模式(Strategies)

D 桥接模式(Bridge)

5. Bridge(桥接)模式的意图是()。

A. 希望简化现有系统的使用方法。你需要定义自己的借口。 B.将一个无法控制的现有对象与一个特定借口相

匹配。

C. 将一组实现部分从另一组使用它们的对象中分离出来。D.你需要为特定的客户(或情况)提供特定系列的

对象。

6. 按照四人团的说法,Bridge 模式的意图是( )。

A. 将抽象部分与它的实现部分相分离,使它们可以独立地变化.

B. 将抽象部分与它的实现部分相分离,但它们不能独立地变化.

C. 将抽象部分与它的实现部分相结合,但它们可以独立地变化.

D. 将抽象部分与它的实现部分相结合,使它们相互依赖.

7. 以下叙述不对的是( )。

A. Bridge 模式是将抽象部分与它的实现部分分离,使它们可以独立地变化.

B. Bridge 模式是发现并封装不同点的极好例子.

C. Bridge 模式优先使用继承而不是组合.

D. Bridge 模式优先使用组合而不是继承.

8. 以下叙述不对的是( )。

A. 学习设计模式告诉我们要尽可能使用继承.

B. 学习设计模式通常可以找到比仅采用面向对象方法更好的解决方案.

C. 学习设计模式告诉我们要尽可能使用组合.

D. Bridge 模式适用于一个抽象部分拥有不同的实现部分的情形

9. 对Alexander 的模式哲学,以下叙述正确的是( )。

A 学习设计模式,可以完全解决软件开发中的变化情况.

B. 每个模式,可以无数次使用模式提供的解决方案,而不必再次重复同样的工作方式.

C. 设计模式总是可以为需求的变化提供更好的解决方案.

D. 设计模式描述一个在开发的软件环境中不断产生新的问题时,能提供很好的解决方案.

10. 根据Coplien 关于共同点/变化点的说法,下面哪个是正确的( )。

A. 共同点分析就是寻找一个不会随时间变化的结构,而变化点分析就是捕捉变化的内容.

B. 共同点分析是寻找家族成员的相同元素.

C. 在一个系统中,共同点和不同点的关系是相对的,可以互相转化.

D. 共同点通常由父类实现,而变化点通常由子类实现.

二.填空

1. 在存在继承关系的情况下,方法向超类方向集中,而数据向(子类)方向集中。

2. 当存在一个抽象有不同实现时Bridge 模式最为有用,它可以使抽象和(实现)相互独立地进行变化。

3. (类型的封装)是通过多态使用具有派生类的抽象类实现的。

4. 在进行设计以应对变化的过程中,应该遵循两条基本策略:找出变化并(封装变化点);优先使用对象组合,而不是类继承。

5. C++中,必须用一个定义(公共接口)的抽象类来实现Bridge 模式的实现部分。

6. 为了提高内聚和(松耦合),我们经常会抽象出一些类的公共接口以形成抽象基类或者接口。

7. 封装性好的代码更容易测试,因为它与其他代码没有(耦合)。

8. Bridge(桥接)模式是将抽象部分与它的实现部分分离,其中(实现部分)是指用来实现抽象类的派生类的对象。

9. 在进行设计以应对变化的过程中,应该遵循两条基本策略:找出变化并封装变化点;优先使用对象(组合),而不是类继承。

三.判断

1. 为了提高内聚和紧耦合,我们经常会抽象出一些类的公共接口以形成抽象基类或者接口。错

2. 继承本质上是“白盒复用”,对父类的修改,不会影响到子类。错

3. 继承是一种通过扩展一个已有对象的实现,从而获得新功能的复用方法。对

4. 即使在不知道如何实现Bridge(桥接)模式时,你也可以判断出在这种情况下这个模式是适用的。对

5. 在创建设计以处理变化的过程中,应该优先使用类继承,而不是使用对象组合。错

6. 只有在共同点分析定义的上下文中,变化点才有意义。对

7. 变化点就是领域问题的特殊情形,而共同点则是指一般情形。错

8. Bridge 模式就是为系统提供一种高内聚,松耦合的解决方案。对

9. 当需要增加系统的功能时,应当采用Bridge 模式。错

10. 封装就是指数据隐藏。错

四.名词解释

1. 抽象是指不同事物之间概念上的联系方式。

2. 重构修改代码改进结构但不增加新功能,就是所谓重构。

3. 内聚性指的是例程中操作之间联系的紧密程度。

4. 耦合性指的是两个例程之间联系的紧密程度。

5. Bridge(桥梁)模式将抽象化与实现化脱耦,使得二者可以独立的变化就是说将他们之间的强关联变成弱关联,

也就是指在一个软

件系统的抽象化和实现化之间使用组合/聚合关系而不是继承关系,从而使两者可以独立的变化。五.简答

1. Bridge 模式要解决的基本问题是什么?Bridge(桥接)模式适用于一个抽象部分拥有不同的实现部分的情况,

它让抽象部分和实现部分可以各自独立

的变化。

2. 给出Bridge 模式的定义。采用Bridge 模式的效果是什么?将抽象化与实现化脱耦,使得二者可以独立的变化,

也就是说将他们之间的强关联变成弱关联,也就是指在一

个软件系统的抽象化和实现化之间使用组合/聚合关系而不是继承关系,从而使两者可以独立的变化。效果是:“实

现部分与使用它的对象的分离”增加了灵活性。客户对象不需要了解实现问题。

3. 什么是“一条规则,一个地方”?抽象类经常让自己的方法实际使用实现部分对象。抽象部分的派生类将调用

这些方法。这样如果需要修改,修

改也会容易些,并且在实现整个模式之前让你拥有一个好的起点。

4. 在学习Bridge(桥接)模式的过程中,应该遵循下列处理变化的基本策略是什么?找出变化并封装变化点;

优先使用对象组合,而不是类继承。

5. Bridge(桥接)模式的解决方案是什么,以及如何实现?解决的问题是:为所有的实现部分定义一个接口,让

抽象类的所有派生类使用这个接口。实现:将实现部分封

装在一个抽象类中。在被实现的抽象部分基类中包含一个实现部分基类的句柄。六.应用

1. 根据你对Bridge 模式的理解,概要描述使用该模式的应用要求,并给出相应的设计类图。当存在一个抽象有

不同实现时Bridge 模式最为有用,它可以使抽象和实现相互独立地进行变化。

2. 举例说明使用Bridge 模式的场合,给出在该场合下使用Bridge 模式的解决方案,并说明该解决方案的优点。打印驱动程序是Bridge 模式最典型的例子,也是最适合应用Bridge 模式的场合。Bridge 模式的真正威力在于它能够帮助我们看到什么时候应该从问题域中提取实现。也就是说,有时候有一个实体X 使用系统S,一个实体 Y 使用系统T。我们可能认为X 总是与S 相伴,而Y 总是与T 相伴,因此就将它们联系(耦合)起来。Bridge 模式提醒我们,可以抽象出 S 和 T,这样更好,也就是说,Bridge 模式最有用的地方,是在解耦抽象与实现之前考虑Bridge 模式是否适用。

第10 章 Abstract Factory(抽象工厂)模式

一.选择

1. 静态工厂的核心角色是()。

A.抽象产品

B.具体产品

C.

静态工厂 D.消费者

2. 以下属于创建型模式的是()。

A 抽象工厂模式(Abstract Factory)

B 装饰模式(Decorator)

C 外观模式(Facade)

D 桥接模式(Bridge)

3. 下面的类图表示的是哪个设计模式?()。

A 抽象工厂模式

B 观察者模式

C 策略模式

D 桥接模式

4. Abstract Factory(抽象工厂)模式的意图是()。

A. 希望简化现有系统的使用方法。你需要定义自己的借口。 B.将一个无法控制的现有对象与一个特

定借口相匹配。

C. 将一组实现部分从另一组使用它们的对象中分离出来。D.提供一个创建一系列相关或相互依赖对

象的接口,而无需指定它们具体的类

5. 在根据不同的机器选择设备驱动程序的案例中,以下叙述不准确的是()。

A. 可以使用switch 语句选择驱动程序.

B. 可以使用继承来实现选择驱动程序,但它可能会产生类组合爆炸问题..

C. 可以选择抽象工厂模式实现,且能避免组合爆炸问题.

D. 使用继承的解决方案要比switch 语句有更多的优势.

6. 以下有关 Abstract Factory(抽象工厂)模式正确的是( )。

A Abstract Factory 的实例化方法就是具体工厂方法.

B. Abstract Factory 类和具体工厂方法可以分离,每个具体工厂负责一个抽象工厂方法接口的实现.

C. 由于Abstract Factory 类和具体工厂方法可以分离,因此在实现时会产生更多的类.

D. 当问题存在相同的对象用于解决不同的情形时,应该使用抽象工厂模式.

7. 根据《设计模式》,有关抽象工厂模式的定义,准确的说法是()。

A 工厂方法是一个抽象类的派生类实现的。

B 要创造的东西本身是抽象定义的,工厂方法可以灵活实现。 C.抽象工厂只关注概念,而具体工厂

创建抽象工厂。

D 抽象工厂派生出具体工厂对象和实现方法。

8. 关于抽象工厂模式,以下叙述不正确的是()

A 客户对象不需要知道向谁请求所需的对象和如何使用这些对象。

B 抽象工厂类通过为每个不同类型的对象定义一个方法,来指定实例化哪个对象。

C 具体工厂对象负责指定哪些对象要实例化。

D 将抽象工厂模式和适配器模式结合在一起,可以将概念相似的对象当作同种对象处理。

9. 关于抽象工厂模式( Abstract Factory ),以下叙述正确的是()。

A 抽象工厂相对具体工厂而言,可以理解为抽象工厂是抽象类,而具体工厂是对抽象工厂的继承,是抽象工厂的子类。

B 抽象工厂类不能实例化,具体工厂可以实例化。

C 抽象工厂定义接口,具体工厂实现某一接口。

D 抽象工厂模式将使用哪些对象的规则与如何使用这些对象的逻辑有效地结合起来。

10. 下面属于创建型模式的有()。

A.抽象工厂( Abstract Factory )模式

B.外观(Facade)模式C.适配器

(Adapter)模式D.桥接(Bridge)模式

二.填空

1. (抽象工厂)模式提供了一系列相关或相互依赖对象的接口而无需指定他们具体的类。

2. 工厂模式分为简单工厂,工厂方法,( 工厂方法)三种类型。

3. Abstract Factory 模式就是用来解决这类问题的:要创建一组相关或者(相互依赖)的对象。

4. Abstract Factory 模式强调的是为创建多个相互依赖的对象提供一个(同一的接口)。

5. 我们可以使用(抽象工厂)模式,不同应用程序都使用同一子系统。

6. Abstract Factory 意图提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们(具体的类)。

7. 当一个系统要(独立)于它的产品的创建、组合和表示时适合用Abstract Factory 模式。

8. Abstract Factory 模式为如何创建对象组的每个成员定义(接口)。

9. 抽象工厂模式是定义一个(抽象类),然后为每个组实现一个具体类。

10. Abstract Factory 模式将如何执行对象(实例化)规则从使用这些对象的客户对象提取出来。三.判

1. 抽象工厂模式提供了一系列相关或相互依赖对象的接口且必须指定他们具体的类。错

2. Abstract Factory(抽象工厂)模式确保系统总能根据当前的情况获得合适的对象。对

3. Abstract Factory(抽象工厂)模式中,客户对象不需知道“向谁请求需要的对象”“如何使用这些对象”。错

4. 典型情况下,一个Abstract Factory 对象将针对每种必须实例化的对象拥有一个方法。对

5. 决定需要哪个工厂对象,实际上是判断需要那个系列的对象。对

6. 从本质上看,switch 语句可以达到和抽象工厂相同的效果。错

7. 抽象工厂模式简化了设计过程。错

8. 一个抽象工厂对象总是要和一个具体工厂方法对象相结合。错

9. 抽象工厂模式告诉我们,要针对接口而不是实现进行设计。对

10. 使用抽象工厂方法与优先使用组合是相矛盾的。错

四.名词解释

1. Abstract Factory(抽象工厂)模式就是用来解决这类问题的:要创建一组

相关或者相互依赖的对象。

2. 组合爆炸

随着问题中元素的增加,所出现的可能组合数剧烈增加,形象的说法就是组合爆炸。

3. 封装

任何形式的隐藏。对象对它们的数据进行封装。抽象类对它们派生出的具体类进行封装

4. 抽象类

为一组概念上相似的类定义方法和公共属性。抽象类绝对不能被实例化。

5. 具体类

是能被直接实例化的类、用例、信号、其他类元或其他泛化元素,它也可以用来描述实现的操作。五.

简答题

1.Abstract Factory 的三个关键策略是什么?发现并封装变化点;优先使用对象组合,而不是类继

承;针对接口设计,而不是针对实现设计。

2.采用Abstract Factory 模式的效果是什么?效果:这个模式将“使用哪些对象”的规则

与“”如何使用这些对象“的逻辑相隔离。

3.为什么这个模式被称为“Abstract Factory”?因为它要创建的东西本身是由抽象定义的。工厂各

种变化的实现如何选择,模式并没有具体规定。

4. 如何获得正确的工厂对象?决定需要哪个工厂对象实际上是判断需要哪个系列的对象。如何知道自己需要哪个系

列呢?在类似的案例中,

最可能的是由一个配置文件来告诉我们。然后就可以写几行代码,根据这些配置信息来将合适的工厂对象实例化。5. 在 Abstract Factory(抽象工厂)模式中对象的角色是什么?

客户对象只知道“向谁请求需要的对象”和“如何使用这些对象”。Abstract Factory 类通过“为每种不同类

型的对象定义一个方法来指定”哪些对象可以被实例化。典型情况下,一个Abstract Factor 对象将针对每种必须

实例化的对象拥有一个方法。具体工厂指定哪些对象将被实例化。

六.应用题

1. 请结合抽象工厂模式,说明在实际应用中如何生成正确的对象。决定需要哪个工厂对象实际上与确定使用哪一

组对象是相同的。例如,在驱动程序问题中,有一组低分辨率动

程序和一组高分辨率驱动程序,怎样才能知道自己需要哪一组呢?在类似这样的例子中,很可能通过一个配置文

件获知这一信息。然后可以编写几行代码,根据配置信息将合适的工厂对象实例化。还可以使用Abstract Factory

模式,不同应用程序都使用同一子系统。在这种情况下,工厂对象将传给子系统,告诉子系统将要使用哪些对象,

此时,通常主系统知道子系统需要那一组对象,在调用子系统之前,将实例化正确的工厂对象。

2. 在抽象工厂模式中?有哪两种工厂?它们的作用什么?使用抽象工厂模式有什么优点?

第12 章用模式解决CAD/CAM 问题

一.选择

1. 应用设计模式的一个优点是()。

A.适应需求变化 B.程序易于理解

C.减少开发过程中的代码开发工作量 D.简化软件系统的设计

2. 当我们想创建一个具体的对象而又不希望指定具体的类时,可以使用()模式。

A.创建型

B.结构型 C 行为型 D.以上都可以

3. 实现部分各不相同,但都可以通过一个通用接口被访问是()模式中的包容变化。

A.Bridge

B.Abstract Factory

C.Adapter

D.Facade

4. 以下哪一条是 Alexander 的场景原则:()。

A 在对象实例化之前,要考虑它的实例化。

B 当你有一个涉及创建对象的设计模式时,对象应为模式提供场景。

C 模式的选取与场景无关。

D 在一个系统中,由于模式之间的作用是相互的,不存在最高级别的模式。

5. 最高级别的模式约束其他的模式的不正确的叙述是()。

A 最高级别的模式决定其它模式的作用。

B 最高级别的模式是最重要的,其他的模式是次要的。

C 最高级别的模式为其它模式提供场景。

D 最高级别的模式也可称为场景确定模式。

二.填空

1. 设计模式的思想根源是(开闭)基本原则的宏观运用,本质上是没有任何模式的,发现模式的人永远是大师,而死守

模式的人,最多只能是一个工匠。

2. 模式不仅仅是包容变化,它们还是变化之间的(关联)。

3. 系统中为其他模式确定场景的一个或两个模式,这个模式将对其他模式能做的事进行(约束)。

4. 通常情况下,当一个模式使用另一个模式时,看起来被使用模式是在使用模式的(场景)之中的。

5. 系统中的一个模式经常通过为系统中的其他模式提供(场景)与其他模式相关联。

三.判断

1. 识别可能性不等于必须跟着可能性走。对

2. 认为一个实际不会出现的模式出现会起反作用。错

3. 对象适配器模式是依赖倒转原则的典型应用。错

4. 通过在问题领域中使用模式,可以用一种不同的方式来看待问题。对

5. 当有一个涉及创建对象的设计模式时,这些对象为这个模式提供场景。对

四.名词解释1.

场景

一些事物存在或发生的相互关联的状态。

2. CVA

共同点/变化点分析

3. 场景原则

当有一个涉及创建对象的设计模式时,这些对象为这个模式提供场景。

4. 公开接口

5. 多态五.简

答题

1. 考虑场景时使用的一条原则是什么?

考虑在系统中需要什么,然后再关心如何实现它。这也符合 Alexander 的场景原则:当有一个涉及创建对象的设计模式时,这些对象为这个模式提供场景。

2. 用模式的方法思考的步骤是什么?发现在问题领域中拥有的模式,这些是需要分析的模式;对于这些需要分析的

模式,做下列工作:a.挑出为其

他模式提供最多场景的模式。b. 在我的概念性最高的设计中使用这个模式。c.识别任何可能已经出现的附加模式。将它们添加到“需要分析的模式中”。d.对于需要分析而还未分析的模式,重复上述过程;按照需要将细节添加到设计中。扩展方法和类定义。

3. 场景和被使用模式之间有什么关联?通常情况下,当一个模式使用另一个模式时,看起来被使用模式是在使用模

式的场景之中的。这条规则也可能

有例外,但是看起在大多数时候它都是有效的。4.

什么是“最高模式”?

指系统中为其他模式建立背景的一两个模式。这个模式将约束其他模式的行为。

5. 为一个庞大的工程的CAD/CAM 系统提供支持的基本需求是什么?

创建一个计算机程序,它能读取一个CAD/CAM 数据集并从中提取部件,一个现有的专家系统需要这些部件才能进行智能设计。这个系统应该向CAD/CAM 系统屏蔽专家系统。复杂的是CAD/CAM 系统正处于变化之中。可能有CAD/CAM 系统的多个潜在版本存在,而专家系统需要拥有它们的接口。

六.应用题

1. 在CAD/CAM 问题中,Abstract Factory 模式被排除在“最高”模式之外,请举例说明为什么?

使用Abstract Factory 模式的根本理由在于:如果有一个V1 系统或者V2 系统,需要确保所有的实现对象都是V1 类型或者V2 类型的,但是Model 对象本身已经知道这一点。如果其他对象可以很容易地封装创建规则,就没有必要再实现一个模式。之所以将Abstract Factory 模式保留在模式集合中,是因为第一次解决这个问题时,存在Abstract Factory 模式。这也说明了,认为存在一个其实并不存在的模式,未必会有什么副作用。

第13 章设计模式的原则和策略

一.选择

1. Open-Close 原则的含义是一个软件实体( )。A.应当对扩展开放,对修

改关闭. B.应当对修改开放,对扩展关闭

C.应当对继承开放,对修改关闭

D.以上都不对

2. 典型情况下,()模式不包容变化。

A.Bridge

B.Abstract Factory

C.Adapter

D.Facade

3. 下列属于设计模式基本原则的是( )。

A.继承

B.封装

C.开放-封闭 D 都不是

4. 常用的设计模式可分为()。

A 创建型、结构型和行为型

B 对象型、结构型和行为型

C 过程型、创建型和结构型

D 抽象型、接口型和实现型

5. 以下哪一条不属于设计模式的基本原则()。

A 开放-封闭原则。

B 根据场景进行设计的原则。

C 优先使用继承的原则。

D 包容变化的原则。

二.填空

1. 设计模式基本原则包括:开闭原则,(根据场景进行设计的原则),包容变化原则。

2. 最基本的 UML 图是(类图)。它不仅描述了类,而且说明了类之间的关系。

3. 模块,方法和类应该对扩展是开放的,而对更改是(封闭)的。

4. Alexander 告诉我们要从(场景)进行设计,在设计我们的片段出现的细节之前先创建整体视图。

5. Bridge 模式不仅仅对抽象部分和实现部分的变化进行定义和包容,而且还定义了两个变化之间的(关联)。三.判断

1. 抽象不应该依赖于细节,细节应当依赖于抽象。错

2. 大多数设计模式还让软件更具有可修改性。对

3. Open-Close 原则的含义是一个软件实体应当对扩展开放,对修改关闭。对

4. 常用的设计模式可分为过程型、创建型和结构型。错

5. Adapter 模式和Fa?ade模式总是在别的什么东西创造的场景中被定义。错

四.名词解释

1. 开放-封闭原则模块,方法和类应该对扩展是开放的,而对更改是封闭的。

2. 超类

一个类,其他的类派生自它,包含主要属性的定义,以及所有派生类都将使用(并且可能重载)的方法的定义。

3. 属性与一个对象相关联的数据

4. 成员类的数据和方法

5. 方法与对象相关联的函数五.

简答题

1. 什么是开-闭原则?模块,方法和类应该对扩展是开放的,而对更改是封闭的。换句话说,我们必须将我们的软

件设计成这样:我

们可以在不修改代码的前提下对我们的软件进行扩展。

2. 哪些因素决定了用哪种方案来实现Abstract Factory 模式?未来变化的可能性;“不修改当前系统”的重要性;

谁来控制将被创建的对象系列(是我们还是其他的开发组);

使用的编程语言;数据库或配置文件的可用性。3.

按照模式进行设计的策略是什么?

1.开放-封闭的原则

2.从场景进行设计

3. 在类中包容变化。

4. 请举例说明如何根据模式为其他的模式创造场景来选择模式。

比如,Bridge-Facade 关联,使用Facade 模式来简化V1 系统的接口,Bridge 模式的实现部分之一使用Facade 模式所创建的新接口。因此,Bridge 模式为Facade 模式创造了场景。

5. 为什么说Bridge 是包容变化原则的一个精彩的范例?

Bridge 模式中的实现部分各不相同,但都可以通过一个通用接口被访问。系统可以接纳新的实现部分,只要它也使用这个通用接口来实现。

六.应用题

1. 在本书的应用案例中,为什么认为Bridge 模式高于Adapter 模式?请举例说明。

Bridge 模式的应用情景是在概念的抽象有变化及其实现方式有多个。而Adapter 模式的应用情景是原有对象的接口和需要的接口有差别。而大多数情景下Bridge 模式是作为Adapter 模式的背景。也就是Bridge 是Adapter 的“最高模式”,在用Bridge 模式封装实现时,大多数的实现并不可以派生自相同的基类,这时Adapter 模式就可以派上用场了。

2. 设计模式应遵循的原则有哪些?请举例分别对它们进行解释?

1.开放-封闭的原则

2.从场景进行设计

3. 在类中包容变化。

第14 章Strategy(策略)模式

一.选择

1. 下面的类图表示的是哪个设计模式?()

A 装饰模式(Decorator)

B 策略模式(Strategy)

C 桥接模式(Bridge)

D 观察者模式(Observer)

2. 定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。这句话是对哪种模式的描述()。

A 观察者模式(Observer)

B 桥接模式(Bridge)

C 适配器模式(Adapter)

D 策略模式(Strategy)

3. 下面属于行为模式的是()。

A 抽象工厂模式( Abstract Factory )

B 适配器模式(Adapter)

C.策略模式(Strategy) D 外观模式(Fa?ade)

4. 策略模式针对一组算法,将每一个算法封装到具有()接口的独立的类中,从而使得它们可以相互替换。

A.不同 B.一样 C 共同 D 都不是

5. Strategy(策略)模式的意图是:()。A.定义一系列的算法,把它们一个个

的封装起来,并且使它们可相互替换。 B.为一个对象动态连接附加的职责。

C.你希望只拥有一个对象,但不用全局对象来控制对象的实例化。

D.在对象之间定义一种一对多的依赖关系,这样当一个对象的状态改变时,所有依赖于它的对象都将得到通知并自动更新。

6. 作者在书中称“分析瘫痪”为()。

A 因为问题的复杂性导致分析失败。

B 因为问题的复杂性导致分析无法继续进行。

C 过度分析或过度设计。

D 错误分析引起的后果。

7. 作者在《设计模式》中考虑变化的设计方式应遵循的原则中,哪一条是错误的()。

A 针对接口进行编程,而不是针对实现编程。

B 优先使用对象组合,而不是继承。

C 对需求中可能变化的部分,应重新设计。

D 在不引起重新设计的前提下,对变化的概念进行封装。

8. 以下叙述不正确的是()。

A switch 语句可能导致“分支蔓延”。

B C++中的函数指针和 C#中的委托都可以用来将代码隐藏在精巧、紧凑、内聚的函数中。

C 使用继承可以实现复用。

D 作者认为复用是程序开发中最重要的考虑因素。

9. 对继承层次太深可能导致的问题的叙述不正确的是()。

A 继承层次太深导致紧内聚。

B 继承层次太深导致弱内聚。

C 继承层次太深导致紧耦合。

D 继承层次太深会产生冗余,并使测试困难。

10. Strategy 模式应遵循的原则中不正确的是()。

A 对象都具有职责。

B 职责不同的具体实现是通过多态的使用完成的。

C 概念上相同的算法具有多个不同的实现,需要进行管理。

D 优先使用组合而不是继承。

二.填空

1. (Strategy 模式)模式是一种定义一系列算法的方法。

2. UML 是一种用来创建(软件模型)的图像语言。

3. 最基本的UML 图是类图。它不仅(描述)了类,而且说明了类之间的关系。

4. Strategy 模式还简化了单元测试,因为每个算法都有自己的类,可以通过自己的(接口)单独测试。

5. Strategy 意图是定义一系列的算法,把它们一个个(封装)起来, 并且使它们可相互替换。

6. Strategy 模式要求所(封装)的算法应处在使用它们的类之外。

7. 通过从一个抽象类(派生)执行算法的所有不同方式,主模块无需再操心实际使用的是哪一个算法。

8. 在Strategy 模式的使用中,将某个(变化的行为)从使用它的类中移出来,这种过程与数据库中的规范化过程非常相似。

9. 将(算法)封装在一个抽象类中。而且在某一时刻能够互换地使用其中之一的方法,这就是Strategy 模式的本质。

10. Strategy 模式是一种定义(一系列)算法的方法。

三.判断

1. Strategy 模式使得算法可独立于使用它的客户而变化。对

2. 从Strategy 模式的概念上来说,所有算法都做相同的工作,且拥有相同的实现。错

3. Strategy(策略)模式是一种定义算法家族的方法。对

4. Strategy(策略)模式让我们可以将这些规则封装在一个抽象类中,然后拥有一系列的抽象派生类。错

5. Strategy(策略)模式的本质是在一个抽象类中封装一个算法并交替使用这些算法。对

6. 在设计模式设计中,作者提倡对变化进行封装在一个类中,再通过对它进行继承的原则。错

7. 当使用不同的规则处理算法,就可以采用Strategy 模式。错

8. Strategy 模式可以用不同的方式调用所有的算法。错

9. Strategy 模式简化了单元测试,因为每个算法都有自己的类,可以通过接口进行单独测试。对

10. 在算法设计时,采用Strategy 模式会增加大量的类。对四.名词解

1. Strategy(策略)模式定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。这个模式使算法可

独立于使用它的客户

而变化。

2. 解耦

解耦在软件里就是要让两个对象之间保持松耦合的关系,这种关系应具有稳定、标准等特性,其作用是限制了对象修改所影响的范围。

3. 聚集

聚集表示类之间的关系是整体与部分的关系。

4. 构造函数

五.简答题

1. Strategy 模式的意图是什么吗?它有哪些效果?

意图是让你可以使用不同的业务规则或算法-----取决于它们出场的场景。效果有:Strategy(策略)模式定义了一系列的算法;switch 语句或条件语句得到了避免;你必须以相同的方式调用所有的算法(它们必须拥有相同的接口)ConcreteStrategies 与Context 之间的交互可能需要在Context 中加入getState 之类的方法。

2. Strategy(策略)模式是建立在哪些原则的基础上?主要建立在:对象拥有责任;这些责任的不同的特定实现

通过使用多态来表现;需要将几个不同的实现按照

-----概念上------相同的算法来管理;一个好的设计经验:将问题领域中发生的行为彼此分离------也就是说,使它们解耦。这让改变对某一行为负责的类,而不会对其他行为产生不好的影响。

3. Strategy(策略)模式对问题的解决方案是什么?以及如何实现?解决方案是:将算法的选择和算法的实现相分

离。让客户可以基于场景做出选择。实现:让使用算法的类包含

一个抽象类,抽象类中有一个抽象方法指定如何调用算法。每个派生类根据需要实现算法。4.

按照四人团的说法,Strategy 策略模式的基本思想是什么?

定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换,使算法可独立于使用它的客户而变化。

六.应用题

1. 举例说出策略模式(Strategy)的应用场景,并且画出该模式的类图。

Strategy 模式是一种定义一系列算法的方法。概念上来看,所有这些算法完成的都是相同的工作,只是实现不同。比如,在一个国际电子商务系统中,不同的国家需要使用不同的税额计算算法。通过 Strategy 模式,可以将这些规则封装在一个抽象类中,然后派生出一系列的具体类。

2. 在一个国际电子零售系统中,需要考虑为不同的国家的消费者的定单计算税费问题,请用模式的方法考虑如何

解决该问题。

通过 Strategy 模式,可以将这些规则封装在一个抽象类中,然后派生出一系列的具体类。通过从一个抽象派生类执行算法的所有不同方式,主模块就无需再操心实际使用的是哪一个,这样能够允许发生新的变化。

第15 章Decorator(装饰)模式

一.选择

1. 若系统中的某子模块需要为其他模块()提供访问不同数据库系统的功能,这些数据库系统提供的访问接口有一定的差异,但访问过程却都是相同的,例如,先连接数据库,在打开数据库,最后对数据库进行查询,设计模式可抽象出相同的数据库访问过程。

A.外观 B 装饰 C 单间 D 模板方法

2. Decorator 模式的描述正确的是()。

A.该模式的意图是动态地给一个对象添加一些额外的职责。就增加功能来说,该模式相比生成子类不够灵活。

B.适用于在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责。

C.该模式的意图是将对象

组合成树形结构以表示“部分-整体”的层次结构。该模式使得用户对单个对象和组

合对象的使用具有一致性。

D 该模式适用性是你想表示对象的部分-整体层次结构。

3. 下面属于结构模式的有()。

A.策略模式(Strategies)

B.单例模式(Singleton)

C.

抽象工厂模式(Abstract Factory) D.装饰模式(Decorator)

4. 下面的类图表示的是哪个设计模式?()。

A 装饰模式(Decorator)

B 适配器模式(Adapter)

C 策略模式(Strategies)

D 桥接模式(Bridge)

5. Decorator(装饰)模式的意图是:()。A.定义一系列的算法,把它们一个

个的封装起来,并且使它们可相互替换。B.为一个对象动态连接附加的职

责。 C.你希望只拥有一个对象,但不用全局对象来控制对象的实例化。

D.在对象之间定义一种一对多的依赖关系,这样当一个对象的状态改变时,所有依赖于它的对象都将得到通知并自动更新。

二.填空

1. Decorator 模式将一个功能链的(动态构建)与使用功能的客户分离开来。

2. Decorator 模式对象在被装饰功能之前或者之后或者前两者同时执行自己的(附加功能)。

3. 每个Decorator 对象都对其后的对象(封装)自己的新功能。

4. 就增加功能来说,Decorator 模式相比生成子类更为(灵活)。

5. Decorator 模式是为现有的功能(动态)添加附加功能的一种方法。三.判

1. Decorator(装饰)模式的意图是为一个对象连接附加的职责。错

2. 每个Decorator 对象在被装饰的功能之前或之后执行自己的附加功能。对

3. Decorator(装饰)模式适用性是表示对象的部分-整体层次结构。错

4. Decorator(装饰)模式的意图是动态地给一个对象添加一些额外的职责。就增加功能来说,该模式相比生成子类不够灵活。错

5. Decorator(装饰)模式是为现有的功能动态添加附加功能的一种方法。对

四.名词解释

1.Decorator(装饰)模式动态地给一个对象

添加一些额外的职责。

2.Decorator(装饰)链

始于一个 Componet 对象,每个装饰者对象后面紧跟着另一个装饰者对象,而对象链终于 ConcreteComponet 对象。

3. 类图

是显示了模型的静态结构,特别是模型中存在的类、类的内部结构以及它们与其他类的关系等。

4. 交互图

以对象为中心,以类和继承为构造机制,充分利用接口和多态提供灵活性,来认识、理解、刻划客观世界和设计、构建相应的软件系统。

五.简答题

1. 每个Decorator 对象封装的是什么?

每个Decorator 对象都对其后的对象封装自己的新功能。每个Decorator 对象在被装饰的功能之前或之后执行自己的附加功能。

2. Decorator(装饰)模式的效果是什么?

被添加的功能属于小的对象。好处是可以在 ConcreteComponent 对象的功能之前或之后动态添加功能。虽然一个装饰者可以在被装饰者之前或之后添加功能,但对象链总是以ConcreteComponent 对象结束。

3. Decorator(装饰)模式的解决方案是什么?如何实现?解决方案是允许扩展一个对象的功能,而不必借助于子

类型化。实现:创建一个抽象类来表示原始的类和要添

加到这个类上的新功能。在装饰者类中,将“对新功能的调用”放在“对紧随其后对象的调用”之前或之后,以获得正确的顺序。

4. 画出Decorator(装饰)模式的类图。六.应用

1. 请结合实际应用说明Decorator 模式是怎样对问题按功能进行分解?

Decorator 模式并不通过一个控制方法控制新增功能,而是建议以需要的正确顺序将所需功能串联起来,进行控制。Decorator 模式将这样一个功能链的动态构建与使用功能的客户分离开来。而且还将功能链的构建与链组件分离开来。这样就能灵活使用这些组件,比如,表头,页脚和SalesTicket 分离开来。

2. Decorator 链有什么作用?它是怎样形成的,请举一个例子说明?

第16 章Singleton(单件)和 Double-Checked Locking(双重检查锁定)模式

一.选择

1.Singleton 模式适用于()。

A 当类有多个实例而且客户可以从一个众所周知访问点访问它时。

B 当这个唯一实例应该是通过子类化可扩展的,并且客户应该无需更改代码就能使用一个扩展的实例时。

C 当构造过程必须允许被构造的对象有不同的表示时。

D 生成一批对象时。

2. 保证一个类仅有一个实例,并提供一个访问它的全局访问点。这句话是对下列哪种模式的描述()。

A.外观模式(Facade)

B 策略模式(Strategies)

C.适配器模式(Adapter)

D.单例模式(Singleton)

3. 单例模式的作用是()。

A.当不能采用生成子类的方法进行扩充时,动态地给一个对象添加一些额外的功能。 B.为了

系统中的一组功能调用提供一个一致的接口,这个接口使得这一子系统更加容易使用。

C.保证一个类仅有一个实例,并提供一个访问他的全局访问点。D.

单例模式仅仅应用于多线程应用程序中。

4. 下面不属于结构模式的有()。A.适配器模式

(Adapter) B.单例模式(Singleton)

C.桥接模式(Bridge)

D.装饰模式(Decorator)

5. 单例模式(Singleton)(装饰)模式的意图是:()。A.定义一系列的算法,

把它们一个个的封装起来,并且使它们可相互替换。 B.为一个对象动态连

接附加的职责。C.你希望只拥有一个对象,但不用全局对象来控制对象的

实例化。

D.在对象之间定义一种一对多的依赖关系,这样当一个对象的状态改变时,所有依赖于它的对象都将得到通知并自动更新。

二.填空

1. (单例)模式确保某一个类仅有一个实例,并自行实例化向整个系统提供这个实例。

2. (单例)模式只应在有真正的“单一实例”的需求时才可使用。

3. 单例模式属于(创建型)模式。

4. Singleton(单件)模式和 Double-Checked Locking 模式都用以确保一个特定的类只有一个对象被(实例化)。

5. Singleton(单件)模式用于单线程应用程序,Double-Checked Locking 模式用于(多线程)应

用程序。

三.判断

1. 单例模式确保某一个类具有多个实例,并自行实例化向整个系统提供这个实例。错

2. Singleton 模式适用于当类只能有一个实例,而且客户可以从一个公共的访问点访问它。对

3. Double-Checked Locking 模式既可以用于单线程又能应用于多线程应用程序。错

4. Singleton(单件)模式的工作方式是拥有一个特定的方法,这个方法被用于实例化需要的对象。对

5. Singleton(单件)模式属于结构性模式。错四.名

词解释

1.Singleton(单件)模式保证一个类仅有一个实例,并提供一个

访问它的全局访问点。

2.Double-Checked Locking 模式

是singleton 的多线程版本。

3. 多线程

在单个程序中同时运行多个线程完成不同的工作,称为多线程.

4. 封装五.简

答题

1. Singleton(单件)模式怎样工作?S ingleton(单件)模式的工作方式是:拥有一个特定的方法,这个方法被

用于实例化需要的对象。当这个方

法被调用时,它检查这个对象是否已经被实例化。如果对象已经被实例化,这个方法仅仅返回这个对象的一个引用。如果对象尚未实例化,这个方法将对象实例化并返回这个新的实例的引用。为了确保这是创建这个类型的对象的惟一途径,在这个类中将构造函数定义为protected 或private。

2. Singleton(单件)模式和Double-Checked Locking 模式之间有什么区别?S ingleton(单件)模式用于单线程

应用程序,而Double-Checked Locking 模式用于多线程应用程序。

3. 描述Singleton(单件)模式意图以及效果?S ingleton(单件)模式的意图是你希望只拥有一个对象,但不用

全局对象来控制对象的实例化。效果是客户

对象不需要关心是否已经有Singleton 的实例存在。这可以在Singleton 内部得到控制。

4. Singleton(单件)模式的用途是什么?

它让我们可以仅仅对对象进行一次实例化,而不要求客户对象关心这个对象是否存在。六.应用

1. 在一个多线程应用程序中,如果使用Singleton 模式,试分析可能会出现哪些问题。

出现A 进程和B 进程同时访问某个对象的时候,发现它没有实例化过,结果A、B 进程分别将该类实例化一次,出现冗余对象的情况。这个情况并不多见,但是C++中出现了就是内存泄露的重大问题。

2. 请说明 Singleton 模式的动机和解决方案,这种处理方案和对象处理自己的单一实例化是否矛盾,请给出你的看法?

第17 章Observer(观察者)模式

一.选择

1. 在观察者模式中,表述错误的是()。

A.观察者角色的更新是被动的。

B.被

观察者可以通知观察者进行更新

C.观察者可以改变被观察者的状态,再由被观察者通知所有观察者依据被观察者的状态进行。

D.以上表述全部

错误。

2. 下面的类图表示的是哪个设计模式?()。

A 策略模式(Strategies)

B 装饰模式(Decorator)

C 桥接模式(Bridge)

D 观察者模式(Observer)

3. 当我们想创建一个具体的对象而又不希望指定具体的类时,可以使用()模式。

A.创建型

B.结构型

C 行为型 D.以上都可以

4. 下列模式中,属于行为模式的是( )。

A.工厂模式 B 观察者

C 适配器

D 以上都是

5. Observer 模式不适用于()。

A 当一个抽象模型存在两个方面,其中一个方面依赖于另一方面,将这二者封装在独立的对象中以使它们可以各自独立的改变和复用。

B 当对一个对象的改变需要同时改变其他对象,而不知道具体有多少个对象有待改变时。

C 当一个对象必须通知其它对象,而它又不能假定其它对象是谁,也就是说你不希望这些对象是紧耦合的。

D 一个对象结构包含很多类对象,它们有不同的接口,而想对这些对象实施一些依赖于其具体类的操作。

6. 下面的类图表示的是哪个设计模式?()。

A 观察者模式

B 单例模式

C 桥接模式

D 策略模式

7. 观察者模式定义了一种()的依赖关系。

A 一对多

B 一对一

C 多对多

D 以上都有可能

8. 下列模式中,属于行为模式的是( )。

A.外观模式 B 观察者模式

C 单例模式

D 桥接模式

9. 对观察者模式,以下叙述不正确的是()。

A 必须找出所有希望获得通知的对象。

B 所有的观察者对象有相同的接口。

C 如果观察者的类型相同,目标就可以轻易地通知它们。

D 在大多数情况下,观察者负责了解自己观察的是什么,目标需要知道有哪些观察者依赖自己。

10. 对于观察者模式,以下叙述正确的是()。

A 当对象之间存在依赖关系,就适宜采用观察者模式。

B 如果对象之间的以来关系是固定的,采用观察者模式会带来负面影响。

C 如果需要得到某事件通知的对象列表是变化的,不适宜采用观察者模式。

D 以上叙述皆不正确。

二.填空

1. (观察者)模式定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动更新。

2. 观察者模式定义了一种(一对多)的依赖关系,让多个观察者对象同时监听某一个主题对象。

3. Observer(观察者)模式是一个(行为)模式。

4. 当依赖关系固定(或几乎固定)时,加入一个 Observer 模式可能只会增加(复杂性)。

5. 为了对所有Observer 类型的对象实现Observer 接口,有时候需要使用(Adapter)模式。

6. 如果系统在不同的情况下运行,或由不同的用户运行,观察者列表会不同,这时适宜用(Observer)模式。

7. 一个观察者可能只需要处理事件的某些情况,在这种情况下,观察者必须将额外的(通知)筛选掉。

8. 对观察者模式,观察者通常将观察某个事件的责任交给(中心对象或Su bje c t)。

9. Subject 类将实现一个(notify)方法来遍历其Observer 对象列表,并调用每个Observer 对象的update 方法。

10. 当Subject 对象有了已注册的Observer 对象,事件发生时,Subject 对象通知Observer 对象将非常简单。为此,每个Observer 对象都要实现一个(update)方法。

三.判断

1. 创建型模式关注的是组织类和对象的常用方法。错

2. 常用的设计模式可分为过程型、创建型和结构型。错

3. 当对象之间存在依赖关系时就应该使用Observer(观察者)模式。错

4. 当依赖关系固定(或几乎固定)时,加入一个Observer(观察者)模式可能只会增加复杂性。对

5. 一个Observer(观察者)模式可能只需要处理事件的某种特定情况。对

6. 对观察者模式,触发事件的对象——Subject 对象不需要知道观察事件的所有对象。对

7. 对观察者模式,Subject 不知道与哪种观察者通信,Observer 类封装了各种特定的Observer。对

8. Observer 对象有多种,但都从Subject 对象收集信息,并收集相应的操作结果。错

9. Observer 类包含了需要得到通知的对象的概念,并为目标对象提供一个通知Observer 的公共接口。对

10. 对观察者模式,要求所有的Observer 负责将自己注册到目标对象上。对四.

名词解释

1. Observer(观察者)模式定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的

对象都得到通知并被自

动更新。

2. 结构型模式

将现存的对象结合在一起,处理接口,将实现与抽象类联系起来。

3. 行为型模式

提供一种显得灵活(变化)的行为,包容变化的模式。例如,strategy 模式和observer 模式。

4. 创建型模式

创建或实例化对象

五.简答题

1. GOF 设计模式按照模式的目的可分为哪三类?其目的分别是什么?

结构型:将现存的对象结合在一起。行为型:提供一种显得灵活(变化)行为。创建型:穿件或实例化对象。

2. Observer 模式的定义,它要解决什么样的问题?

Observer(观察者)模式定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。解决的问题是当某个事件发生时,你需要向一系列对象发出通知,而这个对象的列表是不断变化的。

3. Observer(观察者)模式的效果。

效果是如果某些Observer 只对全部事件的一个子集感兴趣,那么Subject 可能会告诉Observer 它们不需要知道的事件。如果在Subject 通知Observer 之后,Observer 又转过来请求附加信息,就可能需要额外的通信。

4. Observer(观察者)模式如何实现解决方案的?让“希望知道某个事件何时发生”的对象(Observer)将自己

注册到另一个“监视事件发生或自己触发事件”

的对象(Subject)上。当事件发生时,Subject 告诉Observer“你关心的事情已经发生了”。为了能让所有的观察者型对象实现Observer 接口,有时候需要使用Adapter 模式。

六.应用题

1. 给出Observer 的定义以及它的意图,举一个例子说明该模式的适用场景,最后画出它的类图。定义对象间的一

种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自

动更新。解决的问题是当某个事件发生时,你需要向一系列对象发出通知,而这个对象的列表是不断变化的。例如,在Subject 对象注册了它的一个Observer 对象,当事件发生时,Subject 对象向Observer 对象发出通知就非常简单了。为了实现这一功能,每个Observer 类都实现一个叫做updata 的方法。Subject 类这样实现notify 方法:遍历自己的Observer 对象列表,调用其中每个Observer 对象的updata 方法。Updata 方法应该包含处理事件的代码。

2. 根据你的理解,请你谈谈结构型和行为型模式的区别,并结合实际的应用举例说明。结构型模式的目的是将现

存的对象结合在一起,用途是处理接口,将实现与抽象类联系起来。而行为型模式的

目的是提供一种显得灵活的行为,用途是包容变化的。例子:结构型模式中的Bridge 模式或Decorator 模式与行为型模式中的Strategy 模式的比较。

第18 章Template Method(模板方法)模式

一.选择

1. 以下属于行为对象模式的是()。

A 模板模式(Template Method)

B 装饰模式(Decorator)

C 桥接模式(Bridge)

D 工厂方法模式(Factory Method)

2. 模板方法的作用是()。

A. 当不能采用生成子类的方法进行扩充时,动态地给一个对象添加一些额外的功能。 B.为了

系统中的一组功能调用提供一个一致的接口,这个接口使得这一子系统更加容易使用。 C.保证

一个类仅有一个实例,并提供一个访问他的全局访问点。D.在方法中定义算法的框架,而将算

法中的一些操作步骤延迟到子类中实现。

3. Template Method(模版)模式的意图是:()。A.定义一系列的算法,把它

们一个个的封装起来,并且使它们可相互替换。 B.为一个对象动态连接附

加的职责。 C.你希望只拥有一个对象,但不用全局对象来控制对象的实例

化。

D.定义一个操作中的骨架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。

4. 有关模板方法模式,以下叙述不正确的是()。

A 允许定义不同的子过程,同时维护基本过程的一致性。

B 将定义和操作相互分离。

C 创建一个抽象类,用抽象方法实现一个过程,这些抽象方法必须在子类中实现。

D 实现抽象方法的子类的步骤可以独立变化,并且这些步骤可以采用Strategy 模式来实现。

5. 在采用模板方法模式对系统连接不同数据库(例如Oracle 和SQL Server)的连接时,以下叙述不正确的是()。

A 尽管Oracle 和SQL Server 数据库有不同的连接、查询方法,但它们有相同的概念上的过程。

B 使用模板方法模式,可以在抽象类中捕捉共同点而在派生类中封装不同点。

C 模板方法模式用于控制连接数据库操作的一个序列的行为步骤。

D 可以采用通用的实现方法建立对不同数据库的连接。

二.填空

1. Template Method 模式准备一个抽象类,将部分逻辑以(具体方法)以及具体构造子类的形式实现,然后声明一

些抽象方法来迫使子类实现剩余的逻辑。

2. Template Method(模版)模式是用以帮助从不同的步骤中抽象出一个(通过的)过程模式。

3. Template Method(模版)模式让我们可以在抽象类中捕捉共同点而在(派生类)中封装不同点。

4. 当遇到一个心得数据库时,Template Method(模版)模式提供了一个(样板)让我们填充。我们创建一个新的

派生类,并根据新的数据库的要求实现特定的步骤。

5. Template Method(模版)模式使得子类可以不改变一个算法的结构即可(重定义)该算法的某些特定步骤。三.判断

1. Template Method(模版)模式只是在一起工作的Strategies 模式的集合。错

2. Template Method(模版)模式适用于有几个相同且概念上相似的步骤存在的情况。错

3. Template Method(模版)模式被用于控制一个序列的行为步骤,这些步骤通常是相同的。错

4. Template Method 是用以帮助从不同的步骤中抽象出一个通用的过程的模式。对

5. Template Method(模版)模式使得子类可以改变一个算法的结构即可重定义该算法的某些特定步骤。对四.名

词解释

1.Template Method(模版)模式

定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。Template Method 使得子类可以不改变一个算法

的结构即可重定义该算法的某些特定步骤。

2. 重载

一个类中的方法与另一个方法同名,但是参数表不同,这种方法称之为重载方法。

3. 虚拟方法

当实例方法声明包含virtual 修饰符时,称该方法为虚拟方法。

4. 类图

五.简答题

1. Template Method 模式以怎样的一种特殊的方式进行方法调用?

Template Method(模版)模式可以这样做,因为对方法的调用是通过一个引用来进行的,而这个引用指向的

对象属于某一个派生类。

2. Template Method(模版)模式如何定义,其效果是什么?定义一个操作中的骨架,而将一些步骤延迟到子类中。

Template Method 模式使得子类可以不改变一个算法的

结构即可重定义该算法的某些特定步骤。效果:模版为代码复用提供了一个优秀的平台。它们还有助于确保需要的

步骤得到实现。它们为每个具体类将重载后的步骤捆绑在一起,因此只有在这些重载方法总是并且只能一起发生时,

才应该使用 Template Method(模版)模式。

3. Template Method(模版)模式需要解决的问题是什么?解决方案是什么?需要遵循一个过程或一系列步骤,它

们在某个具体层次上保持一致,但单个步骤在更详细的层次上可能有不同

的实现。解决方案:允许定义不同的子步骤,同时维护基本过程的一致性。

4. 按照四人团的说法,Template Method 模式的基本思想是什么?

定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。Template Method 模式使得子类可以不改变一个

算法的结构即可重定义该算法的某些特定步骤。Template Method 模式给了我们一条途径,让我们可以在抽象类中

捕捉共同点而在派生类中封装不同点。

六.应用题

1. 在一个系统中,如果需要同时支持Oracle 和SQL Server 数据库,请用模板方法给出上述解决方案。

2. Strategy 模式和Template Method 模式有哪些相同点和不同点,并分别举例说明?

第19 章Factory Method(工厂方法)模式

一.选择

1. 下列关于静态工厂与工厂方法表述错误的是:()

A.两者都满足开闭原则:静态工厂以if else 方式创建对象,增加需求的时候会修改源代码。

B.静态工厂对具

体产品的创建类别和创建时机的判断是混和在一起的,这点在工厂方法是分开的。

软考软件设计师必做练习题附答案

软考软件设计师必做练习题及答案 软件设计师考试属于全国计算机技术与软件专业技术资格考试(简称计算机软件资格考试)中的一个中级考试。考试不设学历与资历条件,也不论年龄和专业,考生可根据自己的技术水平选择合适的级别合适的资格,但一次考试只能报考一种资格。考试采用笔试形式,考试实行全国统一大纲、统一试题、统一时间、统一标准、统一证书的考试办法。下面是希 赛小编整理的软考软件设计师考前必做的练习题。 试题一分析 本题主要考查类图和顺序图。 【问题 1】 需要分析此门禁系统的体系结构,根据体系结构的描述来看什么数据放在什么类中最 为合适。题目中提到:系统中的每个电控锁都有一个唯一的编号。锁的状态有两种:“已锁住”和“未锁住”。所以Lock 中含有锁编号和锁状态这两个属性。又因为题中有:在主机 上可以设置每把锁的安全级别以及用户的开锁权限。只有当用户的开锁权限大于或等于锁的 安全级并且锁处于“已锁住”状态时,才能将锁打开。因此,Lock 中还有锁的安全级别。 【问题 2】 首先,( 1 )、( 2 )是 FingerReader和LockController之间的交互。所以我们看题 目中是如何描述他们的交互的。题目中有“指纹采集器将发送一个中断事件给锁控器,锁控器从指纹采集器读取用户的指纹”,所以(1)应填“中断事件”,( 2 )应填“读取指纹”。(3 )是主机与UserInfo的交互,从图2-35中可以看出,UserInfo中存储了用户的指纹信息和开锁权限,所以( 3 )应是从 UserInfo读取用户的指纹信息和开锁权限。(4)空应填“读取锁的安全级别”。( 5 )是 MainFrame向自己发送的一条消息,从题目中的“主 机根据数据库中存储的信息来判断用户是否具有开锁权限,若有且锁当前处于已锁住状态,

软件工程期末试题(含答案)解析

一、填空题(每空1分,共25分) 1.软件生存周期一般可以划分为,问题定义、可行性研究、需求分析、设计、编码、测试和运行 和维护。 2.基于软件的功能划分,软件可以划分成___系统软件_、支撑软件、应用软件__三种。 3.可行性研究,应从经济可行性、技术可行性、运行可行性、法律可行性和开放方 案可行性等方面研究。 4.系统流程图是描绘物理系统的传统工具。它的基本思想是用图形符号以黑盒子 形式描绘系统里面的每个部件 5.数据流图的基本四种成分:数据输入的源点和数据输出汇点、加工、数据流和数据存储文 件。 6.结构化分析方法是面向_数据流_进行需求分析的方法。结构化分析方法使用_数据流图DFD_与_ 数据字典_来描述。 7.继承性是自动地共享类、子类和对象中的方法和数据的机制。 8.软件详细设计工具可分为3类,即_图示工具_、_设计语言_和_表格工具_。 9.为了在软件开发过程中保证软件的质量,主要采取下述措施:_审查__、复查和管理复审、___ 测试_。 10.大型软件测试包括单元测试、集成测试、确认测试和系统测试四个步骤。 二、单项选择题(每小题2分,共20分) 1.软件设计中划分模块的一个准则是(C )。 A、低内聚低耦合 B.低内聚高耦合C.高内聚低耦合 D.高内聚高耦合 2.Jackson设计方法是由英国的M. Jackson提出的,它是一种面向( C )的软件设计方法。 A、对象 B.数据流 C.数据结构 D.控制结构 3.试判断下列叙述中,哪个(些)是正确的( C )。 a、软件系统中所有的信息流都可以认为是事务流 b、软件系统中所有的信息流都可以认为是变换流 c、事务分析和变换分析的设计步骤是基本相似的 A、a B、b C、c D、b和c 4.( A )是用户和设计交换最频繁的方法。 A、原型化方法 B、瀑布模型方法 C. 螺旋模型方法D、构件组装模型 5.软件工程方法学的目的是:使软件生产规范化和工程化,而软件工程方法得以实施的主要保证 是( C )。 A、硬件环境 B、软件开发的环境 C.软件开发工具和软件开发的环境 D、开发人员的素质 6.20世纪50年代以来,出现了许多不同的程序设计语言,下列语言中哪个语言是低级语言 ( D )。 A、PASCAL B、 VISUAL BASIC C. C++ D、汇编语言 7.软件测试的目的是?( D ) A、证明软件的正确性 B.找出软件系统中存在的所有错误 C.证明软件系统中存在错误 D.尽可能多的发现软件系统中的错误 8.使用白盒测试方法时,确定测试数据应根据( A )和指定的覆盖标准。 A、程序的内部逻辑 B、程序的复杂程度 C、该软件的编辑人员 D、程序的功能 9.软件维护工作的最主要部分是( C )。 A、校正性维护 B、适应性维护 C.完善性维护 D、预防性维护

2019年上半年软件设计师上午试题及答案

2019年上半年软件设计师上午试题及答案 1.计算机执行指令的过程中,需要由()产生每条指令的操作信号并将信号送往相应的部件进行处理,以完成指定的操作。 A.CPU的控制器 B.CPU的运算器 C.DMA控制器 D.Cache控制器 2.DMA控制方式是在()之间直接建立数据通路进行数据的交换处理。 A.CPU与主存 B.CPU与外设 C.主存与外设 D.外设与外设 3.CPU访问存储器时,被访问数据一般聚集在一个较小的连续存储区域中。若一个存储单元已被访问,则其邻近的存储单元有可能还要被访问,该特性被称为() A.数据局部性 B.指令局部性 C.空间局部性 D.时间局部性 4.某系统由3个部件构成,每个部件的千小时可靠度都为R,该系统的千小时可靠度为(1-(1-R)2)R,则该系统的构成方式是()。 A.3个部件串联

B.3个部件并联 C.前两个部件并联后与第三个部件串联 D.第一个部件与后两个部件并联构成的子系统串联 5.在()校验方法中,采用模2运算来构造校验位。 A.水平奇偶 B.垂直奇偶 C.海明码 D.循环冗余 6.以下关于RISC (精简指令系统计算机)技术的叙述中,错误的是()。 A.指令长度固定、指令种类尽量少 B.指令功能强大、寻址方式复杂多样 C.增加寄存器数目以减少访存次数 D.用硬布线电路实现指令解码,快速完成指令译码 7.()防火墙是内部网和外部网的隔离点,它可对应用层的通信数据流进行监控和过滤。 A.包过滤 B.应用级网关 C.数据库 D.WEB 8.下述协议中与安全电子邮箱服务无关的是()。 A.SSL

B.HTTPS C.MIME D.PGP 9-10.用户A和B要进行安全通信,通信过程需确认双方身份和消息不可否认。A 和B通信时可使用()来对用户的身份进行认证;使用()确保消息不可否认。 A.数字证书 B.消息加密 C.用户私钥 D.数字签名 A.数字证书 B.消息加密 C.用户私钥 D.数字签名 11.震网(Stuxnet)病毒是一种破坏工业基础设施的恶意代码,利用系统漏洞攻击工业控制系统,是一种危害性极大的()。 A.引导区病毒 B.宏病毒 C.木马病毒 D.蠕虫病毒 12.刘某完全利用任职单位的实验材料、实验室和不对外公开的技术资料完成了一项发明。以下关于该发明的权利归属的叙述中,正确的是()。

设计模式试卷

设计模式期中考试试题 一:单项选择(共20道,每道2分) 1、设计模式一般用来解决什么样的问题( ) A.同一问题的不同表相B不同问题的同一表相 C.不同问题的不同表相 D.以上都不是 2、下列属于面向对象基本原则的是( ) A.继承 B.封装 C.里氏代换D都不是 3、Open-Close原则的含义是一个软件实体( ) A.应当对扩展开放,对修改关闭. B.应当对修改开放,对扩展关闭 C.应当对继承开放,对修改关闭 D.以上都不对 4、当我们想创建一个具体的对象而又不希望指定具体的类时,可以使用()模式。 A.创建型 B.结构型C行为型D.以上都可以 5、要依赖于抽象,不要依赖于具体。即针对接口编程,不要针对实现编程,是( )的表述 A.开-闭原则 B.接口隔离原则 C.里氏代换原则 D.依赖倒转原则 6、设计模式的两大主题是( ) A.系统的维护与开发 B 对象组合与类的继承 C.系统架构与系统开发 D.系统复用与系统扩展 7、“不要和陌生人说话” 是( )原则的通俗表述 A.接口隔离 B.里氏代换 C.依赖倒转 D.迪米特:一个对象应对其他对象尽可能少的了解 8、构造者的的退化模式是通过合并()角色完成退化的。 A.抽象产品B产品C创建者D使用者 9、以下关于简单工厂模式叙述错误的是() A 它属于GoF23种设计模式 B 它是最简单的设计模式之一 C 它是学习其他创建型模式的基础 D 它只需要记住一个简单的参数即可获得所需对象的实例 E 它类中的方法通常为静态方法 F 它返回的类都有一个公共的父类和公共的方法 10、对象适配器模式是()原则的典型应用。 A.合成聚合复用原则 B.里式代换原则 C.依赖倒转原则 D.迪米特法则 D.以上表述全部错误。 11.对于依赖倒转的表述错误的是() A.依赖于抽象而不依赖于具体,也就是针对接口编程。 B.依赖倒转的接口并非语法意义上的接口,而是,一个类对其他对象进行调用时,所知道的方法集合。 C.从选项B的角度论述,一个对象可以有多个接口。 D.实现了同一接口的对象,可以在运行期间,顺利地进行替换。而且不必知道所示用的对象是那个实现类的实例。 E.此题没有正确答案。 12. 现有5个产品族,分布于3各不同的产品等级结构,只要指明一个产品所处的产品族以及它所在的等级结构,就可以唯一地确认这个产品。那么使用抽象工厂方法模式只需要提供

2019年软件设计师考试真题及答案

2019下半年软件设计师考试真题及答案-上午卷 1、在cpu内外常需设置多级高速缓存cache,主要目的是()。 A、扩大主存的存储容量 B、提高cpu访问主存数据或指令的效率 C、扩大存储系统的存量 D、提高cpu访问内外存储器的速度 答案:D(如果D中没有“内”则选B) 2、某系统的可靠性结构框图如下图所示,假设部件1、2、3的可靠度分别为;;(部件2、3为冗余系统)若要求该系统的可靠度不小于,则进行系统设计时,部件4的可靠度至少应为()。 答案:A 3、计算机运行过程中,进行中断处理时需保存现场,其目的是()。 A、防止丢失中断处理程序的数据 B、防止对其他程序的数据造成破坏 C、能正确返回到被中断的程序继续执行 D、能为中断处理程序提供所需的数据 答案:C 4、内存按字节编址,地址从A0000H到CFFFFH的内存,共存()字节,若用存储容量为64k*8bit的存储器芯片构成该内存空间,至少需要()片。 A、80k B、96 k C、160 k D、192 k A、2 B、3 C、5 D、8 答案:D、B 5、执行指令时,将每一节指令都分解为取指、分析和执行三步,已知取指时间t取指=5△t,分析时间t分析= 2△t.执行时间t执行= 3△t如果按照重叠的流水线方式执行指令,从头到尾执行完500条指令需()△t. A、2500 B、2505 C、2510 D、2515 答案:B 6、下列协议中,与电子邮箱服务的安全性无关的是() A、SSL B、HTTPS C、MIME D、PGP 答案:C

7、下列算法中,不属于公开密钥加密算法的是()。 A、ECC B、DSA C、RSA D、DES 答案:D 8、kerberos系统中可通过在报文中加入()来防止重放攻击。 A、会话密钥 B、时间戳 C、用户ID D、私有密钥 答案:B 9、某电子商务网站向CA申请了数字证书,用户可以通过使用()验证()的真伪来确定该网站的合法性。 A、CA的公钥 B、CA的签名 C、网站的公钥 D、网站的私钥 A、CA的公钥 B、CA的签名 C、网站的公钥 D、网站的私钥 答案:A、B 10、李某受非任职单位委托,利用该单位实验室实验材料和技术资料开发了一项软件产品,对该软件的权利归属,表达正确的是()。 A、该软件属于委托单位 B、若该单位与李某对软件的归属有特别的约定,则遵从约定;无约定的原则上归属于李某 C、取决于该软件是否属于单位分派给李某的 D、无论李某与该单位有无特别约定,该软件属于李某 答案:B 11、李工是某软件公司的软件设计师,每当软件开发完成均按公司规定申请软件著作权,该软件的著作权()。 A、应由李工享有 B、应由公司和李工共同享有 C、应由公司享有 D、除署名权以外,著作权的其他权利由李工享有 答案:C 12、某考试系统的部分功能描述如下,审核考生报名表,通过审核的考生登录系统,系统自动为其生成一套试题,考试中心提供标准答案,问卷老师问卷,提交考生成绩,考生查看自己的成绩。若用数据流图对该系统进行建模,则()不是外部实体。. A、考生 B、考试中心 C、问卷老师 D、试题

软件设计与体系结构期中考试试卷

安徽师范大学 2015-2016 学年 第一学期 数学计算机科学学院软件工程专业2013级《软件设计与体系结构》课程期中考试试卷 (180分钟 闭卷) 注意:请保持字迹工整 一、单选题(10小题,每小题2分,共20分) 1、下面哪种开发方法是非传统方法( ) A 、功能分解法 B 、结构化方法 C 、面向对象方法 D 、信息建模方法 2、下面那一项不属于用况图中的参与者( ) A 、人员 B 、内部系统 C 、外部系统 D 、设备 3、对象间的is-a 关系可以用以下哪一个来表示( ) A 、组合 B 、聚合 C 、关联 D 、继承 4、只与你的直接朋友通信描述的哪一个设计原则( ) A 、单一职责原则 B 、开闭原则 C 、接口隔离原则 D 、迪米特法则 5、一个软件实体应该对扩展开放,对修改关闭。这描述的是哪个原则( ) A 、单一职责原则 B 、开闭原则 C 、依赖倒置原则 D 、里氏代换原则 6、常用的基本设计模式可分为( ) A 、创建型、结构型和行为型 B 、对象型、结构型和行为型 C 、过程型、结构型和行为型 D 、抽象型、接口型和实现型 7、对于类图,下列叙述正确的是( ) A 、创建类图是为了对系统的动态结构进行建模 B 、在系统分析和实施阶段可以创建和使用类图 C 、每个类图都应该具有泛化关系 D 、以上说法都不对 8、类与类之间存在相互关系,下面哪一种关系与其他三种不同( ) A 、双向关联 B 、聚合关系 C 、组合关系 D 、依赖关系 9、Open-Close 原则的含义是一个软件实体( ) A 、应当对扩展开放,对修改关闭. B 、应当对修改开放,对扩展关闭 C 、应当对继承开放,对修改关闭 D 、应当对继承关闭,对修改开放 10、当需要对系统功能以及与系统进行交互的外部事物进行建模时,我们一般采用( ) A 、用况图 B 、类图 C 、活动图 D 、顺序图 二、简答题(4小题,每小题5分,共50分) 1、OOA 中问题域和系统责任的含义分别是什么意思? 2、OOD 模型中总共包含几个部分,分别是哪几个部分,哪个部分是核心部分?

下半年软件设计师下午试题以及标准答案

2014年下半年软件设计师下午试题 试题:i 阅读下列说明和图,回答问题1至问题3,将解答填入答题纸的对应栏内。 【说明】 某大型披萨加工和销售商为了有效管理生产和销售情况,欲开发一披萨信息系统,其主要功能如下: (1)销售。处理客户的订单信息,生成销售订单,并将其记录在销售订单表中。销售订单记录了订购者、所订购的披萨、期望的交付日期等信息。 (2 )生产控制。根据销售订单以及库存的披萨数量,制定披萨生产计划(包括生产哪些披萨、生产顺序和生产量等),并将其保存在生产计划表中。 (3)生产。根据生产计划和配方表中的披萨配方,向库存发岀原材料申领单,将制作好的披萨的信息存入库存表中,以便及时进行交付。 (4)采购。根据所需原材料及库存量,确定采购数量,向供应商发送采购订单,并将其记录在采购订单表中;得到供应商的供应量,将原材料数量记录在库存表中,在采购订单表中标记已完成采购的订单。 (5)运送。根据销售订单将披萨交付给客户,并记录在交付记录表中。 (6 )财务管理。在披萨交付后,为客户开具费用清单,收款并岀具收据;依据完成的采购订单给供应商支付原材料费用并岀具支付细节;将收款和支付记录存入收支记录表中。 (7)存储。检查库存的原材料、拔萨和未完成订单,确定所需原材料。 现采用结构化方法对披萨信息系统进行分析与设计,获得如图1-1所示的上下文数据流图和图1-2所示 的0层数据流图。 图1-1上下文数据流图

【问题1】(4分) 根据说明中的词语,给岀图【问题2】(5分) 根据说明中的词语,给岀图【问题3】(6分)1-1中的实体E1?E2的名称。 1-2中的数据存储D1?D5的名称。 图1-2 0层数数据流图 根据说明和图中词语,补充图1-2中缺失的数据流及其起点和终点

软件设计与体系结构期末复习整理解读

1面向对象编程中是如何体现封装性的? 封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。 2重载和重写的含义 重载是发生在一个类中,方法名相同,参数不同 重写(覆盖)是子类继承父类,子类可以通过重写的方法隐藏继承的方法 3 什么是接口回调,过程细节是什么? 概念:把可以实现某一接口的类创建的对象的引用赋给该接口声明接口变量,那么该接口变量可以调用被类实现(重写)的接口方法。 4试举例说明什么是组合关系和依赖关系 组合(关联)关系:A类中成员变量是用B类声明的对象。公司--职员 依赖关系:A类中某个方法的参数是用B类声明的对象,或某个方法返回的数据类型是B类的对象 5抽象类和接口,区别是什么?如何应用 抽象类:抽象类中有抽象方法;抽象类中不能用new运算符创建对象;抽象类的对象做商转型对象 接口:(1)接口中只可以有public权限的抽象方法,不能有非抽象方法; (2)接口由类去实现,即一个类如果实现一个接口,那么他必须重写接口中的抽象方法 (3)接口回调 区别:接口中只有常量,不能有变量;抽象类中既可以有常量也可以有变量; 抽象类中也可以有非抽象方法,接口不可以。 应用:定义抽象方法:public abstract void 方法名(); 在子类实现抽象方法:public void 方法名(){} 接口:public interface 接口名{}接口只负责定义规则,不负责任何实现;实现交给实现接口的类 (6)面向对象的六条基本原则包括: 开闭原则,里式代换原则,单一职责,依赖倒转、迪米特法则(接口隔离)。 (7)什么是设计模式? 设计模式是从许多优秀的软件系统中总结出的成功的可复用的设计方案。是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性 (8)什么是框架?框架与模式的区别有哪些? 框架是针对某个领域,提供用于开发应用系统的类的集合。 区别:层次不同、范围不同、相互关系

软件设计模式试题集 含答案

设计模式试题 一.选择 1. 设计模式具有的优点()。 A.适应需求变化 B.程序易于理解 C.减少开发过程中的代码开发工作量 D.简化软件系统的设计 2. 设计模式一般用来解决什么样的问题( )。 A.同一问题的不同表相 B 不同问题的同一表相 C.不同问题的不同表相 D.以上都不是 3. 设计模式的两大主题是( )。 A.系统的维护与开发 B.对象组合与类的继承 C.系统架构与系统开发 D.系统复用与系统扩展 4. 以下哪些问题通过应用设计模式不能够解决。() A)指定对象的接口B)针对接口编程 C)确定软件的功能都正确实现D)设计应支持变化 二.填空 1. 模式的基本要素包括名称、意图、问题、解决方案、参与者和协作者、(效果)、实现、GoF 参考。 2. 设计模式基本原则包括:开闭原则,(从场景进行设计的原则),包容变化原则。 3. 设计模式是一个(抽象)的方案,它可以解决一类问题。 4. 1. 在设计模式群体中,效果是指(原因和结果)。三. 判断 1. 适配器模式属于创建型模式。错 2. 在设计模式中,“效果”只是指“原因和结果”。对 3. 设计模式使代码编制不能真正工程化。错 4. 设计模式的两大主题是系统复用与系统扩展。对四. 名词解释 1. 设计模式 是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 2. 模板 模式定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。 3. 模式 就是解决某一类问题的方法论。把解决某类问题的方法总结归纳到理论高度,那就是模式。 4. 内聚度 模块内部各成分彼此结合的紧密程度。五.简答 题 1. 什么是设计模式?设计模式的目标是什么?设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码 设计经验的总结。使用设计模式是为了可 重用代码、让代码更容易被他人理解、保证代码可靠性。 2. 设计模式的基本要素有哪些? 名称,意图,问题,解决方案,参与者和协作者,效果,实现,GOF 参考。 3. 设计模式中一般都遵循的原则有什么? 开-闭原则,根据场景进行设计原则,优先组合原则,包容变化原则。 4. 四人团针对“创建优秀面向对象设计”建议了哪些策略? 针对接口编程,优先使用对象组合而不是类继承,找到并封装变化点。 第6 章 facade(外观)模式 一.选择 1. 外观模式的作用是()。A.当不能采用生成子类的方法进行扩充时,动态地给一个对象添加一些 额外的功能。B.为了系统中的一组功能调用提供一个一致的接口,这个接口使得这一子系统更 加容易使用。

东北大学《软件设计模式》期末考试必备真题集(含答案)93

东北大学继续教育学院 软件设计模式复习题 一:单选题 1.在c#程序中,入口函数的正确声明为:B A. static int main(){…..} B. static void Main(){……} void main(){……} Main(){……} 2.在C#中,表示一个字符串的变量应使用以下哪条语句定义?B A. CString str; B. string str; C. Dim str as string D. char * str; 3.结构化程序设计的3种结构是:D A. 顺序结构、if结构、for结构

B. if结构、if…else结构、else if结构 C. while结构、do…while结构、foreach结构 D. 顺序结构、分支结构、循环结构 4.能正确表示逻辑关系“a>=10 或a<=0”的C#语言表达式是____。D A. a>=10 or a<=0 B. a>=10|a<=0 C. a>=10&&a<=0 D. a>=10||a<=0 5.在类的外部可以被访问的成员是:A A. public成员 B. private成员 C. protected成员 D. protected internal成员 6.在定义类时,如果希望类的某个方法能够在派生类中进一步进行改进,以处理不同的派生类的需要,则应将该方法声明成_________。C A. sealed 方法 B. public 方法 C. visual 方法 D. override 方法 7.关于结构类型,下列说法哪些是正确的?A A. 结构是值类型 B. 结构中不允许定义带参数的实例构造函数; C. 结构中不允许定义析构函数 D. 结构中可以定义成员方法,但是方法内不能使用this 指针 8.下面是几条动态初始化二维数组的语句,指出其中正确的:D A. int arr5[][]=new int[4,5]; B. int[][] arr6 = new int[4, 5]; C. int arr7[,]=new int[4,5]; D. int[,] arr8=new int[4,5]; 9.下面有关析构函数的说法中,不正确的是:D

软件建模和设计试题

一.名词解释: 1.在软件工程中,对客观世界的问题领域进行抽象,并用某描述方法表示的结果称为模型。模型是现实系统的简化,它是抓住现实系统的主要方面而忽略次要方面的一种抽象,是对问题的书面上的、图形或文字的、无歧义的描述。人们常常在正式构造实物之前,首先建立一个简化的模型,以便更透彻地了解它的本质,抓住问题的要害。在模型中,人们总是剔除那些与问题无关的、非本质的东西,从而使模型与真实的实体相比更加简单、易于把握。 https://www.doczj.com/doc/0712779455.html,e Case(用例):在不展现一个系统或子系统内部结构的情况下,对系统或子系统的某个连贯的功能单元的定义和描述。一个Use Case表达了用户对系统的一项需求,也就是系统的一项责任或功能。 3.架构风格指一组原则。可以把它看成是一组为系统家族提供抽象框架的粗粒度模式。架构风格能改进分块,还能为频繁出现的问题提供解决方案,以此促进设计重用。软件体系架构风格是描述某一特定应用领域中系统组织方式的惯用模式。体系架构风格定义了一个系统家族,即一个体系架构定义一个词汇表和一组约束。词汇表中包含一些构件和连接件类型,而这组约束指出系统是如何将这些构件和连接件组合起来的。体系架构风格反映了领域中众多系统所共有的结构和语义特性,并指导如何将各个模块和子系统有效地组织成一个完整的系统。对软件体系结构风格的研究和实践促进对设计的重用,一些经过实践证实的解决方案也可以可靠地用于解决新的问题。例如,如果某人把系统描述为“客户/服务器”模式,则不必给出设计细节,我们立刻会明白系统是如何组织和工作的。 4.类(Class)是对某种类型的对象定义变量和方法的原型。它表示对现实生活中一类具有共同特征的事物的抽象,是面向对象编程的基础。类是对某个对象的定义。它包含有关对象动作方式的信息,包括它的名称、方法、属性和事件。类通过接口与外界发生关系。 5.软件工程是研究和应用如何以系统性的、规范化的、可定量的过程化方法去开发和维护软件,以及如何把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来。是建立并使用完善的工程化原则,以较经济的手段获得能在实际机器上有效运行的可靠软件的一系列方法。软件工程借鉴传统工程的原则、方法,以提高质量、降低成本和改进算法。其中,计算机科学、数学用于构建模型与算法,工程科学用于制定规范、设计范型(paradigm)、评估成本及确定权衡,管理科学用于计划、资源、质量、成本等管理。 二、 1.面向对象建模的大致过程如下: 用UML进行面向对象建模首先要描述总体需求。在这一阶段中主要是建立用例模型和静态模型,以搭建系统体系结构。用例图是系统的高级视图,要求按照面向对象的原则,站在功能划分的角度将系统要实现的行为划分为用例;以用例之间的动态交互及交互时间为依据产生顺序图;接下来就在用例图的基础上抽象出系统的类,明确各模块之间的关系以适当的粒度画出类图,其中也包括了与用例图的相互迭代修改在分析完模块的静态交互关系后继而要绘制出构件图。以上这些过程中均不考虑系统的具体实现,如建立什么样的数据库或采用什么语言编码等,最好是以使用者的眼光去分析系统功能。为建立完整的系统模型,还要对模块交互和构件细节做进一步分析,补充状态图、活动图、协作图和实施图等,从尽可能多的角度对复杂系统进行描述。在模型确定后就可以借助相应的支撑软件将模型导出为

软件工程(清华钱乐秋版)期末复习重点

1、什么是软件工程 在《计算机科学技术百科全书》中软件工程是应用计算机科学、数学及管理科学等原理,开发软件的工程。 2、软件生存周期分哪几个阶段分别简述各个阶段的任务。 答:软件生存周期有计算机系统工程、需求分析、设计、编码、测试、运行和维护6个阶段。 A 计算机系统工程的任务是确定待开发软件的总体要求和范围,以及该软件与其他计算机 系统元素之间的关系,进行成本估算,做出进度安排,并进行可行性分析,即从经济、技术、法律等方面分析待开发的软件是否有可行的解决方案,并在若干个可行的解决方案中做出选择。 B 需求分析主要解决待开发软件要“做什么”的问题,确定软件的功能、性能、数据、界面 等要求,生成软件需求规约。 C 软件设计只要解决待开发软件“怎么做”的问题。软件设计通常可分为系统设计和详细设 计。系统设计的任务是设计软件系统的体系结构,包括软件系统的组成成分、各成分的功能和接口、成分间的连接和通信,同时设计全局数据结构。详细设计的任务是设计各个组成成分的实现细节,包括局部数据结构和算法等。 D 编码阶段的任务是用某种程序设计语言,将设计的结果转换为可执行的程序代码。 E测试阶段的任务是发现并纠正软件中的错误和缺陷。测试主要包括单元测试、集成测试、确认测试和系统测试。 F软件完成各种测试后就可交付使用,在软件运行期间,需对投入运行的软件进行维护,即可发现了软件中潜藏的错误或需要增加新的功能或使软件适应外界环境的变化等情况出现时,对软件进行修改。 3、简述各类软件过程模型的特点。 答:典型的软件过程模型有:瀑布模型、演化模型(增量模型、原型模型、螺旋模型)、喷泉模型、基于构件的开发模型和形式方法模型等。 A瀑布模型中,上一阶段的活动完成并经过评审后才能开始下一阶段的活动,其特征是: 接受上一阶段活动的结果作为本阶段活动的输入; 依据上一阶段活动的结果实施本阶段应完成的活动; 对本阶段的活动进行评审; 将本阶段活动的结果作为输出。 B 增量模型将软件的开发过程分成若干个日程时间交错的线性序列,每个线性序列产生软 件的一个可发布的增量版本,后一个版本是对前一个版本的修改和补充,重复增量发布的过程,直至产生最终的完善产品。 C 原型方法从软件工程师与客户的交流开始,其目的是定义软件的总体目标,标识需求。 然后快速制定原型开发的计划,确定原型的目标和范围,采用快速设计的方式对其建模,并构建模型。被开发的原型应交付给客户使用,并收集客户的反馈意见,这些反馈意见可在下

软件设计模式(JAVA)习题答案

软件设计模式(Java版)习题 第1章软件设计模式基础 1.1 软件设计模式概述 1.2 UML中的类图 1.3 面向对象的设计原则 一、名词解释 1.一个软件实体应当对扩展开放,对修改关闭,即在不修改源代码的基础上扩展 一个系统的行为。 2.一个对象应该只包含单一的职责,并且该职责被完整地封装在一个类中。 3.在软件中如果能够使用基类对象,那么一定能够使用其子类对象。 4.是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结, 使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 二、单选择题 1.( A ) 2.( A ) 3. ( A ) 4. ( D ) 5. ( D ) 6.( A ) 7. ( D ) 8.( D ) 9.( D ) 10.( E ) 11.( C ) 12.( C ) 13. ( A ) 三、多选择题 1.( A、B、C、D ) 2. ( A、B ) 3.( A、D ) 4.( A、B、C、D ) 四、填空题 1.依赖倒转、迪米特法则、单一职责 2.模式名字、目的、问题、解决方案、效果、实例代码 3.超类、子类 4.开闭 5.用户 6.依赖倒转 7.组合/聚合 8.结构型、行为型 9.依赖倒转 10.开闭 11.需求收集是否正确、体系结构的构建是否合理、测试是否完全 12.人与人之间的交流 13.接口 14.名称、目的、解决方案 15.对象组合、类继承

16.对象组合 17.对象组合、类继承 18.抽象类的指针 五、简答题 1.答:设计模式按类型分为以下三类: 1)创建型设计模式:以灵活的方式创建对象集合,用于管理对象的创建。 2)结构型设计模式:将己有的代码集成到新的面向对象设计中,用于处理类或对象的组合。 3)行为型设计模式:用于描述对类或对象怎样交互和怎样分配职责。 2.答:设计模式的主要优点如下: 1)设计模式融合了众多专家的经验,并以一种标准的形式供广大开发人员所用,它提供了一套通用的设计词汇和一种通用的语言以方便开发人员之间沟通和交 流,使得设计方案更加通俗易懂。 2)设计模式使人们可以更加简单方便地复用成功的设计和体系结构,将已证实的技术表述成设计模式也会使新系统开发者更加容易理解其设计思路。设计模式使得重用成功的设计更加容易,并避免那些导致不可重用的设计方案。 3)设计模式使得设计方案更加灵活,且易于修改。 4)设计模式的使用将提高软件系统的开发效率和软件质量,且在一定程度上节约设计成本。 5)设计模式有助于初学者更深入地理解面向对象思想,一方面可以帮助初学者更加方便地阅读和学习现有类库与其他系统中的源代码,另一方面还可以提高软件的设计水平和代码质量。 3.答:设计模式一般有如下几个基本要素:模式名称、问题、目的、解决方案、效 果、实例代码和相关设计模式,其中的关键元素包括模式名称、问题、解决方案和效果。 4.答:正确使用设计模式具有以下优点: ⑴可以提高程序员的思维能力、编程能力和设计能力。 ⑵使程序设计更加标准化、代码编制更加工程化,使软件开发效率大大提高,从 而缩短软件的开发周期。 ⑶使设计的代码可重用性高、可读性强、可靠性高、灵活性好、可维护性强。 5.答:根据类与类之间的耦合度从弱到强排列,UML中的类图有以下几种关系:依赖关 系、关联关系、聚合关系、组合关系、泛化关系和实现关系。其中泛化和实现的耦合度相等,它们是最强的。

软件设计模式试题集58887

第5章设计模式 一.选择 1. 设计模式具有的优点()。 A.适应需求变化 B.程序易于理解 C.减少开发过程中的代码开发工作量 D.简化软件系统的设计 2. 设计模式一般用来解决什么样的问题( )。 A.同一问题的不同表相B不同问题的同一表相 C.不同问题的不同表相 D.以上都不是 3. 设计模式的两大主题是( )。 A.系统的维护与开发 B 对象组合与类的继承 C.系统架构与系统开发 D.系统复用与系统扩展 4. 以下哪些问题通过应用设计模式不能够解决。() A)指定对象的接口B)针对接口编程 C)确定软件的功能都正确实现D)设计应支持变化 解答: 1. A 2. A 3. D 4. C 二.填空 1. 模式的基本要素包括名称、意图、问题、解决方案、参与者和协作者、()、实现、G oF参考。 2. 设计模式基本原则包括:开闭原则,(),包容变化原则。 3. 设计模式是一个( )的方案,它可以解决一类问题。 4. 1. 在设计模式群体中,效果是指()。 解答: 1. 效果 2. 从场景进行设计的原则

3. 抽象 4. 原因和结果 三.判断 1. 适配器模式属于创建型模式。 2. 在设计模式中,“效果”只是指“原因和结果”。 3. 设计模式使代码编制不能真正工程化。 4. 设计模式的两大主题是系统复用与系统扩展。 解答: 1. 错 2. 对 3. 错 4. 对 四.名词解释 1. 设计模式 2. 模板 3. 模式 4. 内聚度 解答: 1. 是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性 2. 模式定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。 3. 就是解决某一类问题的方法论。把解决某类问题的方法总结归纳到理论高度,那就是模式。 4. 五.简答题 1. 什么是设计模式?设计模式的目标是什么?

《软件工程》期末考试题及答案++精华版!!

《软件工程》期末考试样题 一、填空题 1.软件开发模型有(瀑布模型)(螺旋模型)第四代技术模型(原型模型)构件组装模型、混合模型。 2.可行性研究一般可以从(经济)可行性、(技术)可行性、运行可行性、法律可行性和开发可行性等方面来研究。 3.现在向银行存款,年利率为i,若希望在n年后从银行得到F元,现在应该存入的钱数为(F/(1+i)n)。 4.数据流图的基本符号包括(数据输入的源点和数据输出的汇点)、(加工)、(数据流)、(数据存储文件)。 5.Jackson图除了可以表达程序结构外,还可以表达(数据结构),它首先要分析(数据结构),并用适当的工具来描述。 6.详细设计的工具有图形工具)、表格工具和(语言工具)。 7.IPO图由(输入)、处理和(输出)三个框组成。这个图的特点是能够直观的显示三者之间的关系。 8.面向对象技术是一整套关于如何看待(软件系统)和(现实世界)的关系,以什么观点来研究问题并进行分析求解,以及如何进行系统构造的软件方法学。面向对象方法是一种运用(对象)、(类)、(继承)、(封装)、聚集、消息传送、多态性等概念来构造系统的软件开发方法。 二、单项选择题 1.下列( A )属于系统软件。 A.WINDOWS 2000 B.Word C.Flash D.3D MAX 2.下列哪个图是N-S图的构件( C )。 A. B. C. D. 3.对于螺旋模型,下列( D )不是利用笛卡尔坐 标表达的活动。 A. 制定计划 B. 实施工程 C. 风险分析 D. 程序编码 三、多项选择题 1.软件危机可以表现为(ABXD )。 A.产品不符合用户的需要 B.软件产品的质量差 C.软件的可维护性差 D.软件的价格昂贵 2.Jackson图中一般可能包括(ABCD )。 A.表头 B.表体 C.表名 D.字段名 3.关于内容耦合的描述正确的是(AD )。 A、内容耦合是最高程度的耦合 B、应该尽量使用内容耦合 C、高级语言一般设计成允许内容耦合的形式 D、如果一个模块有多个入口,可能发生内容耦合 4.下列属于不标准的书写格式(BCD )。 A、书写时适当使用空格分隔 B、一行写入多条语句 C、嵌套结构不使用分层缩进的写法 D、程序中不加注释 四、判断题(正确的在括号内打上“√”,错误的打上“×”) 1.软件生存周期是从软件开始开发到开发结束的整个时 期。() 2.系统流程图是一个典型的描述逻辑系统的传统工具。 () 3.数据流图和数据字典共同构成系统的逻辑模型。 (1) 4.扇出是一个模块直接调用的模块数目,一般推荐的扇出 为3或4。( 1 ) 5.耦合用于衡量一个模块内部的各个元素彼此结合的紧 密程度。()

吉林大学2012级软件设计模式试题

2014-2015学年第1学期 2012级《软件设计模式》考试试题(开卷) 考试时间:2014年 班级学号姓名 ?本试卷满分100分; ?请将答案写在答题纸上,写明题号,不必抄题,字迹工整、清晰; ?试题中使用C++语言作为描述语言,答题时可以使用C++或Java或C#程序设计语言中 的任意一种作为描述语言,但整个卷面只能使用其中一种,不得混合使用; ?请在答题纸和试题纸上都写上你的班级,学号和姓名,交卷时请将试题纸、答题纸和草纸 一并交上来。 一、单选题(共20分,每题2分) 1.类设计中,“变化是绝对的,稳定是相对的”,下列哪个不属于这句话中“变化”的范畴? (A) 改变函数参数的类型(B) 增加新的数据成员 (C) 改变编程语言(D) 改变对象交互的过程和顺序 2.Open-Close原则的含义是一个软件实体: (A) 应当对扩展开放,对修改关闭 (B) 应当对修改开放,对扩展关闭 (C) 应当对继承开放,对修改关闭 (D) 以上都不对 3.下列关于继承表述错误的是: (A) 继承是一种通过扩展一个已有类的实现,从而获得新功能的复用方法 (B) 泛化类(超类)可以显式地捕获那些公共的属性和方法。特殊类(子类)则通过附加 属性和方法来进行实现的扩展 (C) 破坏了封装性,因为这会将父类的实现细节暴露给子类 (D) 继承本质上是“白盒复用”,对父类的修改,不会影响到子类 4.下列关于对象组合/聚合,说法错误的是: (A) 容器类能通过被包含对象的接口来对其进行访问 (B) 属于黑盒复用,封装性好,因为被包含对象的内部细节对外是不可见 (C) 可以在运行时将被包含对象改变成同类型对象,从而改变容器类的行为效果,但没有 改变容器类的接口 (D) 比继承关系更加灵活,代价是相比继承关系,增强了类间的耦合度 5.用于分离接口和具体实现,使得接口和实现可独立变化的是: (A)适配器模式(B) 桥接模式(C) 命令模式(D)模板方法模式 6.体现“集中管理多个对象间的交互过程和顺序”的是: (A)生成器模式(B) 门面模式(C) 策略模式(D)中介者模式

软件设计师试题(带答案)

烟台市“东方杯”计算机软件技能竞赛(试题共11页) 2007年月日软件设计师 (考试时间14:00~16:00共120 分钟) 请按下述要求正确填写答题纸 1.将问题答案写在答题纸上,并在指定位置填写准考证号和姓名。 2.答题纸上除填写上述内容外只能写解答。 3.本试卷总分75分,共包括两部分,第一部分为综合知识测试,共45分;第二部分,包括三个题目,共30分。 4.解答时字迹务必清楚,字迹不清时,将不评分。

第一部分:单向选择(每题1分共45分) 试题1、2 某机主存容量为16MB ,cache 容量为16KB ,主存与cache 每块都分为16B 主存与cache 地址变换采用直接映像方法。这种映像方法优点是算法简单,缺点是 (1) 。若访问主存单元为B4AF45H ,而且该单元已经装入cache,则cache 的地址是 (2) 。 供选择的答案: (1)、 A: 转换方法复杂 B: 转换速度较慢 C: cache 利用不充分 D: 转换方法不直观 (2)、 A: 34AFH B: 2F45H C: 4AF5H D: B4AFH 试题3、4 某计算机字长为32位,浮点表示时,阶码占8位,尾数占24位(各包含1位符号位),阶码用补码表示,尾码用原码表示,该浮点数能表示的最大正数是 (3) ,能表示的最小负数是 (4) 。 供选择的答案: (3)、A: ( )23 7122--? B: ()()2371221--?- C: ( )24 7 12 21--?- D: ()237122---? (4)、A: ( )23 7 122 ---? B: ( )()23 7 12 2 1--?- C: ( )24 7 122 --? D: ( )()23 7 12 21---?- 试题5、6 可维护性是评价软件质量的重要方面,系统的可维护性通常包括 (5) , (6) 维护是为了扩充软件的功能或提高原有软件的性能而进行的维护活动。 供选择的答案: (5)、 A: 可用性和可理解性 B:可修改性、数据独立性和数据一致性 C:可测试性和稳定性 D:可理解性、可修改性和可测试性 (6)、 A:改正性 B:完善性 C:适应性 D:合理性 试题7、8 形式语言是使用来描述模块具体 (7) 的非正式的比较灵活的语言,有点是接近 (8) 供选择的答案: (7)、 A:算法 B:结构 C:行为 D:状态 (8)、 A: 机器语言 B:汇编语言 C:高级语言 D:自然语言

最新软件工程期末考试题

41.软件是一种产品。 A.物质 B. 逻辑√ C. 工具 D. 文档 2.软件产品的生产主要___ _ _。 A. 研制√ B. 再生产 C. 开发 D. 生产 3.软件工程是一门__ _学科。 A. 工程性 B. 原理性 C. 综合性√ D. 理论性 4.类是面向对象方法中的一个重要概念,类的描述分为:名称、和操作。 A. 角色 B. 用例 C. 方法 D. 属性√ 5.下列描述中正确的是___ __。 A.软件工程的主要是解决软件开发中的技术问题 B.软件工程主要解决软件产品的生产率问题 C.软件工程的主要思想是强调在软件开发过程中需要运用工程化的原则√ D.软件工程只是解决软件项目的问题. 6.需求分析最终结果是产生。 A.项目开发计划B.可行性分析报告C.设计说明书D.需求分析说明书√7.需求分析中,开发人员要从用户那里解决最重要的问题是。 A.要让软件做什么√B.要给软件提供哪些信息 C.要求软件工作效率怎样D.要让该软件具有何种结构 8.分层DFD是一种比较严格又易于理解的描述方式,它的顶层图描述了系统的。 A.软件的作者B.输入与输出√C.细节D.绘制的时间 9.数据字典中,一般不包括条目。 A.源点与终点√B.数据存储C.数据流D.加工 10.软件需求分析是保证软件质量的重要步骤,它的实施应该是在。 A.编码阶段B.软件设计阶段√C.软件定义过程D.软件开发全过程11.软件的主要功能和结构是在阶段确定的。 A.测试B.编程C.分析设计√D.维护 12.需求分析最终结果是产生。 A.需求分析说明书√B.可行性分析报告C.项目开发计划D.设计说明书 13.可行性研究主要从方面进行研究。 A.技术可行性,经济可行性,操作可行性B.经济可行性,系统可行性,时间可行性 C.经济可行性,系统可行性,操作可行性D.技术可行性,经济可行性,社会可行性√ 14.可行性分析研究的目的是。 A.项目值得开发与否√B.开发项目C.争取项目D.规划项目 15.需求分析中开发人员要从用户那里了解。 A.输入的信息B.用户使用界面C.软件做什么√D.软件的规模 16.需求分析阶段研究的对象是。 A.软硬件要求B.系统要求C.分析员要求D.用户需求√ 17.系统流程图用于可行性分析中的的描述。 A.目标系统B.当前逻辑模型C.当前运行系统√D.新系统 18.数据字典是用来定义中的各个成分的具体含义的。

相关主题
文本预览
相关文档 最新文档