13春学期《软件设计模式》期末考核作业及答案
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
变,则应选择:
A. private B. protected C. internal
D. public
17. 在类的定义中,类的_______描述了该类的对象的行为特征。
A. 类名 B. 方法 C. 所属的名字空间 D. 私有域
18.C#语言中,下列能够作为变量名的是____。
A. if
B. 3ab C. a_3b
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
8. 下列说法哪个正确?
A. 不需要定义类,就能创建对象 B. 属性可以定义为抽象的
C. 对象中必须有属性和方法
D. 常量不能作为类成员
(3)里氏代换原则:继承必须确保超类所拥有的性质在子类中仍 然成立 (4)依赖倒置原则:如果一个类的一个成员或参数为一个具体类型,
那么这个类就依赖于那个具体类型。
3. 什么是面向对象软件开发的“开放-封闭”原则?其优点有 哪些?
答:所谓开放封闭原则就是软件实体应该对扩展开发,而对修改封 闭。
优点:按照开放-封闭原则设计出来的系统,降低了程序各部分 之间的耦合性,其适应性、灵活性、稳定性都比较好。当已有软 件系统需要增加新的功能时,不需要对作为系统基础的抽象层进 行修改,只需要在原有基础上附加新的模块就能实现所需要添加 的功能。增加的新模块对原有的模块完全没有影响或影响很小, 这样就无须为原有模块进行重新测试。
三:简答题(共25分,5小题,每小题5分。) 1. 什么是设计模式?
答:设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代 码设计经验的总结。
2. 面向对象设计中需要遵循哪些原则?为什么要遵循这些原 则?
答:(1)"开-闭"原则:软件对扩展应该是开放的,对修改应该 是关闭的。
(2)单一职责原则:就一个类而言,应该仅有一个引起它变化的 原因。
6. MyClass为一个自定义的类,则下列语句创建了多少个类MyClass的
对象?
MyClass[ , ] myArray = new MyClass[2][3];
A. 0 B. 2
C. 3
D. 6
7. 已知a、b、c的值分别是4、5、6,执行下面的程序段后,判断变量n
的值为:
int a,b,c,n;
程度。 7.面向对象程序设计应该遵循低内聚、高耦合的原则。 8.人机交互子系统的设计内容就是用户如何命令系统。 9.作为一种建模语言,UML的定义包括UML语义和UML表示法两个部 分。 10.状态图、顺序图、协作图和部署图属于动态建模机制。 11.顺序图和协作图虽然都是用来描述交互的,但顺序图强调的是空 间,而协作图强调的是时间。 12.面向对象设计中的"开-闭"原则指的是软件对修改应该是开放的, 对扩展应该是关闭的。 13.单一职责原则、里氏代换原则、依赖倒置原则等,都可以看成 是“开放-封闭”原则的实现方法。 14.一般来说,继承必须确保超类所拥有的性质在子类中仍然成立。 15.当一个超类的实例能够替换任何其子类的实例时,它们之间才具有 is-A关系。 16.工厂方法是抽象工厂模式的扩展。 17.结构型模式在破坏类的封装性的基础上,实现新的功能。 18.数组作为函数的参数时默认的传递形式是按值传递。 19.具有抽象方法的类必须声明为abstract。 20.重载是进行基类中函数的重写。
1. C#语言的核心是面向对象编程(OOP),所有OOP语言都应至少具有
三个特性:
பைடு நூலகம்
A、封装、继承和多态
B、类、对象和方法
C、封装、继承和派生
D、封装、继承和接口
2. 下列语句创建了多少个string 对象?
string[,] strArray = new string[3][4];
A. 0
B. 3
C. 4
D. 12
3. 关于结构类型,下列说法哪些是正确的?
A. 结构是值类型
B. 结构中不允许定义带参数的实例构造函数;
C. 结构中不允许定义析构函数
D. 结构中可以定义成员方法,但是方法内不能使用this 指针
4. 在c#程序中,入口函数的正确声明为:
A. static int main(){……}
12. 方法中的值参数是_________的参数。
A. 按值传递 B. 按引用传递 C. 按地址传递 D. 不传递任何
值
13. 结构化程序设计的3种结构是:
A. 顺序结构、if结构、for结构
B. if结构、if…else结构、else if结构
C. while结构、do…while结构、foreach结构
答:抽象工厂模式是所有形态的工厂模式中最为抽象和最具一般性 的一种形态。抽象工厂模式是指当有多个抽象角色时,使用的一种工厂 模式。抽象工厂模式可以向客户端提供一个接口,使客户端在不必指定 产品的具体的情况下,创建多个产品族中的产品对象。
四:综合题(共15分) 假设你现在是一家快餐店的的管理者,要给顾客提供一系列的 食品,如鸡翅、鸡腿等,顾客每要求一种食品,快餐店应当很 快“生产”出来。请采用工厂模式来实现这个过程,用C#语言 编写相应的类代码。
D. a-bc
19.能正确表示逻辑关系“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
20.以下关于for循环的说法不正确的是____。
A. for循环只能用于循环次数已经确定的情况
B. for循环是先判定表达式,后执行循环体语句
C. for循环中,可以用break语句跳出循环体
D. for循环体语句中,可以包含多条语句,但要用花括号括起来。
二:判断题(共20分,20小题,每小题1分。请将答案√或填 入下表)
题 1 2 3 4 5 6 7 8 9 10
号 答
×√×× √ √ × × √ ×
9. 在类的外部可以被访问的成员是:
A. public成员
B. private成员
C. protected成员
D. protected internal成员
10. C#语言源代码文件的后缀名为:
A. .C# B. .CC C. .CSP D. .CS
11. C#中导入某一个命名空间的关键字是:
A. using B. use C. import D. include
Console.WriteLine(“鸡腿+1”); } } //Concrete Product2角色 public class Wings: KFCFood { public override void show() {
Console.WriteLine(“鸡翅+1”); } } //产品工厂,Factory角色 interface IKFCFactory { KFCFood CreatFood(); }
{ public KFCFood CreateFood() { return new Chicken(); }
} Static void Main(String[] args) {
//定义一个鸡腿工厂 IKFCFactory factory=new ChickenFactory();
//生产鸡腿 KFCFood food1=factory.CreateFood(); food1.show();
4. 结构型模式的功能有哪些?
答:结构型模式能够解决如下几个方面的问题: (1)在不破坏类的封装性的基础上,实现新的功能; (2)在不破坏类的封装性的基础上,使得类可以同不曾估计到的 系统进行交互; (3)创建对一组类的统一的访问接口; (4)对同一类,创建不同的访问界面,提供给不同的访问者
5. 试简述抽象工厂模式。
答: //抽象的KFC食品,Product角色 public abstract class KFCFood
{ public abstract void show();
} //下面两个类表示两种具体的KFC食品,它们继承了抽象的KFC食品 Concrete Product1角色 public class Chicken: KFCFood { public override void show() {
修饰
C. 构造函数必须与类名相同
D. 构造函数不能带参数
16. 分析下列C#语句,注意类MyClass 没有访问修饰符:
namespace ClassLibrary1
{
class MyClass
{
public class subclass
{
int i;
}
}
}
若必须为类MyClass添加访问修饰符,并使MyClass的可访问域保持不
//鸡翅膀工厂,ConcreteFactory角色 public class WingsFactory: IKFCFactory {
public KFCFood CreateFood() {
return new Wings(); } }
//鸡腿工厂,ConcreteFactory角色 public class ChickenFactory: IKFCFactory
案 题
11 12 13 14 15 16 17 18 19 20 号 答
× × √ √ × × × × ××
案
1.软件危机是二十一世纪软件领域出现的新问题。 2.数据流分析技术是结构化分析方法的核心技术。 3.从提出软件开发计划的那一刻起开始直到软件投入实际应用为止可 以认为是一个完整的软件生存周期。 4.喷泉模型主要用于面向过程的软件项目。 5.类是所有某一类对象的共同的行为和不同状态的集合体。 6.利用多重继承虽然可以提高类的共享程度,但也会增加系统的复杂
B. static void Main(){……}
C. static void main(){……}
D. void Main(){……}
5. 在C#中,引用命名空间system 的正确语句是:
A. using System;
B. #import <System>;
C. uses System;
D. #include <System>;
D. 顺序结构、分支结构、循环结构
14. 以下关于类和对象的说法中,不正确的是:
A. 类包含了数据和对数据的操作 B. 一个对象一定属于某个类
C. 类是同一类对象的抽象 D. 可由抽象类生成对象
15.下列关于构造函数的描述正确的是:
A. 构造函数可以声明返回类型 B. 构造函数不可以用private
//生产鸡腿 KFCFood food2=factory.CreateFood(); food2.show();
//生产鸡腿 KFCFood food3=factory.CreateFood(); food3.show(); Console.Read(); }
东北大学继续教育学院
A卷
软件设计模式 试 卷(作业考核 线上)
学习中心:_____________院校学 号:_____________姓名:____________
(共 页) 总题
一二三四五六七八九十 分号
得 分
一:单选题(共40分,20小题,每小题2分。请将答案填入下 表)
题号 1 2 3 4 5 6 7 8 9 10 答案 A D A B A D D B A D 题号 11 12 13 14 15 16 17 18 19 20 答案 A A D D C C B C D A