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

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

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

体系结构期末复习

一、选择题

(一)

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. 常用的设计模式可分为( 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.

(五)

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.面向对象的七条设计原则包括:单一职责原则,__________,___________,_________,

合成聚合原则,接口隔离原则以及_________________ 。其中外观模式是_________原则的典型应用。

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.单例模式有两种方式实现,分别称为______________和________________。它们共同的特

征是构造函数的访问修饰符必须是_________。

答案:

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

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

3、Observable 、 Observer

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

(四)

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

2. 适配器模式,可以细分为___________适配器和___________适配器两种实现。其中_________适配器采用的是继承复用。

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

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

答案:

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

2.类、对象、类

3. 观察者模式

4. 懒汉式、饿汉式

(五)

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

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

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

4.单例模式有两种方式实现,分别称为______________和________________。它们共同的特

征是构造函数的访问修饰符必须是_____________。

答案:

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

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

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

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

答案:

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

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

2. 1)策略模式的应用场景:当解决一个问题,有很多种方法或解决方案可以使用时,可

以将每一种方法或解决方案封装成一个类,可以相互替换(或相同意义表达,3分). 2)类图(3分)

Context

-strategy : Strategy +algorithm ()...

Strategy

{abstract}

+algorithm ()...

ConcreteStrategyA +algorithm ()...

ConcreteStrategyB +algorithm ()...

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

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

(三)

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

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

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

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

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

答案:

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

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

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

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

五、程序设计题

(一)

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

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

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

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

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

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

Root

Leaf A

Comp B

Leaf BX

Leaf BY

Leaf C

答案:

1.Public class Boss{

Private static Boss instance; //(2分)

Private Boss(){ }//(2分)

Public static Boss getInstance(){ //(2分)

If(instance == null){

Synchronized(Boss.Class){ //(synchronized关键字,2分)

If(instance == null)

Instance = new Boss();

}

}

return instance;

}

}或者

Public class Boss{

Private static Boss instance = new Boss();//(4分)

Private Boss(){}//(2分)

Public static Boss getInstance(){//2分

Return instance;

}

}

2.

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 = fac.build();

ft.plant();

Ft.grow();

Ft.harvest();

}

}

3.

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

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

class Leaf implements Component{

String name;

public Leaf(String name){https://www.doczj.com/doc/9411435436.html, = name; }

public void display(){

System.out.println( 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){

https://www.doczj.com/doc/9411435436.html, = name;

}

public void display(){

System.out.println(name);

for(int i = 0 ; i < list.size() ;i ++)

{

list.get(i).display();

}

}

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

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

}

客户端(4分):

public class Test {

public static void main(String[] args){

Component root = new Composite("Root");

root.add(new Leaf("Leaf A"));

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

root.add(comp);

comp.add(new Leaf("Leaf BX"));

comp.add(new Leaf("Leaf BY"));

root.add(new Leaf("Leaf C"));

root.display();

}

}

(二)

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

2.一个农场公司,专门负责培育各种水果,有葡萄,草莓和苹果,请使用简单工厂模式,编

写简单工厂类和主程序,并在主程序中来完成苹果生长状态的描述。(10分)

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

2.绘制组合模式的类图。(4分)

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

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

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

Dir1

File1

Dir2

File3

Dir3

File4

答案:

1.Public class PrintSpooler{

Private static PrintSpooler instance; //(2

分)

Private PrintSpooler(){} //(2分)

Public static PrintSpooler getInstance(){ //(2分)

If(instance == null){

Synchronized(PrintSpooler.Class){ //(synchronized关键字,2分)If(instance == null)

Instance = new PrintSpooler();//2分

}

}

return instance;

}

}或者

2.Public class PrintSpooler{

Private static PrintSpooler instance = new PrintSpooler(); //(4分)

Private PrintSpooler(){ //(2分)

}

Public static PrintSpooler getInstance(){ //(2分)

return instance; //(2分)

}

}

2.

Public class FruitFactory{ //6分,要有静态方法,返回fruit

Public static Fruit creatFruit(String type){

Fruit ft = null ;

If(type.equals(“Apple”)

Ft = new Apple();

Else if(type.equals(“Strawberry”)

Ft = new Strawberry();

Else if(type.equals(“Grape”)

Ft = new Grape();

Return ft;

}

}

Public class MainUI{ //(4分)

Public static void main(string[] str){

Fruit ft = FruitFactory.creatFruit(“Apple”);

ft.plant();

Ft.grow();

Ft.harvest();

}

}

3.

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

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

class Leaf implements Component{

String name;

public Leaf(String name){

https://www.doczj.com/doc/9411435436.html, = name;

}

public void display(){

System.out.println(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){

https://www.doczj.com/doc/9411435436.html, = name;

}

软件体系结构期末考试

北京工业大学2014 - 2015学年 第二学期模拟试题 考试课程:软件体系结构I 考试日期:2015年5 月20日 学院:软件学院专业:软件工程 学号:姓名:成绩: 一填空题(共30 空,每空 1 分) 1. 软件或程序是由软件工程人员设计与开发,使计算设备发挥计算潜能,________ 的逻辑层次组织。 2. 软件体系结构(Software Architecture)-- 是软件产品设计的思想和系统的蓝图;是 对软件产品_______的规划和_______的设置;是定义软件系统组件(Components)或构建块(Building Blocks)的重要工具;用于 -- 实现对一个软件系统的构成进行_________的划分 -- 所形成和采用的工程化规范,是指导软件后续过程方方面面组成的模型。 3.软件开发中的面临若干问题:1)软件固有的复杂性;2)软件开发的随意性;3)周期 长,代价高,质量低的问题;软件体系结构设计是软件产品及大型信息系统工程实现中最重要的环节和关键技术之一,解决从软件的__________到系统实现(代码)的有效和平坦过渡。 4.软件产品的工业化生产:是指建立流水线型的软件产品生产线,是指按_____、标准 化的规范和规则(软件生产规范)来编写和实现各种各样的适应于多环境的软件___,通过软件体系结构来确定各个软件组件如何部署到开发架构模式中,组装成达到期望的软件产品。 5.体系结构设计方法的发展中,软件程序开发经历了如下的阶段 -- 功能分解法 (计算任务) -- 结构化程序设计 (以数据为中心) -- _________________ -- _________________ -- 基于 SOA 的程序设计 (以服务为中心)。 6. 一个现代软件产品生产过程如下图表示,请在带___________的方框中,填上相应的组 件名称

软件工程期末考试重点

软件工程期末考试重点 《软件工程》期末复习重点 第一章软件工程 1. 什么是软件工程。 A.把系统化的、规范的、可度量的途径应用于软件开发、运行和维护的过程,也就是把工程化应用于软件中;b.研究a中提到的途径。2. 软件工程的三要素:方法、工具和过程。 第二章软件过程 1. 软件生命周期分为哪几个阶段?每个阶段的基本任务是什么? a.软件定义:确定软件开发工程必须完成的总目标问题定义:要解决的问题是什么 可行性研究:上阶段所确定的问题是否有可行的解决办法?需求分析:目标系统必须做什么 b.软件开发:具体设计和实现在前一个时期定义的软件。概要设计:怎样宏观地解决问题 详细设计:应如何具体地实现这个系统 编码和单元测试:写出正确的、易理解、易维护的程序综合测试:通过各类型测试使达到预定要求。 c.运行维护:修正错误,使软件持久地满足用户需要。改正性维护:诊断和改正使用中的错误适应性维护:修改

以适应环境变化 完善性维护:根据用户的要求改进和扩充以完善预防性维护:修改以为将来的维护作准备 2. 常用的过程模型有哪些?各自的特点及不足。如:瀑布模型的不足是不能适应需求的动 态变更。 A.瀑布模型 特点: 可强迫开发人员采用规范化的方法。严格地规定了每个阶段必须提交的文档。要求每个阶段交出的所有产品都必须是经过验证的。 缺点:太理想化,于瀑布模型几乎完全依赖于书面的规格说明,很可能导致最终开发出的软件产品不能真正满足用户的需要。如果需求规格与用户需求之间有差异,就会发生这种情况。只适用于项目开始时需求已确定的情况。 B.快速原型模型 特点:快速 软件产品开发基本上是线性顺序进行。降低了规格说明文档变化的可能性。减少了后续阶段错误的可能性。 c.增量模型 1 优点: 人员分配灵活,刚开始不用投入大量人力资源。

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

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

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

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

计算机体系结构期末考试知识点与答案

体系结构复习重点.doc 1..诺依蔓计算机的特点 答:·若依曼计算机的主要特点如下: 存储程序方式。指令和数据都是以字的方式存放在同一个存储器中,没有区别,由机器状态来确定从存储器读出的字是指令或数据。 指令串行执行,并由控制器集中加以控制、 单元定长的一维线性空间的存储器 使用低级机器语言,数据以二进制形式表示。 单处理机结构,以运算器作为中心。 其实,他最大的特点就是简单易操作。 2. T(C)=所描述的三个层次(8页) 答:3个层次为控制器、算术逻辑部件、基本逻辑部件 3. 计算机系统结构的分类(5页) 4. 计算机系统中的数据表示(38页) 5. 指令系统设计的原则 答:指令系统的设计原则是,应特别注意如何支持编译系统能高效、简易地将源程序翻译成目标代码。 首先是正交性:又称分离原则或互不相干原则。即指令中各个有不同含义的字段之间,在编码时应互相独立、互不相关。 规整性:对相似的操作数做出相同的规定。 可扩充性:要保留一定余量的操作码空间,为以后的扩展所用。 对称性:为了使编译能更加方便,通常希望操作具有对称性。 6. 流水操作中的相关 答:流水操作过程中会出现一下的3个相关:资源或结构相关、数据相关、和控制相关。 资源相关是指当有多条指令进入流水线后在同一机器周期内争用同一功能部件所发生的冲突。 数据相关:这是由于流水线中的各条指令的重叠操作使得原来对操作数的访问顺序发生了变化,从而导致了数据相关的冲突。 控制相关主要是转移指令引起的,比起数据相关来,他会使流水线丧失更多的性能。 7. 向量机中对向量的各种运算可以采用的加工方式(149页) 答:向量机中对向量的各种运算可以采用不同的加工方式,但比较有效的加工方式

程序设计基础期末复习汇总

《程序设计基础》期末复习 考试题型和分值。 一、单选题(20小题,每题2分) 二、填空题(共20题,计20分) 三、编程填空题(给出程序的输出结果,共5题,14分) 四、读程序题(补充程序,共2小题,,共26分) 程序练习: 1. 输出1~10之间所有的偶数和它们的平方。 2. 输出所有的水仙花数。 3. 从键盘输入一行字符,统计其中有多少个单词。假设单词之间是以空格分开。 4. 编程先由计算机“想”一个1~100之间的数请人猜,如果人猜对了,则 结束游戏,并在屏幕上输出人猜了多少次才猜对此数,以此来反映猜数者“猜”的水平;否则计算机给出提示,告诉人所猜的数是太大还是太小,直到人猜对为止。 5. 编写程序,要求在main函数接受一个整型变量,将其作为参数传入IsPrime 函数中,IsPrime函数根据传入的值确定返回值,如果<2,返回0;如果不是素数,返回1;如果是素数,返回2。主函数根据返回值输出相应的提示信息:输入不合法,不是素数,是素数。 6.编写程序:给学生出一道加法运算题,然后判断学生输入的答案对错与否。通过输入两个加数给学生出一道加法运算题,如果输入答案正确,则显示“Right!”,否则提示重做,显示“Not correct! Try again!”,重复要求输入答案,直到输入结果正确,程序结束。 要求:用Add函数来进行两个整数的加法运算;用Print函数判断输入的答案正确与否;用main函数输入两个相加的数和学生的答案,然后调用Add函数和Print函数判进行判断和显示输出。 7. 利用指针编写两个整数交换的函数。 8. 从10个元素的数组中找出最大值和最小值,并记录最大值和最小值对应的元素的下标位置。 9. 给定10个数,按照要求进行排序并输出排序的结果。

软件设计模式(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、“4+1”视图模型从5个不同的视角包括: 逻辑视图、进程视图、物理视图、开发视图和场景视图来描述软件体系结构。 3、构件:是具有某种功能的可重用的软件模板单元,表示了系统中主要的计算元素和数据存储。 连接件:表示构件之间的交互。 配置:表示构件和连接件的拓扑逻辑和约束。 端口:表示构件和外部环境的交互点。 角色:定义了该连接交互的参与者。 4、画出“4+1”视图模型图,分析各部分的原理和功能。 5、软件体系结构风格: 是描述某一特定应用领域中系统组织方式的惯用模式。 6、软件体系结构 (Software Architecture) 软件体系结构以组件和组件交互的方式定义系统,说明需求与成品系统之间的对应关系,描述系统级别的可伸缩性、能力、吞吐量、一致性和兼容性等属性。软件体系结构由组件、连接件和属性组成。 7、分层系统的优点有: 1)支持基于抽象程度递增的系统设计,使设计者可以把一个复杂系统按递增的步骤进行分解; 2)支持功能增强,因为每一层至多和相邻的上下层交互,因此功能的改变最多影响相邻的上下层; 3)支持重用。只要提供的服务接口定义不变,同一层的不同实现可以交换使用。这样,就可

以定义一组标准的接口,而允许各种不同的实现方法。 8、分层系统的缺点有: 1)并不是每个系统都可以很容易地划分为分层的模式,甚至即使一个系统的逻辑结构是层次化的,出于对系统性能的考虑,系统设计师不得不把一些低级或高级的功能综合起来; 2)很难找到一个合适的、正确的层次抽象方法。 9、 B/S体系结构的优点有什么? 答:1)基于B/S体系结构的软件,系统安装、修改和维护全在服务器端解决。用户在使用系统时,仅仅需要一个浏览器就可运行全部的模块,真正达到了“零客户端”的功能,很容易在运行时自动升级。 2)B/S体系结构还提供了异种机、异种网、异种应用服务的联机、联网、统一服务的最现实的开放性基础。 10、B/S体系结构的缺点有什么? 答:1)B/S体系结构缺乏对动态页面的支持能力,没有集成有效的数据库处理功能。 2)B/S体系结构的系统扩展能力差,安全性难以控制。 3)采用B/S体系结构的应用系统,在数据查询等响应速度上,要远远地低于C/S体系结构。 4)B/S体系结构的数据提交一般以页面为单位,数据的动态交互性不强,不利于在线事务处理(OLTP)应用。 11、DSSA 答案:DSSA就是在一个特定应用领域中为一组应用提供组织结构参考的标准软件体系结构 11、软件体系结构的动态性主要分为: 交互式动态性、结构化动态性、体系结构动态性等三类。 12、请画出基于构件的动态系统结构模型画。 13、软件产品线 产品线是一个产品集合,这些产品共享一个公共的、可管理的特征集,这个特征集能满足选定的市场或任务领域的特定需求。这些系统遵循一个预描述的方式,在公共的核心资源(core assets)基础上开发的 14、SOA 即service-oriented architecture,面向服务架构。它是一个组件模型,它 将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接 口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于 实现服务的硬件平台、操作系统和编程语言。这使得构建在各种这样的 系统中的服务可以以一种统一和通用的方式进行交互。 14、RIA

软件设计师复习笔记重点总结

软件设计师复习笔记重点总结 一.计算机系统 基础知识: CPU功能:程序控制,操作控制,时间控制,数据处理。 组成:运算器(算术逻辑单元ALU,累加寄存器AC,数据缓冲寄存器DR,状态条件寄存器PSW),控制器(指令寄存器IR,程序计数器PC,地址寄存器AR,指令译码器ID),寄存器组(专业寄存器通用寄存器),部总线。 原码:负数把第一位改成1; 反码:正数的反码与原码相同,负数的反码是其绝对值按位求反; 补码:正数的补码与原码相同,负数补码等于其反码的末尾加1; 移码:在数X上增加一个偏移量(实际上,将补码的符号位取反); 最适合进行数字相加减的数字编码是补码,最适合浮点数阶码的数字编码是移码。 双符号位判决法:即00表示正号,11表示负号,则溢出时两个符号位就不一致了,从而可以判定发生了溢出。 符号位SF和进位标志CF进行异或运算为1时,表示运算的结果产生溢出。 浮点数:N=2^E*F E:阶码 F尾数 尾符和尾数小数点后第一位数字相异为规格化数。 校验码:奇偶校验码(在编码中增加一个校验位来使编码中1的个数为奇数(奇校验)或者偶数(偶检验),从而使码距变为2)=>只能检验一位的错误 海明码(在数据位中之间插入k个校验位,通过扩大码距来实现检错和纠错)=>既可以检测数据传输过程中出现的一位数据错误的位置加以纠正。 2^k-1>=n+k 循环冗余校验码(利用生成多项式为k个数据位产生r个校验位来进行编码,长度为r+k)校验码越长,校验能力越强; 结构,组织,实现,性能。结构只计算机系统各种应用的互联,组织指各种部件的动态联系和管理,实现指各模块设计的组装完成,性能指计算机系统的行为表现。 系统分类:单处理系统,并行处理和多处理系统,分布式处理系统(指物理上远距离而松耦合的多计算机系统,通信时间和处理时间相比已经不可忽略)。 Flynn分发:SISD单指令单数据流,SIMD单指令多数据流,MISD多指令单数据流, MIMD多指令多数据流; 阵列处理机(Array Processor)也称并行处理机(Parallel Processor)通过重复设置大量相同的处理单元PE(Processing Element),将它们按一定方式互连成阵列,在单一控制部件CU(Control Unit)控制下,对各自所分配的不同数据并行执行同一组指令规定的操作,操作级并行的SIMD计算机,它适用于矩阵运算。 译云分类:WSBS字串行位串行计算机,WPBS字并行位串行计算机,WSBP字串行位并行,WPBP字并行位并行; 指令体系:堆栈,累加器,寄存器集; CISC复杂指令集计算机 RISC精简指令集计算机(流水技术:超流水线技术,超标量技术,超长指令字技术) 存储:相联寄存器是一种按容访问的寄存器; cache地址映像方法:直接映像(地址变换简单,灵活性差),全相联映像(主存调入cache的位

东北大学《软件设计模式》期末考试必备真题集(含答案)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.各种性能指标及如何到达各种性能指标的方法 (1)防止变异模式:是如何设计对象,子系统和系统,使这些元素内部的变化或不稳定性不会对其他元素产生不良影响。 解决方案:识别预测的变化或不稳定之处,分配职责用以创建稳定借口。 (2)依赖反转原理:把你的类从局的现实中隔离开,使他们依赖于抽象类或接口。它促进了代码面向接口而不是实现,这通过保证对实现的低耦合来增加系统的灵活性。 2.常用的中间件有那几种类型 (1)常见的对象请求代理架构 (2)面向消息的中间件 (3)J2EE (4)消息代理 (5)业务过程代理 3.有那些常见架构风格 (1)管道和过滤器架构风格 (2)面向对象风格 (3)隐式调用风格 (4)客户-服务器风格 (5)分层风格 (6)仓库风格 (7)解释程序风格 (8)过程控制风格 4.架构师需要的核心技能是什么 (1)涉众之间的交流 (2)技术知识 (3)软件工程学 (4)风险管理

5.什么是软件架构 软件架构是一系列相关的抽象模式,用于指导大型软件系统各个方面的设计。软件架构是一个系统的草图。软件架构描述的对象是直接构成系统的抽象组件。各个组件之间的连接则明确和相对细致的描述组件之间的通讯。在实现阶段,这些抽象组件被细化为实际的组件,比如具体某个类或者对象。在面向对象领域中,组件之间的连接通常用接口(计算机科学)实现。 6.什么是架构风格 一组原则。你可以把它看成是一组为系统家族提供抽象框架的粗粒度模式。 7.什么是架构视图 一个架构视图是对于从某一视角或某一点上看到的系统所做的简化描述,描述中涵盖了系统的某一特定方面,从而省略了此方面无关的实体。 8.各种架构风格的组件和连接器是什么 1.管道和过滤器架构风格: 适用于需要定义一系列的执行规则数据的独立运算,组件在输入时读数据流,在输出时产生数据流 组件:称为过滤器,应用于对局部的输入流的转换,经常增长的计算,因此,在输入结束前输出就开始了 连接器:称为管道,给流提供管道,把一个过滤器的输出传输到另一个输入。 2.面向对象风格: 适用于主要问题识别和保护信息的相关主体 数据代理和他们相关的操作封装在一个抽象数据类型里面 组件:对象 连接器:功能和过程调用 3.客户-服务器风格: 适用于涉及到分布式的数据和跨越一系列的组件的处理 组件:服务器、客户端 连接器:网络 4.分层风格: 适用于设计到分布式的能够分层的组织的类的服务,每层给它的上一层提供服务,同时作为下一层的客户端。只有仔细的从内层选择选择过程,才能用于他们接近的外层。 组件:典型的过程的集合

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

软件体系结构-设计模式练习题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. 装饰模式

软件设计期末考试复习题(曲师大)

软件设计期末考试复习题大)(曲师

2009级软件测试复习题 考试范围:课本1、2、3、5、6、7、9、11、14、15 一、判断题 1、软件需求是度量软件质量的基础,不符合需求的软件就不具备质量。() 2、白盒测试可以找出软件遗漏功能和代码错误问题。() 3、软件缺陷一定是由编码所引起的。() 4、软件测试等于程序测试。() 5、经验表明,测试后程序残存的错误数目与该程序中已发现的错误数目或检错率成 正比。() & 在做程序的单元测试时,桩模块比驱动模块容易编写。() 7、自底向上集成需要程序员编写驱动模块。() 8、单元测试能发现约80%勺软件缺陷。() 9、负载测试是验证要检验的系统的能力最高能达到什么程度。() 10、静态的代码评审一般由测试人员进行。() 11、程序员与测试工作无关。() 12、软件测试工具可以代替软件测试员。() 13、最重要的用户界面要素是软件符合现行标准和规范。() 14、在测试过程中只要使用了测试工具就是测试自动化。() 15、从测试角度看,应用服务器的测试一般比较容易实现自动化。() 16、系统自动化测试是测试工具执行测试过程,不需要人工干预。() 17、与手工测试相比,自动化测试更容易实现覆盖率的度量。() 二、单项选择题 1、在软件生命周期的哪一个阶段,软件缺陷修复费用最高() (A)需求分析(编制产品说明书) (B)设计 (C)编码(D)产品发布 2、单元测试中用来模拟被测模块调用者的模块是() (A)父模块(B)子模块 (C)驱动模块(D)桩模块 3、侧重于观察资源耗尽情况下的软件表现的系统测试被称为() (A)强度测试(B)压力测试 (C)容量测试(D)性能测试 4、必须要求用户参与的测试阶段是() (A)单元测试(B)集成测试 (C)确认测试(D)验收测试 5、下面四种说法中正确的是() (A) 因果图法是建立在决策表法基础上的一种白盒测试方法; (B) 等价类划分法是边界值分析法的基础; (C) 健壮性等价类测试的测试用例要求在有效等价类中取值; (D) 在任何情况下做黑盒测试皆应首先考虑使用错误推断法。 &不属于单元测试内容的是() (A)模块接口测试(B)局部数据结构测试

软件设计模式试题集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) 学院:软件学院 课程名称:软件体系结构 专业班级: 学生姓名:学号: 学生姓名:学号: 指导教师: 完成时间:年月日 评分表 1、叙述各小组成员完成本题目的分工协作情况。 小组中的每个成员都先理解题目要求及涉及的设计模式,并一起完成代码编写。另外,组长负责文档制作。 2、评分表 序号姓名评分是否组长 1 2 作业正文需要包括以下内容: 1、作业题目内容的详细描述。 2、完成本题目所采用的软件设计模式名称及画出相应的类图,或者是所采用的 软件体系结构名称及画出相应的体系结构图。

3、画出完成本题目所设计程序的设计类图;如还有其他图,也一并画出。 4、完成本题目所设计的程序代码。 5、程序运行的典型界面截图

1、作业题目内容的详细描述。 【作业2.1-1】例2.3为使用工厂方法模式设计的汽车保险管理应用程序实例。现在需要 扩展例2.3的设计图,添加一个名为LuxuryCarInsurance的类,并且需要编写此类和其他需要添加的类的代码,详细要求参见光盘的相应作业部分。 【作业2.1-1】在例2.4中,设计并且实现了豪华(Super)和中等(Medium)别墅(House)与公寓(Condo)的查询。要求在该设计的基础上,增加一个新的类SemiDetacher(半独立式楼宇),并且编写代码,实现相应的查询功能,详细要求参见光盘的相应作业部分。 2、完成本题目所采用的软件设计模式名称及画出相应的类图,或者是所采用的软件体系结构名称及画出相应的体系结构图。 【作业2.1-1】采用的是工厂方法模式 【作业2.1-2】采用的是抽象方法模式

软件体系结构期末复习题

软件体系结构期末 复习题

《软件体系结构》期末复习题 简答题: 1、软件体系结构建模的种类有: 结构模型、框架模型、动态模型、过程模型、功能模型。 2、“4+1”视图模型从5个不同的视角包括: 逻辑视图、进程视图、物理视图、开发视图和场景视图来描述软件体系结构。 3、构件:是具有某种功能的可重用的软件模板单元,表示了系统中主要的计算元素和数据存储。 连接件:表示构件之间的交互。 配置:表示构件和连接件的拓扑逻辑和约束。 端口:表示构件和外部环境的交互点。 角色:定义了该连接交互的参与者。 4、画出“4+1”视图模型图,分析各部分的原理和功能。 5、软件体系结构风格: 是描述某一特定应用领域中系统组织方式的惯用模式。

6、软件体系结构 (Software Architecture) 软件体系结构以组件和组件交互的方式定义系统,说明需求与成品系统之间的对应关系,描述系统级别的可伸缩性、能力、吞吐量、一致性和兼容性等属性。软件体系结构由组件、连接件和属性组成。 7、分层系统的优点有: 1)支持基于抽象程度递增的系统设计,使设计者能够把一个复杂系统按递增的步骤进行分解; 2)支持功能增强,因为每一层至多和相邻的上下层交互,因此功能的改变最多影响相邻的上下层; 3)支持重用。只要提供的服务接口定义不变,同一层的不同实现能够交换使用。这样,就能够定义一组标准的接口,而允许各种不同的实现方法。 8、分层系统的缺点有: 1)并不是每个系统都能够很容易地划分为分层的模式,甚至即使一个系统的逻辑结构是层次化的,出于对系统性能的考虑,系统设计师不得不把一些低级或高级的功能综合起来; 2)很难找到一个合适的、正确的层次抽象方法。 9、 B/S体系结构的优点有什么? 答:1)基于B/S体系结构的软件,系统安装、修改和维护全在服务器端解决。用户在使用系统时,仅仅需要一个浏览器就可运行全部的模块,真正达到了“零客户端”的功能,很容易在运行时自动升级。

软件设计师考试知识点汇总(一)

软件设计师考点知识点汇总(一) 2016年下半年软件设计师考试即将进行,进入全面复习的你是否已是胸有成竹,下面小编整理了一部分考点知识点汇总,希望对各位备考能有所帮助。 IP地址的概念 我们知道因特网是全世界范围内的计算机联为一体而构成的通信网络的总称。联在某个网络上的两台计算机之间在相互通信时,在它们所传送的数据包里都会含有某些附加信息,这些附加信息就是发送数据的计算机的地址和接受数据的计算机的地址。象这样,人们为了通信的方便给每一台计算机都事先分配一个类似我们日常生活中的电话号码一样的标识地址,该标识地址就是我们今天所要介绍的IP地址。根据TCP/IP协议规定,IP地址是由32位二进制数组成,而且在INTERNET范围内是唯一的。例如,某台联在因特网上的计算机的IP地址为:11010010 01001001 10001100 00000010 很明显,这些数字对于人来说不太好记忆。人们为了方便记忆,就将组成计算机的IP地址的32位二进制分成四段,每段8位,中间用小数点隔开,然后将每八位二进制转换成十进制数,这样上述计算机的IP地址就变成了:210.73.140.2。 IP地址的分类 因特网是把全世界的无数个网络连接起来的一个庞大的网间网,每个网络中的计算机通过其自身的IP地址而被唯一标识的,据此我们也可以设想,在INTERNET上这个庞大的网间网中,每个网络也有自己的标识符。这与我们日常生活中的电话号码很相像,例如有一个电话号码为0515163,这个号码中的前四位表示该电话是属于哪个地区的,后面的数字表示该地区的某个电话号码。与上

面的例子类似,我们把计算机的IP地址也分成两部分,分别为网络标识和主机标识。同一个物理网络上的所有主机都用同一个网络标识,网络上的一个主机(包括网络上工作站、服务器和路由器等)都有一个主机标识与其对应?IP地址的4个字节划分为2个部分,一部分用以标明具体的网络段,即网络标识;另一部分用以标明具体的节点,即主机标识,也就是说某个网络中的特定的计算机号码。例如,盐城市信息网络中心的服务器的IP地址为210.73.140.2,对于该IP地址,我们可以把它分成网络标识和主机标识两部分,这样上述的IP地址就可以写成: 网络标识:210.73.140.0 主机标识: 2 合起来写:210.73.140.2 由于网络中包含的计算机有可能不一样多,有的网络可能含有较多的计算机,也有的网络包含较少的计算机,于是人们按照网络规模的大小,把32位地址信息设成三种定位的划分方式,这三种划分方法分别对应于A类、B类、C类IP地址。 IP地址的类型 A类IP地址 一个A类IP地址是指,在IP地址的四段号码中,第一段号码为网络号码,剩下的三段号码为本地计算机的号码。如果用二进制表示IP地址的话,A类IP 地址就由1字节的网络地址和3字节主机地址组成,网络地址的最高位必须是“0”.A类IP地址中网络的标识长度为7位,主机标识的长度为24位,A类网络地址数量较少,可以用于主机数达1600多万台的大型网络。

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