C#设计模式期末卷

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
public class Officer implements Person{ LinkedList<Person> list; String name; double salary; Officer(String name,double salary){ this.name=name; this.salary=salary; list=new LinkedList<Person>(); } public void add(Person person) { list.add(person); } public void remove(Person person){ list.remove(person); } public Person getChild(int index) { return list.get(index); } public Iterator<Person> getAllChildren() { return list.iterator(); } public boolean isLeaf(){ return false; } public double getSalary(){ return salary; } public void setSalary(double salary){ this.salary=salary; }
UML 与设计模式 试卷 (A) 答案及评分细则
使用班级 1050421/422/423/424、1050411/412
题号 一




答题时间:120 分钟
阅卷 总分 教师
注意事项: 1、 考试形式闭卷
阅卷教师 得分
得分
一、单选题(本大题共 5 小题,每题 2 分,共 10 分,请将答案填写在该题后指定位置)
定义:将抽象部分与实现部分分离,使得他们都可以独立地变化。 角色:抽象、实现者、具体抽象、具体实现者 应用场景:不想让抽象和某些重要的代码是固定的绑定关系;抽象和实现都可以继承的方式独立地扩充而不相互影响; 希望实现者层次的代码的修改不影响抽象层。
2、 请问什么是代理模式,代理模式包含哪些角色、可以应用在哪些场景? 定义: 为其他对象提供一种代理以控制对这个对象的访问。 角色:抽象主题、实际主题、代理。 应用场景:程序可能不希望用户直接访问实际对象,而是通过一个特殊的对象以控制对当前对象的访问;如果一个对象需要很长时 间才能加载完成;如果对象位于远程主机上,需要为用户提供访问远程对象的能力。
} 叶子节点(该部分 3 分,每处错误扣 1 分) public class staff implements Person{
double salary; String name; staff(String name,double salary){
this.name=name; this.salary=salary; } public void add(Person person) {} public void remove (Person person){} public Person getChild(int index) { return null;
import java.io.*;
public abstract class AbstractTemplate{
String [] allStrings;
AbstractTemplate(String [] all){
this.allStrings=all;
}
public final void showStrings (){
this.salary=salary; } } 2、现有一字符串链表(LinkedList),装有 1000 个字符串(内容自拟),要求使用迭代器模式设计程序对链表的中的元素进行遍历并 打印输出。(10 分)
import java.util.*;
public class TestSpeed{
public static void main(String args[]){

第1页共5页
阅卷教师 得分
三、判断题(本大题 10 个小题,每题 1 分,共 10 分,正确的请打√,错误的打×)
1、框架是针对某个领域,提供用于开发应用系统的类的集合。
2、一个设计模式有四个基本要素:名称、问题、方案、角色。
3、类 A 的对象是类 B 中某个函数的参数,A与 B 的关系是依赖关系。
public void add(Person person) throws NoSuchMethodException; public void remove(Person person) throws NoSuchMethodException; public MilitaryPerson getChild(int index) throws NoSuchMethodException; public Iterator<Person> getAllChildren() throws NoSuchMethodException; public boolean isLeaf(); public double getSalary(); public void setSalary(double salary); public String toString(); } Composite 节点(该部分 4 分,每处错误扣 1 分)

阅卷教师 得分
二、填空题(本大题 10 个空,每空 2 分,共 20 分,请将答案填写在该题后指定位置)
1、所谓开闭原则具体是指 设计对扩展开放
、____对修改关闭_________。
2、设计模式一般用来解决 同一问题的不同表相
的问题。
3、工厂模式分为 简单工厂
、 工厂方法

抽象工厂 三种类型。
4、程序设计中追求的两个最基本的原则是
10、接口中的方法访问权限一般为公有。
(X ) (X ) (V ) (V ) (V ) (X ) ( V) (X ) (V) (V)
阅卷教师 得分
四、简单题(本大题共 5 小题,每题 4 分,共 20 分)(定义 1 分,定义 1 分,应用场景 2 分) 1、 请问什么是桥接模式,桥接模式包含哪些角色、可以应用在哪些场景?
4、UML 中图元
表示泛化关系。
5、低耦合是指程序中模块与模块间的关联性小。
6、可以使用代理模式实现一个类有且只有一个实例的想法。
7、默认情况下,C++ 中使用拷贝构造函数创建对象实质是浅拷贝。
8、一个类的静态函数可以调用类内的非静态函数。
wk.baidu.com
9、面向对象编程,是指设计一个类时,不让该类面向具体的类,而是面向抽象类或接口。
高内聚
、______低耦合_______。
5、C# 编程使用 namespace
关键字表示命名空间,C++中通过 extern
关键字使用其他文件中定义的全局变量。
答案填写处:
1 设计对扩展开放、 _对修改关闭
; 2 同一问题的不同表相
;3 简单工厂、工厂方法、抽象工厂

4
高内聚、低耦合
;5
namespace、extern
starttime=System.currentTimeMillis();
for(int i=0;i<list.size();i++){
(1 分)
String te=list.get(i);
(1 分)
System.out.println(te);
(1 分)
}
endTime=System.currentTimeMillis();
第3页共5页
} public Iterator<Person> getAllChildren() {
return null; }
public boolean isLeaf(){ return true;
} public double getSalary(){
return salary; } public void setSalary(double salary){
试卷序号:
班级:
学号:
姓名:
━━━━━━━━━装━━━ ━━━━订━━━━━━━线━━━━━━━━━━━━ ━ ━ ━ ━ ━ ━ ━ ━ ━ ━ ━ ━ ━ ━ ━ ━ ━ ━━ ━ ━ ━ ━ ━ ━ ━ ━ ━ ━ ━ ━ ━ ━ ━ ━ ━ ━ ━ ━
防灾科技学院
2013 ~ 2014 学年 第一学期期末考试
阅卷教师 得分 五、程序设计题(本大题共 4 个小题,每个题目 10 共 40 分)
第2页共5页
1、现有一公司有 3 部门组成,每个部门有 10 名员工,现需要统计一个部门的人员工资总和和每名员工的工资,要求使用组合模式设计 程序实现。(10 分) 抽象组件 (该部分 3 分,每处错误扣 1 分) import java.util.*; public interface Person{
A 代理模式 B 适配器模式 C 原型模式 D 命令模式
5、C++中将一个对象赋值给另外一个创建的对象,如下面的代码(注 A 代表一个类):
A a;
A b=a;
一定会使用到 A 类中什么函数是 ( )。
A. 析构函数
B 拷贝构造函数
C. 赋值函数 D. 友元函数
答案填写处:
1A
; 2 B ;3 B ;4 D ;5 B
sort();
printStrings();
}
public abstract void sort();
while(iter.hasNext()){
(2 分)
String te=iter.next();
(1 分)
}
long endTime=System.currentTimeMillis();
long result=endTime-starttime;
System.out.println("使用迭代器遍历集合所用时间:"+result+"毫秒");
LinkedList<String> list=new LinkedList<String>(); (2 分)
for(int i=0;i<=1000;i++){
list.add("speed"+i);
}
Iterator<String> iter=list.iterator();
(2 分)
long starttime=System.currentTimeMillis();
5、 请问什么是责任链器模式,责任链模式包含哪些角色、可以应用在哪些场景? 定义:使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系,将这些对象连成一条链,并沿着这条链 传递该请求,直到有一个对象处理它为止。 角色:处理者、具体处理者。 场景:有许多对象可以处理用户的请求,希望程序在运行期间自动确定处理用户的那个对象;希望用户不必明确指定接受者的情况 下,向多个接受者一个提交请求;程序希望动态指定可处理用户请求的对象集合。
3、 请问什么是装饰模式,装饰模式包含哪些角色、可以应用在哪些场景? 定义:动态地给对象添加一些额外的职责。 角色:抽象组件、具体组件、装饰、具体装饰。 场景:程序希望动态地增强类的某个对象的功能,而又不影响到该类的其他对象;采用继承来增强对象功能不利于系统的扩展和维 护。
4、 请问什么是原型模式,原型模式包含哪些角色、可以应用在哪些场景? 定义:用原型实例指定创建对象的种类,并且通过复制这些原型创建新的对象。 角色:抽象原型;具体原型。 场景:程序需要从一个对象出发,得到若干个和其他状态相同,并且可以独立变化其状态的对象;对象的创建可以与对象的构建独 立。
1、当我们想创建一个具体的对象而又不希望指定具体的类时,可以使用(
)模式。
A 创建型 B 结构型 C 行为型 D 以上都可以
2、下面( )图元哪个一个表示关联关系。
A
B
C
D
3、下列模式中,属于行为模式的是( )
A.工厂模式 B 观察者模式 C 桥接器模式 D 以上都是
4、( )将一个请求封装为一个对象,从而使用户可用不同的请求对客户进行参数化。
result=endTime-starttime;
System.out.println("使用 get 方法遍历集合所用时间:"+result+"毫秒");
}
}
3、现有一个字符串数组,现需要:统计数组的长度,按照字符串的长度大小对数组进行排序,最后将排序号后的字符串数组输出。要
求使用模板方法模式编写程序实现。(10 分) 抽象模板 (该部分 4 分,每处错误扣 1 分)
相关文档
最新文档