软件设计模式B张天成

别妄想泡我
765次浏览
2020年08月03日 10:09
最佳经验
本文由作者推荐

自我介绍面试-十八大开会时间




东 北 大 学 继 续 教 育 学 院

软件设计模式 试 卷(作业考核 线上) B 卷

学习中心:
福 建南平奥鹏学习中心
院校学号:
C67
姓名:
王华仁


(共 页)
总分

题号
得分





















一:单选题(共40分,20小题,每小题2分。请将答案填入下表)
题号
答案
题号
答案

1
A
11
A
2
B
12
C
3
A
13
D
4
B
14
D
5
D
15
B
6
D
16
C
7
C
17
C
8
A
18
A
9
C
19
D
10
A
20
C
1. 以下标识符中,正确的是:
A、_total B 3abc C while D class
2. 在c#程序中,入口函数的正确声明为:
A. static int main(){…..}
B. static void Main(){……}
C. static void main(){……}
D. void Main(){……}
3. C#中MyClass 为一自定义类,其中有以下方法定义public void Hello(){..}使用以下语句创
建了该类的对象,并使变量obj 引用该对象:MyClass obj = new MyClass();那么,可如何
访问类MyClass 的Hello 方法?
A. ();
B. obj::Hello();
课程名称: 软件设计模式
1




C. ();
D. MyClass::Hello();
4. 在C#中,表示一个字符串的变量应使用以下哪条语句定义?
A. CString str;
B. string str;
C. Dim str as string
D. char * str;
5. 结构化程序设计的3种结构是:
A. 顺序结构、if结构、for结构
B. if结构、if…else结构、else if结构
C. while结构、do…while结构、foreach结构
D. 顺序结构、分支结构、循环结构
6. 能正确表示逻辑关系“a>=10 或a<=0”的C#语言表达式是:
A. a>=10 or a<=0
B. a>=10|a<=0
C. a>=10&&a<=0
D. a>=10||a<=0
7. 分析下列C#语句,注意类MyClass 没有访问修饰符:
namespace ClassLibrary1
{
class MyClass
{
public class subclass
{
int i;
}
}
}
若必须为类MyClass 添加访问修饰符,并使MyClass 的可访问域保持不变,则应选择:
A. private
B. protected
C. internal
D. public
课程名称: 软件设计模式
2




8. 在类的外部可以被访问的成员是:
A. public成员 B. private成员 C. protected成员 D. protected internal成员
9. 在定义类时,如 果希望类的某个方法能够在派生类中进一步进行改进,以处理不同的派生
类的需要,则应将该方法声明成 :
A. sealed 方法
B. public 方法
C. visual 方法
D. override 方法
10. C#中,回车字符对应的转义字符为:
A. r
B. f
C. n
D. a
11. 判断下列类MyClass 的定义中哪些是合法的抽象类?
A. abstract class MyClass { public abstract int getCount(); }
B. abstract class MyClass { abstract int getCount(); }
C. private abstract class MyClass { abstract int getCount(); }
D. sealed abstract class MyClass { abstract int getCount(); }
12. 已知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
13. MyClass为一个自定义的类,则下列语句创建了多少个类MyClass的对象?
MyClass[ , ] myArray = new MyClass[2][3];
A. 0
B. 2
C. 3
D. 6
课程名称: 软件设计模式
3




14. 下面是几条动态初始化二维数组的语句,指出其中正确的:
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];
15. 下面有关析构函数的说法中,不正确的是:
A. 析构函数中不可以包含return语句
B. 一个类中只能有一个析构函数
C. 析构函数在对象被撤销时,被自动调用
D. 用户可以定义有参析构函数
16. 下列说法哪个正确?
A. 不需要定义类,就能创建对象
B. 属性可以定义为抽象的
C. 对象中必须有属性和方法
D. 常量不能作为类成员
17. 下面有关静态方法的描述中,正确的是:
A. 静态方法属于类,不属于实例
B. 静态方法可以直接用类名调用
C. 静态方法中,可以访问非静态的局部变量
D. 静态方法中,可以访问静态的变量
18. 以下描述错误的是:
A. 在C++中支持抽象类,但在C#中不支持抽象类。
B. C++中可在头文件中声明类的成员,而在 CPP文件中定义类的成员;在C#中没有头文
件并且在同一处声明和定义类的成员。
C. 在C#中可使用 new 修饰符显式隐藏从基类继承的成员。
D. 在C#中要在派生类中重新定义基类的虚函数必须在前面加Override。
19. 下列关于构造函数的描述正确的是:
A. 构造函数可以声明返回类型。
B. 构造函数不可以用private修饰
C. 构造函数必须与类名相同
D. 构造函数不能带参数
20. 变量x的值为25,要输出x的值,下列正确的语句是:
A. ine(“x”)
课程名称: 软件设计模式
4




B. ine(“x”)
C. ine(“x={0}”,x)
D. ine(“x={x}”)
二:判断题(共20分,20小题,每小题1分。请将答案√或×填入下表)
题号
答案
题号
答案

1
×
11

2
×
12
×
3
×
13

4
×
14

5

15

6

16
×
7
×
17

8
×
18
×
9
×
19

10
×
20

1. 软件危机是开发软件的开发工具功能不强造成的。(×)
2. 结构化程序设计的3种基本结构是顺序、循环和选择。(×)
3. 面向数据流的设计以面向对象分析阶段的数据流图为基础。(×)
4. 软件设计主要是要求功能强大,对于说明文档的要求则可以适当放松。(×)
5. 软件测试方法主要白盒测试和黑盒测试两种。(√)
6. 螺旋模型包括制定计划、概要设计,详细设计和工程实施四个主要部分。(√)
7. 面向对象方法是从算法为出发点来构造系统。(×)
8. 在面向对象方法中,封装使得外界无法存取对象的内部信息。(×)
9. 面向过程方法的缺点是过程和数据结合的过于紧密。(×)
10. 面向对象程序设计应该遵循低内聚、高耦合的原则。(×)
11. 消息可以用顺序图和协作图这两种图来表示。(√)
12. 状态图、顺序图、协作图和部署图属于动态建模机制。(×)
13. 顺序图描述系统中对象间通过消息进行的交互,强调消息在时间轴上的先后顺序。(√)
14. 提倡设计模式的根本原因是增强代码复用,增加可维护性。(√)
15. 里氏代换原则的本质是在同一个继承体系中的对象应该有共同的行为特征。(√)
16. 工厂方法是抽象工厂模式的扩展。(×)
17. 提倡设计模式的根本原因是增强代码复用,增加可维护性。(√)
18. 具有抽象方法的类必须声明为abstract. (×)
19. 当创建派生类对象时,先执行基类的构造函数,后执行派生类的构造函数。(√)
20. 虚函数是可由子类继承并重写的函数。(√)


课程名称: 软件设计模式
5




三:简答题(共25分,5小题,每小题5分。)
1. 试简述瀑布模型。
答:瀑布模型(Waterfall Model) 是一个项目开发架构,开发过程是通过设计一系列 阶段
顺序展开的,从系统需求分析开始直到产品发布和维护,每个阶段都会产生循环反馈,
因此 ,如果有信息未被覆盖或者发现了问题,那么最好 “返回”上一个阶段并进行适当
的修改,项目开发进 程从一个阶段“流动”到下一个阶段,这也是瀑布模型名称的由来。
包括软件工程开发、企业项目开发、 产品生产以及市场销售等构造瀑布模型。
瀑布模型是
将软件生存周期的各项活动规定为按固定顺 序而连接的若干阶段工作,形如瀑布流水,
最终得到软件产品。


2. 设计模式的基本要素有哪些?
答:设计模式基本要素为:模式名称、问题、解决方案和效果。
1、 模式名称:一个助记名称,用来描述设计模式、解决方案和效果。
2、 问题:主要描述在何时使用设计模式。
3、 解决方案:描述了设计的组成成分、它们之间的相互关系及各自的职责和协作方式
4、 效果:描述了模式应用的效果和使用模式权衡的问题。
3. 什么是创建型设计模式,它的目的是什么?

答:设计模式是一套被反复使用、多数人知晓的 、经过分类编目的、代码设计经验的总结。
使用设计模式是为了可重用代码、让代码更容易被他人理解, 保证代码可靠性。
创建型设计模式,就是创建对象的模式,抽象了实例化的过程。
创建型模式(Creational Pattern)对类的实例化过程进行了抽象,能够将软件模块中对象的
创建和对象的使用分离。
创建型模式包括5个模式:单例模式,工厂方法,抽象工厂,原型模式,建造者模式


4. 结构型模式的功能有哪些?
答:结构型模式的功能有以下几个方面:
1、 在不破坏类的封装性的基础上,实现新的功能
2、 在不破坏类的封装性的基础上,使得类可以同不曾估计到的系统进行交互
3、 创建对一组类的统一的访问接口
4、 对同一类,创建不同的访问界面,提供给不同的访问者




课程名称: 软件设计模式
6




5. 构造函数有哪些特殊性?
答:1、构造器必须与类同名(如果一个源文件中有多个类,那么构造器必须与公共类同名)
2、每个类可以有一个以上的构造器
3、构造器可以有0个、1个或1个以上的参数
4、构造器没有返回值
5、构造器总是伴随着new操作一起调用

四:综合题(共15分)
1. 试举一个例子并设计抽象工厂模式的UML结构图(7分)

答:电脑生产:
1、 联想和DELL都是计算机生产厂家,但他们采用的主板、 硬盘和CPU不同,但
主板、硬盘和CPU之间可以兼容。
2、 硬盘有Maxtor和we stDigit两种,CPU有Intel和AMD,主板有MSI865PE和
MSIK7N2G两种
3、 联想采用Intel的CPU和WestDigit的硬盘,DELL采用AMD的CPU和Ma xtor
的硬盘。
抽象工厂模式的UML结构图如下:


CPU
主板 硬盘








MSIK7N2G MSI865PE AMD Intel WestDigit Maxtor






DELL
联想






计算机生产厂家


课程名称: 软件设计模式
7




2. 定义一个抽 象的运动员(Player)基类,具有抽象方法Train方法。然后以该类为基类,派
生出Bask etballPlayer、FootballPlayer等类。(8分)

答:Class Player{








课程名称:
Train(){
n(这是基类的抽象方法
}
}
Class BasketballPlayer extends Player{
Train(){
n(这子类的方法
}
}
Class FootballPlayer extends Player{
Train(){
n(这子类的方法
}
}
软件设计模式
8




东 北 大 学 继 续 教 育 学 院

软件设计模式 试 卷(作业考核 线上) B 卷

学习中心:
福建南平奥鹏学习中心
院校学号:
C67
姓名:
王华仁


(共 页)
总分

题号
得分





















一:单选题(共40分,20小题,每小题2分。请将答案填入下表)
题号
答案
题号
答案

1
A
11
A
2
B
12
C
3
A
13
D
4
B
14
D
5
D
15
B
6
D
16
C
7
C
17
C
8
A
18
A
9
C
19
D
10
A
20
C
1. 以下标识符中,正确的是:
A、_total B 3abc C while D class
2. 在c#程序中,入口函数的正确声明为:
A. static int main(){…..}
B. static void Main(){……}
C. static void main(){……}
D. void Main(){……}
3. C#中MyClass 为一自定义类,其中有以下方法定义public void Hello(){..}使用以下语句创
建了该类的对象,并使变量obj 引用该对象:MyClass obj = new MyClass();那么,可如何
访问类MyClass 的Hello 方法?
A. ();
B. obj::Hello();
课程名称: 软件设计模式
1




C. ();
D. MyClass::Hello();
4. 在C#中,表示一个字符串的变量应使用以下哪条语句定义?
A. CString str;
B. string str;
C. Dim str as string
D. char * str;
5. 结构化程序设计的3种结构是:
A. 顺序结构、if结构、for结构
B. if结构、if…else结构、else if结构
C. while结构、do…while结构、foreach结构
D. 顺序结构、分支结构、循环结构
6. 能正确表示逻辑关系“a>=10 或a<=0”的C#语言表达式是:
A. a>=10 or a<=0
B. a>=10|a<=0
C. a>=10&&a<=0
D. a>=10||a<=0
7. 分析下列C#语句,注意类MyClass 没有访问修饰符:
namespace ClassLibrary1
{
class MyClass
{
public class subclass
{
int i;
}
}
}
若必须为类MyClass 添加访问修饰符,并使MyClass 的可访问域保持不变,则应选择:
A. private
B. protected
C. internal
D. public
课程名称: 软件设计模式
2




8. 在类的外部可以被访问的成员是:
A. public成员 B. private成员 C. protected成员 D. protected internal成员
9. 在定义类时,如 果希望类的某个方法能够在派生类中进一步进行改进,以处理不同的派生
类的需要,则应将该方法声明成 :
A. sealed 方法
B. public 方法
C. visual 方法
D. override 方法
10. C#中,回车字符对应的转义字符为:
A. r
B. f
C. n
D. a
11. 判断下列类MyClass 的定义中哪些是合法的抽象类?
A. abstract class MyClass { public abstract int getCount(); }
B. abstract class MyClass { abstract int getCount(); }
C. private abstract class MyClass { abstract int getCount(); }
D. sealed abstract class MyClass { abstract int getCount(); }
12. 已知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
13. MyClass为一个自定义的类,则下列语句创建了多少个类MyClass的对象?
MyClass[ , ] myArray = new MyClass[2][3];
A. 0
B. 2
C. 3
D. 6
课程名称: 软件设计模式
3




14. 下面是几条动态初始化二维数组的语句,指出其中正确的:
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];
15. 下面有关析构函数的说法中,不正确的是:
A. 析构函数中不可以包含return语句
B. 一个类中只能有一个析构函数
C. 析构函数在对象被撤销时,被自动调用
D. 用户可以定义有参析构函数
16. 下列说法哪个正确?
A. 不需要定义类,就能创建对象
B. 属性可以定义为抽象的
C. 对象中必须有属性和方法
D. 常量不能作为类成员
17. 下面有关静态方法的描述中,正确的是:
A. 静态方法属于类,不属于实例
B. 静态方法可以直接用类名调用
C. 静态方法中,可以访问非静态的局部变量
D. 静态方法中,可以访问静态的变量
18. 以下描述错误的是:
A. 在C++中支持抽象类,但在C#中不支持抽象类。
B. C++中可在头文件中声明类的成员,而在 CPP文件中定义类的成员;在C#中没有头文
件并且在同一处声明和定义类的成员。
C. 在C#中可使用 new 修饰符显式隐藏从基类继承的成员。
D. 在C#中要在派生类中重新定义基类的虚函数必须在前面加Override。
19. 下列关于构造函数的描述正确的是:
A. 构造函数可以声明返回类型。
B. 构造函数不可以用private修饰
C. 构造函数必须与类名相同
D. 构造函数不能带参数
20. 变量x的值为25,要输出x的值,下列正确的语句是:
A. ine(“x”)
课程名称: 软件设计模式
4




B. ine(“x”)
C. ine(“x={0}”,x)
D. ine(“x={x}”)
二:判断题(共20分,20小题,每小题1分。请将答案√或×填入下表)
题号
答案
题号
答案

1
×
11

2
×
12
×
3
×
13

4
×
14

5

15

6

16
×
7
×
17

8
×
18
×
9
×
19

10
×
20

1. 软件危机是开发软件的开发工具功能不强造成的。(×)
2. 结构化程序设计的3种基本结构是顺序、循环和选择。(×)
3. 面向数据流的设计以面向对象分析阶段的数据流图为基础。(×)
4. 软件设计主要是要求功能强大,对于说明文档的要求则可以适当放松。(×)
5. 软件测试方法主要白盒测试和黑盒测试两种。(√)
6. 螺旋模型包括制定计划、概要设计,详细设计和工程实施四个主要部分。(√)
7. 面向对象方法是从算法为出发点来构造系统。(×)
8. 在面向对象方法中,封装使得外界无法存取对象的内部信息。(×)
9. 面向过程方法的缺点是过程和数据结合的过于紧密。(×)
10. 面向对象程序设计应该遵循低内聚、高耦合的原则。(×)
11. 消息可以用顺序图和协作图这两种图来表示。(√)
12. 状态图、顺序图、协作图和部署图属于动态建模机制。(×)
13. 顺序图描述系统中对象间通过消息进行的交互,强调消息在时间轴上的先后顺序。(√)
14. 提倡设计模式的根本原因是增强代码复用,增加可维护性。(√)
15. 里氏代换原则的本质是在同一个继承体系中的对象应该有共同的行为特征。(√)
16. 工厂方法是抽象工厂模式的扩展。(×)
17. 提倡设计模式的根本原因是增强代码复用,增加可维护性。(√)
18. 具有抽象方法的类必须声明为abstract. (×)
19. 当创建派生类对象时,先执行基类的构造函数,后执行派生类的构造函数。(√)
20. 虚函数是可由子类继承并重写的函数。(√)


课程名称: 软件设计模式
5




三:简答题(共25分,5小题,每小题5分。)
1. 试简述瀑布模型。
答:瀑布模型(Waterfall Model) 是一个项目开发架构,开发过程是通过设计一系列 阶段
顺序展开的,从系统需求分析开始直到产品发布和维护,每个阶段都会产生循环反馈,
因此 ,如果有信息未被覆盖或者发现了问题,那么最好 “返回”上一个阶段并进行适当
的修改,项目开发进 程从一个阶段“流动”到下一个阶段,这也是瀑布模型名称的由来。
包括软件工程开发、企业项目开发、 产品生产以及市场销售等构造瀑布模型。
瀑布模型是
将软件生存周期的各项活动规定为按固定顺 序而连接的若干阶段工作,形如瀑布流水,
最终得到软件产品。


2. 设计模式的基本要素有哪些?
答:设计模式基本要素为:模式名称、问题、解决方案和效果。
1、 模式名称:一个助记名称,用来描述设计模式、解决方案和效果。
2、 问题:主要描述在何时使用设计模式。
3、 解决方案:描述了设计的组成成分、它们之间的相互关系及各自的职责和协作方式
4、 效果:描述了模式应用的效果和使用模式权衡的问题。
3. 什么是创建型设计模式,它的目的是什么?

答:设计模式是一套被反复使用、多数人知晓的 、经过分类编目的、代码设计经验的总结。
使用设计模式是为了可重用代码、让代码更容易被他人理解, 保证代码可靠性。
创建型设计模式,就是创建对象的模式,抽象了实例化的过程。
创建型模式(Creational Pattern)对类的实例化过程进行了抽象,能够将软件模块中对象的
创建和对象的使用分离。
创建型模式包括5个模式:单例模式,工厂方法,抽象工厂,原型模式,建造者模式


4. 结构型模式的功能有哪些?
答:结构型模式的功能有以下几个方面:
1、 在不破坏类的封装性的基础上,实现新的功能
2、 在不破坏类的封装性的基础上,使得类可以同不曾估计到的系统进行交互
3、 创建对一组类的统一的访问接口
4、 对同一类,创建不同的访问界面,提供给不同的访问者




课程名称: 软件设计模式
6




5. 构造函数有哪些特殊性?
答:1、构造器必须与类同名(如果一个源文件中有多个类,那么构造器必须与公共类同名)
2、每个类可以有一个以上的构造器
3、构造器可以有0个、1个或1个以上的参数
4、构造器没有返回值
5、构造器总是伴随着new操作一起调用

四:综合题(共15分)
1. 试举一个例子并设计抽象工厂模式的UML结构图(7分)

答:电脑生产:
1、 联想和DELL都是计算机生产厂家,但他们采用的主板、 硬盘和CPU不同,但
主板、硬盘和CPU之间可以兼容。
2、 硬盘有Maxtor和we stDigit两种,CPU有Intel和AMD,主板有MSI865PE和
MSIK7N2G两种
3、 联想采用Intel的CPU和WestDigit的硬盘,DELL采用AMD的CPU和Ma xtor
的硬盘。
抽象工厂模式的UML结构图如下:


CPU
主板 硬盘








MSIK7N2G MSI865PE AMD Intel WestDigit Maxtor






DELL
联想






计算机生产厂家


课程名称: 软件设计模式
7




2. 定义一个抽 象的运动员(Player)基类,具有抽象方法Train方法。然后以该类为基类,派
生出Bask etballPlayer、FootballPlayer等类。(8分)

答:Class Player{








课程名称:
Train(){
n(这是基类的抽象方法
}
}
Class BasketballPlayer extends Player{
Train(){
n(这子类的方法
}
}
Class FootballPlayer extends Player{
Train(){
n(这子类的方法
}
}
软件设计模式
8

圣诞是几月几日-小学生黑板报


金吉列-纪律教育心得体会


shouchaobao-历史教学反思


南京银行招聘-红日读后感


清明节几号-八年级地理下册教案


编译局-德能勤绩廉


烟台南山学院地址-既也造句


红包的由来-新年祝福语