当前位置:文档之家› 软件体系结构与设计模式期末复习

软件体系结构与设计模式期末复习

软件体系结构与设计模式期末复习
软件体系结构与设计模式期末复习

体系结构期末复习

一、选择题

(一)

1. 设计模式的基本原理是( C )

A. 面向实现编程

B. 面向对象编程

C. 面向接口编程

D. 面向组合编程

2. 设计模式的两大主题是( D )

A. 系统的维护与开发

B. 对象组合与类的继承

C. 系统架构与系统开发

D. 系统复用与系统扩展

3. 依据设计模式思想,程序开发中应优先使用的是( A )关系实现复用。

A. 组合聚合

B. 继承

C. 创建

D. .以上都不对

4. 关于继承表述错误的是( D )

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

B. 泛化类(超类)可以显式地捕获那些公共的属性和方法。特殊类(子类)则通过附加属性和方法来进行实现的扩展。

C. 破坏了封装性,因为这会将父类的实现细节暴露给子类。

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

5. 常用的设计模式可分为( A )

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

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

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

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

6. “不要和陌生人说话”是对( D )设计原则的通俗表述。

A. 接口隔离

B. 里氏代换

C. 依赖倒转

D. .迪米特法则

7. 在适配器模式中,对象适配器模式是对( A )设计原则的典型应用

A. 合成聚合

B. 里氏代换

C. 依赖倒转

D. .迪米特法则

8. 将一个类的接口转换成客户希望的另一个接口,这句话是对(C)设计模式的描述

A. 策略模式

B. 桥接模式

C. 适配器模式

D. 单例模式

9. 以下设计模式中属于结构模式的是( D )

A. 观察者模式

B. 单例模式

C. 策略模式

D. 外观模式

10. 以下不属于对象行为型模式是( D )

A. 命令模式

B. 策略模式

C. 访问者模式

D. 桥接模式

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

A. 抽象工厂模式

B. 观察者模式

C. 策略模式

D. 桥接模式

12. Open-Close开闭原则的含义是一个软件实体( A )

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

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

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

D. 以上都不对。

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

A. 策略模式

B. 装饰模式

C. 桥接模式

D. 观察者模式

14. 保证一个类仅有一个实例,并提供一个访问它的全局访问点。这句话是对( D )设计模式的描述。

A. 外观模式

B. 策略模式

C. 适配器模式

D. 单例模式

15. 以下意图哪个是用来描述组合模式( C )

A. 为其他对象提供一种代理以控制对这个对象的访问。

B. 运用共享技术有效地支持大量细粒度的对象。

C. 将对象组合成树形结构以表示“部分-整体”的层次结构。

D. 将一个复杂对象的构建与它的表示分离。

16. 以下意图哪个是用来描述命令模式( A )

A. 将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化。

B. 定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。

C. 为其他对象提供一种代理以控制对这个对象的访问。

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

17. 以下哪种情况不适合使用适配器模式( D )

A. 你想使用一个已经存在的类,而它的接口不符合你的需求。

B. 你想创建一个类,该类可以复用另外一个类的功能。

C. 你想创建一个类,该类可以复用另外多个类的功能。

D. 你想在类中用相对较少的对象引用取代很多对象的引用。

18. 以下意图哪个是用来描述观察者模式( B )

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

B. 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时, 所有依赖于它的对象都得到通知并被自动更新。

C. 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。

D. 使多个对象都有机会处理请求,避免请求的发送者和接收者之间的耦合关系。

19. 以下意图哪个是用来描述状态模式( C )

A. 使多个对象都有机会处理请求,避免请求的发送者和接收者之间的耦合关系。

B. 顺序访问一个聚合对象中各个元素, 而又不需暴露该对象的内部表示。

C. 允许一个对象在其内部状态改变时改变它的行为。看起来似乎修改了它的类。

D. 捕获一个对象的内部状态,并在该对象之外保存这个状态。

20. 以下意图哪个是用来描述策略模式( D )

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

B. 将一个复杂对象的构建与它的表示分离。

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

D.

(二)

1. 要依赖于抽象,不要依赖于具体。即针对接口编程,不要针对实现编程,是( D )

A. 开闭原则

B. 接口隔离原则

C. 里氏代换原则

D. 依赖倒转原则

2. 以下对"开-闭"原则的一些描述错误的是( A )

A. "开-闭"原则与"对可变性的封装原则"没有相似性。

B. 找到一个系统的可变元素,将它封装起来,叫"开-闭"原则。

C. 对修改关闭: 是其原则之一。

D. 从抽象层导出一个或多个新的具体类可以改变系统的行为,是其原则之一。

3. 依据设计模式思想,程序开发中应优先使用的是( B )关系实现复用。

A. 继承

B. 组合聚合

C. 创建

D. .以上都不对

4. 设计模式的两大主题是( C )

A. 系统的维护与开发

B. 对象组合与类的继承

C. 系统复用与系统扩展

D. 系统架构与系统开发

5. 常用的设计模式可分为( C )

A. 过程型、创建型和结构型

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

C. 创建型、结构型和行为型

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

6. “知道的越少越好”是对( D )设计原则的通俗表述。

A. 接口隔离

B. 里氏代换

C. 依赖倒转

D. .迪米特法则

7. 在适配器模式中,对象适配器模式是对( A )设计原则的典型应用

A. 合成聚合

B. 里氏代换

C. 依赖倒转

D. .迪米特法则

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

A. 一对多

B. 多对多

C. 一对一

D. 以上都不对

9. 以下设计模式中不属于创建型模式的是( B )

A. 工厂模式

B. 外观模式

C. 生成器模式

D. 单例模式

10. 以下不属于结构型模式是( C )

A. 组合模式

B. 适配器模式

C. 访问者模式

D. 桥接模式

11. 以下不属于行为型模式是( B )

A. 迭代器模式

B. 外观模式

C. 状态模式

D. 策略模式

12. 将一个类的接口转换成客户希望的另一个接口,这句话是对(C)设计模式的描述

A. 策略模式

B. 桥接模式

C. 适配器模式

D. 单例模式

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

A. 策略模式

B. 装饰模式

C. 适配器模式

D. 观察者模式

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

A. 桥接模式

B. 组合模式

C. 命令模式

D. 观察者模式

15. 保证一个类仅有一个实例,并提供一个访问它的全局访问点。这句话是对( D )设计模式的描述。

A. 外观模式

B. 策略模式

C. 适配器模式

D. 单例模式

16. 以下哪项不是桥接模式的优点( C )

A. 分离接口及其实现部分。

B. 提高可扩充性。

C. 改变值以指定新对象。

D. 实现细节对客户透明。

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

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

B. 被观察者可以通知观察者进行更新。

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

D. 以上表述全部错误。

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

A. 创建型

B. 结构型

C. 行为型

D. .以上都不对

19. 以下意图哪个是用来描述状态模式( C )

A. 使多个对象都有机会处理请求,避免请求的发送者和接收者之间的耦合关系。

B. 顺序访问一个聚合对象中各个元素, 而又不需暴露该对象的内部表示。

C. 允许一个对象在其内部状态改变时改变它的行为。看起来似乎修改了它的类。

D. 捕获一个对象的内部状态,并在该对象之外保存这个状态。

20. 以下意图哪个是用来描述组合模式( C )

A. 为其他对象提供一种代理以控制对这个对象的访问。

B. 运用共享技术有效地支持大量细粒度的对象。

C. 将对象组合成树形结构以表示“部分-整体”的层次结构。

D.

1 2 3 4 5 6 7 8 9 10

D A B C C D A A B C

11 12 13 14 15 16 17 18 19 20

B C C B D C C A C C

(三)

1. 常用的设计模式可分为( A )

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

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

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

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

2. “不要和陌生人说话”是对( D )设计原则的通俗表述。

A. 接口隔离

B. 里氏代换

C. 依赖倒转

D. .迪米特法则

3. 在适配器模式中,对象适配器模式是对( A )设计原则的典型应用

A. 合成聚合

B. 里氏代换

C. 依赖倒转

D. .迪米特法则

4. 将一个类的接口转换成客户希望的另一个接口,这句话是对(C)设计模式的描述

A. 策略模式

B. 桥接模式

C. 适配器模式

D. 单例模式

5. 以下设计模式中属于结构模式的是( D )

A. 观察者模式

B. 单例模式

C. 迭代器模式

D. 适配器模式

6. 以下意图哪个是用来描述命令模式( A )

A. 将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化。

B. 定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。

C. 为其他对象提供一种代理以控制对这个对象的访问。

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

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

A. 抽象工厂模式

B. 桥接模式

C. 状态模式

D. 适配器模式

图1

8. Open-Close开闭原则的含义是一个软件实体( A )

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

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

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

D. 以上都不对。

9. 以下意图哪个是用来描述组合模式( C )

A. 为其他对象提供一种代理以控制对这个对象的访问。

B. 运用共享技术有效地支持大量细粒度的对象。

C. 将对象组合成树形结构以表示“部分-整体”的层次结构。

D. 将一个复杂对象的构建与它的表示分离。

10. 以下意图哪个是用来描述状态模式( C )

A. 使多个对象都有机会处理请求,避免请求的发送者和接收者之间的耦合关系。

B. 顺序访问一个聚合对象中各个元素, 而又不需暴露该对象的内部表示。

C. 允许一个对象在其内部状态改变时改变它的行为。看起来似乎修改了它的类。

D.

(四)

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

A. 创建型

B. 结构型

C. 行为型

D. .以上都不对

2. 以下对"开-闭"原则的一些描述错误的是( A )

A. "开-闭"原则与"对可变性的封装原则"没有相似性。

B. 找到一个系统的可变元素,将它封装起来,叫"开-闭"原则。

C. 对修改关闭: 是其原则之一。

D. 从抽象层导出一个或多个新的具体类可以改变系统的行为,是其原则之一。

3. 依据设计模式思想,程序开发中应优先使用的是( B )关系实现复用。

A. 继承

B. 组合聚合

C. 创建

D. .以上都不对

4. “知道的越少越好”是对( D )设计原则的通俗表述。

A. 接口隔离

B. 里氏代换

C. 依赖倒转

D. .迪米特法则

5. 在适配器模式中,对象适配器模式是对( A )设计原则的典型应用

A. 合成聚合

B. 里氏代换

C. 依赖倒转

D. .迪米特法则

6. 保证一个类仅有一个实例,并提供一个访问它的全局访问点。这句话是对( D )设计模式的描述。

A. 外观模式

B. 策略模式

C. 适配器模式

D. 单例模式

7. 以下意图哪个是用来描述策略模式( D )

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

B. 将一个复杂对象的构建与它的表示分离。

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

D. 定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。

8. 以下不属于结构型模式是( C )

A. 组合模式

B. 适配器模式

C. 访问者模式

D. 桥接模式

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

A. 策略模式

B. 状态模式

C. 适配器模式

D. 桥接模式

10. 以下意图哪个是用来描述状态模式( C )

A. 使多个对象都有机会处理请求,避免请求的发送者和接收者之间的耦合关系。

B. 顺序访问一个聚合对象中各个元素, 而又不需暴露该对象的内部表示。

C. 允许一个对象在其内部状态改变时改变它的行为。看起来似乎修改了它的类。

D.

12345678910

A A

B D A D D

C

D C (五)

1. 常用的设计模式可分为( A )

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

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

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

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

2. “不要和陌生人说话”是对( D )设计原则的通俗表述。

A. 接口隔离

B. 里氏代换

C. 依赖倒转

D. .迪米特法则

3. 在适配器模式中,对象适配器模式是对( A )设计原则的典型应用

A. 合成聚合

B. 里氏代换

C. 依赖倒转

D. .迪米特法则

4. 将一个类的接口转换成客户希望的另一个接口,这句话是对(C)设计模式的描述

A. 策略模式

B. 桥接模式

C. 适配器模式

D. 单例模式

5. 以下设计模式中属于结构模式的是( D )

A. 观察者模式

B. 单例模式

C. 迭代器模式

D. 适配器模式

6. 以下意图哪个是用来描述命令模式( A )

A. 将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化。

B. 定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。

C. 为其他对象提供一种代理以控制对这个对象的访问。

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

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

A. 抽象工厂模式

B. 桥接模式

C. 状态模式

D. 适配器模式

图1

8. Open-Close开闭原则的含义是一个软件实体( A )

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

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

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

D. 以上都不对。

9. 以下意图哪个是用来描述组合模式( C )

A. 为其他对象提供一种代理以控制对这个对象的访问。

B. 运用共享技术有效地支持大量细粒度的对象。

C. 将对象组合成树形结构以表示“部分-整体”的层次结构。

D. 将一个复杂对象的构建与它的表示分离。

10. 以下意图哪个是用来描述状态模式( C )

A. 使多个对象都有机会处理请求,避免请求的发送者和接收者之间的耦合关系。

B. 顺序访问一个聚合对象中各个元素, 而又不需暴露该对象的内部表示。

C. 允许一个对象在其内部状态改变时改变它的行为。看起来似乎修改了它的类。

D.

12345678910

A D A C D A D A C C

填空题

(一)

1. 面向对象的七条设计原则包括:单一职责原则,__________,___________,_________,合成聚合原则,接口隔离原则以及_________________ 。其中外观模式是_________原则的典型应用。

2. 工厂模式中分为___________,工厂方法,_________________三种模式。其中,可以应用平行等级结构完成创建工作的模式是__________________模式。

3. 适配器模式,可以细分为___________适配器和___________适配器两种实现。其中

_________适配器采用的是继承复用,而___________适配器采用的是合成聚合复用。

4. Java API中,有两个与观察者模式相关的类和接口,分别是Observable和Observer,Observer 的Update函数中用到的两个参数的参数类型是__________和____________。

5. 事件体系结构中的三个基本角色包括事件源、___________和________________。其中在编程时一定要将________________注册添加到事件源中。

6. 单例模式有两种方式实现,分别为______________和________________。它们共同的特征是构造函数的访问属性必须是_________。

答案:

1、开闭原则里氏代换原则依赖倒转原则迪米特法则迪米特法则

2、简单工厂抽象工厂工厂方法

3、类对象类对象

4、Observable Object

5、事件事件监听者事件监听者

6、饿汉式懒汉式私有(private)

(二)

1. 面向对象的七条设计原则包括:______________,开闭原则,___________,依赖倒转原则,_____________,接口隔离原则以及_________________ 。其中外观模式是_________原则的典型应用。

2. 工厂模式中分为简单工厂,______________,_________________三种模式。其中,可以应用平行等级结构完成创建工作的模式是__________________模式。

3. 适配器模式,可以细分为___________适配器和___________适配器两种实现。其中

_________适配器采用的是继承复用,而___________适配器采用的是合成聚合复用。

4. Java API中,有两个与观察者模式相关的类和接口,分别是Observable和Observer,Observer 的Update函数中用到的两个参数的参数类型是__________和____________。

5. 事件体系结构中的三个基本角色包括___________、___________和________________。

6. 单例模式有两种方式实现,分别为______________和________________。其中_______能够实现类被加载时就同时生成类的实例。

答案:

1、单一职责原则里氏代换原则合成聚合原则迪米特法则迪米特法则

2、工厂方法抽象工厂工厂方法

3、类对象类对象

4、Observable Object

5、事件源事件事件监听者

6、饿汉式懒汉式饿汉式

(三)

1. 面向对象的七条设计原则包括:单一职责原则,_____________,里氏代换原则,

____________,合成聚合原则,接口隔离原则以及_________________ 。

2. 工厂模式中分为简单工厂,________________和_________________三种模式。

3. Java API中,有两个与观察者模式相关的类和接口,分别是_____________和____________。

4. 单例模式有两种方式实现,分别称为______________和________________。它们共同的特征是构造函数的访问修饰符必须是_________。

答案:

开闭原则、依赖倒转原则、迪米特法则

工厂方法、抽象工厂(方法)

3、Observable 、Observer

4、懒汉式、饿汉式、private(私有的)

(四)

1. 面向对象的七条设计原则包括:______________,开闭原则,___________,依赖倒转原则,_____________,接口隔离原则以及_________________ 。

2. 适配器模式,可以细分为___________适配器和___________适配器两种实现。其中

_________适配器采用的是继承复用。

3. 能够定义对象间的一种“一对多”的依赖关系,当一个对象的状态改变,所有依赖于它的对象都能得到通知并自动更新的设计模式的名称是_____________。

4. 单例模式中能够实现延时加载的方式,称为_______________,实现即时加载的方式称为______________。

答案:

单一职责原则、里氏代换原则、合成聚合原则、迪米特法则

类、对象、类

3. 观察者模式

4. 懒汉式、饿汉式

(五)

1. 面向对象的七条设计原则包括:单一职责原则,_________________,里氏代换原则,_________________,合成聚合原则,接口隔离原则以及_________________ 。

2. 工厂模式中分为简单工厂,________________和_________________三种模式。

3. 适配器模式,可以细分为___________适配器和___________适配器两种实现。

4. 单例模式有两种方式实现,分别称为______________和________________。它们共同的特征是构造函数的访问修饰符必须是_____________。

答案:

开闭原则、依赖倒转原则、迪米特法则

工厂方法、抽象工厂(方法)

3、类、对象

4、懒汉式、饿汉式、private(私有的)

判断题

(一)

1. 开闭原则的关键是抽象化。

2. 在软件开发中,如果要实现复用,应尽量较多使用继承,较少使用合成聚合的方式。

3. 当一个对象的行为取决于它所处的状态时,这时我们应该使用桥接模式

4. 适配器模式是一种创建型设计模式

5. MVC结构中模型和视图之间交互的实现可以基于观察者模式,其中模型是被观察者。答案:1. √ 2. × 3. × 4. × 5. √

(二)

1. 设计模式的基本原理是面向实现编程。

2. 在软件开发中,如果要实现复用,应尽量较多使用继承,较少使用合成聚合的方式。

3. 当一个对象的行为取决于它所处的状态时,这时我们应该使用状态模式

4. 适配器模式是一种创建型设计模式

5. MVC结构中模型和视图之间交互的实现可以基于观察者模式,其中模型是被观察者。答案:1. × 2. × 3. √ 4. × 5. √

(三)

1. 开闭原则的关键是抽象化。

2. 在软件开发中,如果要实现复用,应尽量较多使用继承,较少使用合成聚合的方式。

3. 当一个对象的行为取决于它所处的状态时,这时我们应该使用桥接模式。

4. 适配器模式是一种创建型设计模式。

5. 命令模式标准类图中的Receiver不是必须存在的。

答案:

(四)

1. 设计模式的基本原理是面向实现编程。

2. 在软件开发中,如果要实现复用,应尽量较多使用继承,较少使用合成聚合的方式。

3. 当一个软件需要实现操作可撤销的功能时,我们应该使用命令模式。

4. 迭代器模式是一种结构型设计模式。

5. 抽象工厂方法完全符合开闭模式。

答案:

(五)

1. 开闭原则的关键是抽象化。

2. 在软件开发中,如果要实现复用,应尽量较多使用继承,较少使用合成聚合的方式。

3. 当一个对象的行为取决于它所处的状态时,这时我们应该使用桥接模式。

4. 适配器模式是一种创建型设计模式。

5. 命令模式标准类图中的Receiver不是必须存在的。

答案:

简答题

(一)

1. 假设系统中有三个类,分别为类A、类B和类C。在现有的设计中,让类A直接依赖类B,如果要将类A改为依赖类C,必须通过修改类A的代码来达成,请问这样的设计符合开闭原则吗(2分)如果符合,请依据开闭原则进行解释,如果不符合请给出重构的方法(3分)。

2. 假设某一软件系统中存在类A,B,C,D,E。请分别画出使用这些类的中介者模式类图及外观模式类图。

3. 假如系统中存在一组具有相同结构的产品类,如图所示,如果要创建具体产品对象,

应该使用哪一种创建模式(2分)

根据给出的类图,绘制出产品等级和产品族的图示。(3分)

根据产品族图示,绘制工厂类的层次结构图(必须写清类的方法)。(4分)

答案:

目前的设计不符合开闭原则(2分)

重构问题:新建接口I,使得类A依赖于接口I ,而类B和C实现接口I。(或相同概念的表述)(3分)

中介者模式类图(4分)外观模式类图(4分)

1)应该使用抽象工厂模式(2分)

2)产品等级和产品族的图示(3分)

工厂类图(4分,不对类名和方法名做限制,能够正确表达含义即可)

(二)

1. 简述开闭原则、依赖倒转原则的定义。

2. 简述策略模式的应用场景(3分),并绘制策略模式的类图(3分)。

3. 假如要用软件实现自动茶水销售机的功能,茶水的价格取决于茶的品种和杯子的大小。请回答以下问题,

应该使用哪一种模式(2分) 请绘制该模式的类图。(4分)

答案:

开闭原则:一个软件实体,应该对扩展开放,对修改关闭(3分)

依赖倒转原则:高层模块不应该依赖于低层模块,它们都应该依赖抽象。(3分)

1)策略模式的应用场景:当解决一个问题,有很多种方法或解决方案可以使用时,可以将每一种方法或解决方案封装成一个类,可以相互替换(或相同意义表达,3分). 2)类图(3分)

1)应该使用桥接模式(2分)

2) 类图(4分,不对类名和方法名做限制,能够正确表达含义即可)

Context

-strategy : Strategy +algorithm ()...

Strategy

{abstract}

+algorithm ()...

ConcreteStrategyA +algorithm ()...

ConcreteStrategyB +algorithm ()...

(三)

1. 简述依赖倒转原则的定义。

2. 假如系统中存在一组具有相同结构的产品类,如图所示,如果要创建具体产品对象,应该使用哪一种创建模式(2分)

根据给出的类图,绘制出产品等级和产品族的图示。(4分)

3)根据产品族图示,绘制工厂类的层次结构图(必须写清类的方法)。(4分)

答案:

1. 高层模块不应该依赖低层模块,它们都应该依赖抽象(3分)。抽象不应该依赖于细节,细节应该依赖于抽象(3分)。

)应该使用抽象工厂模式(2分)

2)产品等级和产品族的图示(4分)

3) 类图(4分,不对类名和方法名做限制,能够正确表达含义即可)

程序设计题

(一)

1. 现在需要开发一款游戏软件,请以单例模式来设计其中的Boss角色。角色的属性和动作可以任意设计。要求:该Boss类可以在多线程中使用。(8分)

2. 一个农场公司,专门负责培育各种水果,有葡萄,草莓和苹果,请使用工厂方法,编写工厂类和主程序,并在主程序中来完成草莓生长状态的描述。(8分)

3. 给定如图所示的树形结构,请应用组合模式,在客户端完成数据的展示。具体要求如下:绘制组合模式的类图。(4分)

编写简单元素和复杂元素的代码。(4分)

在客户端构造出树形数据并输出。(4分)

提示:程序运行后,输出信息应为

Root

Leaf A

Comp B

Leaf BX

Leaf BY

Leaf C

答案:

Public class Boss{

Private static Boss instance;

Public interface Factory{

Fruit build();

}

Public class AppleFactory implements Factory{

Public Fruit build(){

Return new Apple();

}

}

Public class GrapeFactory implements Factory{

Public Fruit build(){

Return new Grape();

}

}

Public class StrawberryFactory implements Factory{

Public Fruit build(){

Return new Strawberry();

}

}

Public class MainUI{

Public static void main(string[] str){

Factory fac = new StrawberryFactory();

Fruit ft = ();

();

();

();

}

}

3.

1)类图,类名不限,但必须将抽象的概念,以及Composite和Component之间的关系用正确的连线表示。(4分)

简单元素、复杂元素(4分):

class Leaf implements Component{

String name;

public Leaf(String name){ = name; }

public void display(){

name);

}

public void add(Component c){}

public void remove(Component c){}

}

class Composite implements Component{

String name;

ArrayList list = new ArrayList();

public Composite(String name){

= name;

}

public void display(){

for(int i = 0 ; i < () ;i ++)

{

(i).display();

}

}

public void add(Component c){(c); }

public void remove(Component c){(c);}

}

客户端(4分):

public class Test {

public static void main(String[] args){

Component root = new Composite("Root");

(new Leaf("Leaf A"));

Component comp = new Composite("Comp B");

(comp);

(new Leaf("Leaf BX"));

(new Leaf("Leaf BY"));

(new Leaf("Leaf C"));

();

}

}

(二)

1. 现在需要开发一款打印机管理软件,请以单例模式来设计其中的打印池PrintSpooler。要求:该PrintSpooler类可以在多线程中使用。(10分)

2. 一个农场公司,专门负责培育各种水果,有葡萄,草莓和苹果,请使用简单工厂模式,编写简单工厂类和主程序,并在主程序中来完成苹果生长状态的描述。(10分)

3. 给定如图所示的树形结构,请应用组合模式,在客户端完成数据的展示。具体要求如下:绘制组合模式的类图。(4分)

编写简单元素和复杂元素的代码。(4分)

在客户端构造出树形数据并输出。(4分)

提示:程序运行后,输出信息应为

Dir1

File1

Dir2

File3

Dir3

File4

答案:

Public class PrintSpooler{

Private static PrintSpooler instance;

Public class FruitFactory{

1)类图,类名不限,但必须将抽象的概念,

以及Composite和Component之间的关系用正确的连线表示。

简单元素、复杂元素(4分):

class Leaf implements Component{

String name;

public Leaf(String name){

= name;

}

public void display(){

}

public void add(Component c){}

public void remove(Component c){}

}

class Composite implements Component{

String name;

ArrayList list = new ArrayList();

public Composite(String name){

= name;

}

public void display(){

for(int i = 0 ; i < () ;i ++)

{

(i).display();

}

}

public void add(Component c){

(c);

}

public void remove(Component c){

(c);

}

}

客户端(4分):

public class Test {

public static void main(String[] args){

Component root = new Composite("Dir1");

(new Leaf("File1"));

Component comp = new Composite("Dir2");

(comp);

(new Leaf("File3"));

Component comp = new Composite("Dir3");

(comp);

(new Leaf("File4"));

();

}

}

(三)

1. 一个农场公司,专门负责培育各种水果,有葡萄,草莓和苹果,请使用简单工厂模式,编写简单工厂类和主程序,并在主程序中来完成苹果生长状态的描述。(8分)

2.下图是某系统的数据部分的类图。因为该层次结构中的操作需要经常变化,所以需要用访问者模式对其进行重构,请按以下要求完成题目:

(1)绘制重构后系统完整类图。(4分)

(2)给出重构后ElementA类的代码。(4分)

(3)在客户端运用访问者模式,对ElementA的实例,完成CalPrice操作。(2分)

3. 给定如图所示的树形结构,请应用组合模式,在客户端完成数据的展示。具体要求如下:

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

一、填空题(每空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各不同的产品等级结构,只要指明一个产品所处的产品族以及它所在的等级结构,就可以唯一地确认这个产品。那么使用抽象工厂方法模式只需要提供

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

设计模式试题 一.选择 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.为了系统中的一组功能调用提供一个一致的接口,这个接口使得这一子系统更 加容易使用。

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

安徽师范大学 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 模型中总共包含几个部分,分别是哪几个部分,哪个部分是核心部分?

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

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)什么是框架?框架与模式的区别有哪些? 框架是针对某个领域,提供用于开发应用系统的类的集合。 区别:层次不同、范围不同、相互关系

软件设计模式试题集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. 什么是设计模式?设计模式的目标是什么?

东北大学《软件设计模式》期末考试必备真题集(含答案)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、熟悉每个设计模式的定义、模式UML图解、模式使用情形以及模式优缺点。 2、设计模式的两大主题是什么? 3、设计模式分成几大类?每大类各包含哪些模式? 4、为什么要使用设计模式?使用设计模式有哪些好处? 5、比较抽象工厂模式和工厂方法模式相似性和差异性。什么情况下使用抽象工厂模式?什 么情形下使用工厂方法模式? 6、简述原型模式中浅层克隆和深度克隆的区别?分别给出代码说明。 7、模板方法和普通的实现类继承抽象类方式有何区别? 8、是比较和分析适配器模式和桥接模式之间的共性和差异性。 9、请用组合模式实现学校人事管理模式。 10、综合应用装饰模式、命令模式和状态模式实现工具条命令按钮鼠标进入时高亮显示 状态以及鼠标单击按钮后呈现凹陷状态,表明当前按钮为选中状态。 11、请阐述享元模式是如何节省系统内存的?试举例分析使用享元模式前后的内存节 约之比。 12、使用解析器模式实现对学生成绩表的查询输入语句进行解析并执行查询,成绩表结 14、试比较和分析中介者模式和观察者模式之间的相似性和差异性?两者是否能够相 互转化? 15、模板方法和普通的抽象类继承有什么区别? 16、使用访问者模式对12题中的学生信息进行报到。 1、熟悉每个设计模式的定义、模式UML图解、模式使用情形以及模式优缺点。(见书)答:单件模式: ○1单例模式:class Singleton{private static Singleton instance; private Singleton(){} public static Singleton GetInstance(){if (instance == null) { instance = new Singleton();} return instance; } 客户端代码:class Program{static void Main(string[] args) { Singleton s1 = Singleton.GetInstance(); Singleton s2 = Singleton.GetInstance(); if (s1 = = s2) {Console.WriteLine("Objects are the same instance");} Console.Read();}} ○2多线程时的单例(Lock是确保当一个线程位于代码的临界区时,另一个线程不进入临界区。如果其他线程试图进入锁定的代码,则它将一直等待(即被阻止),直到该对象被释放)class Singleton{private static Singleton instance; private static readonly object syncRoot = new object(); private Singleton(){} public static Singleton GetInstance(){lock (syncRoot) {

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

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中的类图有以下几种关系:依赖关 系、关联关系、聚合关系、组合关系、泛化关系和实现关系。其中泛化和实现的耦合度相等,它们是最强的。

软件设计模式期末考试大纲

软件设计模式期末考试大纲 名词解释: 1、云计算? 答:云计算是将计算机,存储等资源以服务的形式提供给外部客户,并根据使用情况付费的新型计算模式。云计算具有高可用、高可伸缩、高性能、能够随时随地地通过多种终端进行访问的特点,这为用户带来了极大的便利。2、三层结构的优缺点? 答: 优点:(1)具有良好的灵活性和可扩展性 (2)开发语言独立 (3)具有可共享性 (4)具有较好的安全性 (5)增强了企业对象的重复可用性 (6)成为了真正意义上的瘦客户端从而具备了很高的稳定性、延展性和执行效率。 (7)可以将服务集中在一起管理,统一服务于客户端。从而具备了良好的容错能力和负载平衡能力。 缺点: 1、全网多级投资计划建设,建设模式不尽相同,缺乏统一规划和管理,难以达到全网最优化设计; 2、用户与内容距离远,北方网络基本上是三级网络结构,网络结构层次和网络管理层次增多,导致IP不必要的路由跳数,使得网络的性能指标下降 3、加大了以后扩容成本和维护成本 4、网络是按行政区划进行网络设计和路由组织,不能根据用户的实际需求灵活的调整和调度网络资源,同时使我们业务开展成本和业务维护成本增加。尤其是给全网性增值业务的开放带来困难 5、在骨干网节点存在骨干网设备和省网设备的背靠背连接,投资有较大浪费 3,P2P? 答:p2p体系结构是一种非集中架构,即在网络中国没有服务器或客户端的概念。在p2p体系结构模式中,网络中的每一个结点都被认为是一个对等点,他们拥有相同的地位,任何一个结点都可以请求服务和提供服务,也就是说每一个结点都是客户端,每一个结点都是服务器。 4,web服务 Web service 一个被设计成支持网络上的计算机对计算机的可互操作的软件系统,它包含一个自瞄述的接口进行交互。它是基于互联网的、开放性、基于xml数据交换传输协议的企业应用web服务器是向发出请求的浏览器提供文档的程序web服务器是指驻留于因特网上某种类型计算机的程序 5,网格计算的概念

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

《软件工程》期末考试样题 一、填空题 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)中介者模式

软件体系结构期末考试试题

软件体系结构-设计模式练习题1 1.面向对象分析与设计中的(1)是指一个模块在扩展性方面应该是开放的,而在更改性方面应该是封闭的;而(2)是指子类应当可以替换父类并出现在父类能够出现的任何地方。 (1) A.开闭原则 B.替换原则 C.依赖原则 D.单一职责原则 (2) A.开闭原则 B.替换原则 C.依赖原则 D.单一职责原则 2.(3)限制了创建类的实例数量,而(4)将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 (3) A.命令模式(Command)B.适配器模式(Adapter)C.策略模式(Strategy) D.单例模式(Singleton) (4) A.命令模式(Command) B.适配器模式(Adapter) C.策略模式(Strategy) D.单例模式(Singleton) 3. (5)设计模式允许一个对象在其内部状态改变时改变它的行为。下图为这种设计模式的类图,已知类State 为抽象类,则类(6)的实例代表了Context 对象的状态。 (5) A.单件(Singleton) B.桥接(Bridge) C.组合(Composite) D.状态(State) (6) A. Context B. ConcreteStateA C. Handle D. State

4.某公司欲开发一门户网站,将公司的各个分公司及办事处信息进行整合。现决定采用Composite设计模式来实现公司的组织结构关系,并设计了如下图所示的UML类图。图中与Composite模式中的“Component”角色相对应的类是(7) ,与“Composite”角色相对应的类是(8) 。 (7) A. Company B. FinanceDepartment C. HRDepartment D. ConcreteCompany (8) A. Company B. FinanceDepartment C. HRDepartment D. ConcreteCompany 5.某软件公司正在设计一个通用的嵌入式数据处理平台,需要支持多种数据处理芯片之间的数据传递与交换。该平台的核心功能之一要求能够屏蔽芯片之间的数据交互,使其耦合松散,并且可以独立改变芯片之间的交互过程。针对上述需求,采用(9)最为合适。 (9) A. 抽象工厂模式 B. 策略模式 C. 中介者模式D. 状态模式 6.某软件公司正在设计一个图像处理软件,该软件需要支持用户在图像处理中的撤销和重做等动作,为了实现该功能,采用(10)最为合适。 (10) A. 单例模式B. 命令模式 C. 访问者模式 D. 适配器模式 7.某互联网公司正在设计一套网络聊天系统,为了限制用户在使用该系统时发表不恰当言论,需要对聊天内容进行特定敏感词的过滤。针对上述功能需求,采用(11)能够灵活配置敏感 词的过滤过程。 (11) 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.数据字典是用来定义中的各个成分的具体含义的。

设计模式试题(仅供参考)

1、设计模式一般用来解决什么样的问题( a) A.同一问题的不同表相 B不同问题的同一表相 C.不同问题的不同表相 D.以上都不是 2、下列属于面向对象基本原则的是( c ) A.继承 B.封装 C.里氏代换 D都不是 3、Open-Close原则的含义是一个软件实体( a ) A.应当对扩展开放,对修改关闭. B.应当对修改开放,对扩展关闭 C.应当对继承开放,对修改关闭 D.以上都不对 4、当我们想创建一个具体的对象而又不希望指定具体的类时,可以使用( a )模式。 A.创建型 B.结构型 C行为型 D.以上都可以 5、要依赖于抽象,不要依赖于具体。即针对接口编程,不要针对实现编程,是( d )的表述 A.开-闭原则 B.接口隔离原则 C.里氏代换原则 D.依赖倒转原则 6、依据设计模式思想,程序开发中应优先使用的是( a )关系实现复用。 A, 委派 B.继承 C创建 D.以上都不对 复用方式:继承和组合聚合(组合委派) 7、设计模式的两大主题是( d ) A.系统的维护与开发 B 对象组合与类的继承 C.系统架构与系统开发 D.系统复用与系统扩展 8、单例模式中,两个基本要点( a b )和单子类自己提供单例 A .构造函数私有 B.唯一实例 C.静态工厂方法 D.以上都不对 9、下列模式中,属于行为模式的是( b ) A.工厂模式 B观察者 C适配器以上都是 10、“不要和陌生人说话” 是( d )原则的通俗表述 A.接口隔离 B.里氏代换 C.依赖倒转 D.迪米特:一个对象应对其他对象尽可能少的了解 11、构造者的的退化模式是通过合并( c )角色完成退化的。 A.抽象产品 B产品 C创建者 D使用者 12、单子(单例,单态)模式类图结构如下: 下列论述中,关于”0..1”表述的不正确的是( d ) A.1表示,一个单例类中,最多可以有一个实例. B.”0..1”表示单例类中有不多于一个的实例 C.0表示单例类中可以没有任何实例 D.0表示单例类可以提供其他非自身的实例 13、对象适配器模式是( a )原则的典型应用。 A.合成聚合复用原则 B.里式代换原则 C.依赖倒转原则 D.迪米特法则 14、静态工厂的核心角色是(a) A.抽象产品 B.具体产品 C.静态工厂 D.消费者 15、下列关于静态工厂与工厂方法表述错误的是:( a ) A.两者都满足开闭原则:静态工厂以if else方式创建对象,增加需求的时候会修改源代码 B.静态工厂对具体产品的创建类别和创建时机的判断是混和在一起的,这点在工厂

东大20秋学期《软件设计模式》在线作业1答卷

东大20秋学期《软件设计模式》在线平时作业1 注:本科目是东北大学课程资料,只做参考学习使用!! 一、单选题 (共 10 道试题,共 50 分) 1.分析下列程序: public class class4 { private string _sData = ""; public string sData{set{_sData = value;}} } 在Main 函数中,在成功创建该类的对象obj 后,下列哪些语句是合法的?() A.obj.sData = "It is funny!"; B.Console.WriteLine(obj.sData); C.obj._sData = 100; D.obj.set(obj.sData); 【正确选择是】:A 2.已知结构Resource 的定义如下: struct Resource{ public int Data = 0; } 则下列语句的运行结果为________。 Resource[] list= new Resource[20]; for(int i = 0;i<20;i++){ System.Console.WriteLine(“data={0}”,list[i].Data); } A.打印20 行,每行输出都是 data=0 B.打印20 行,每行输出都是 data=null C.打印20行.第1行输出data=0,第2行输出data=2,.,第20行输出data=19 D.出现运行时异常 【正确选择是】:A 3.已知a、b、c的值分别是4、5、6,执行下面的程序段后,判断变量n的值为:int a,b,c,n; if (c < b) n = a + b + c; else if (a + b < c) n = c - a - b; else n = a + b; A.3 B.-3 C.9 D.15 【正确选择是】:C

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