C#设计模式期末卷.doc_第1页
C#设计模式期末卷.doc_第2页
C#设计模式期末卷.doc_第3页
C#设计模式期末卷.doc_第4页
C#设计模式期末卷.doc_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

试卷序号:班级:学号:姓名: 装 订 线 防灾科技学院2013 2014 学年 第一学期期末考试UML与设计模式 试卷 (A) 答案及评分细则 使用班级1050421/422/423/424、1050411/412 答题时间:120分钟题号一二三四五总分阅卷 教师得分注意事项:1、 考试形式闭卷 阅卷教师得 分一、单选题(本大题共5小题,每题 2分,共 10 分,请将答案填写在该题后指定位置)1、当我们想创建一个具体的对象而又不希望指定具体的类时,可以使用( )模式。 A 创建型 B 结构型 C行为型 D 以上都可以2、下面( )图元哪个一个表示关联关系。 A B C D 3、下列模式中,属于行为模式的是( )A.工厂模式B观察者模式 C桥接器模式 D 以上都是 4、( )将一个请求封装为一个对象,从而使用户可用不同的请求对客户进行参数化。A 代理模式 B 适配器模式 C原型模式 D 命令模式 5、C+中将一个对象赋值给另外一个创建的对象,如下面的代码(注A代表一个类): A a; A b=a;一定会使用到A类中什么函数是 ( )。A. 析构函数 B 拷贝构造函数C. 赋值函数 D. 友元函数 答案填写处: 1 A ; 2 B ;3 B ;4 D ;5 B 。阅卷教师得 分二、填空题(本大题10个空,每空2分,共20分,请将答案填写在该题后指定位置)1、所谓开闭原则具体是指 设计对扩展开放 、_对修改关闭_。2、设计模式一般用来解决 同一问题的不同表相 的问题。3、工厂模式分为 简单工厂 、 工厂方法 、 抽象工厂 三种类型。4、程序设计中追求的两个最基本的原则是 高内聚 、_低耦合_。5、C# 编程使用 namespace 关键字表示命名空间,C+中通过 extern 关键字使用其他文件中定义的全局变量。 答案填写处: 1 设计对扩展开放、 _对修改关闭 ; 2 同一问题的不同表相 ;3 简单工厂、工厂方法、抽象工厂 ;4 高内聚、低耦合 ;5 namespace、extern 。阅卷教师得 分三、判断题(本大题10个小题,每题1分,共10分,正确的请打,错误的打)1、框架是针对某个领域,提供用于开发应用系统的类的集合。 ( X )2、一个设计模式有四个基本要素:名称、问题、方案、角色。 ( X )3、类A的对象是类B中某个函数的参数,与B的关系是依赖关系。 ( V )4、UML中图元表示泛化关系。 ( V )5、低耦合是指程序中模块与模块间的关联性小。 ( V )6、可以使用代理模式实现一个类有且只有一个实例的想法。 ( X )7、默认情况下,C+ 中使用拷贝构造函数创建对象实质是浅拷贝。 ( V )8、一个类的静态函数可以调用类内的非静态函数。 ( X )9、面向对象编程,是指设计一个类时,不让该类面向具体的类,而是面向抽象类或接口。 ( V )10、接口中的方法访问权限一般为公有。 ( V )阅卷教师得 分四、简单题(本大题共5小题,每题 4分,共 20 分)(定义1分,定义1分,应用场景2分)1、 请问什么是桥接模式,桥接模式包含哪些角色、可以应用在哪些场景?定义:将抽象部分与实现部分分离,使得他们都可以独立地变化。角色:抽象、实现者、具体抽象、具体实现者应用场景:不想让抽象和某些重要的代码是固定的绑定关系;抽象和实现都可以继承的方式独立地扩充而不相互影响;希望实现者层次的代码的修改不影响抽象层。2、 请问什么是代理模式,代理模式包含哪些角色、可以应用在哪些场景?定义: 为其他对象提供一种代理以控制对这个对象的访问。角色:抽象主题、实际主题、代理。应用场景:程序可能不希望用户直接访问实际对象,而是通过一个特殊的对象以控制对当前对象的访问;如果一个对象需要很长时间才能加载完成;如果对象位于远程主机上,需要为用户提供访问远程对象的能力。3、 请问什么是装饰模式,装饰模式包含哪些角色、可以应用在哪些场景?定义:动态地给对象添加一些额外的职责。角色:抽象组件、具体组件、装饰、具体装饰。场景:程序希望动态地增强类的某个对象的功能,而又不影响到该类的其他对象;采用继承来增强对象功能不利于系统的扩展和维护。4、 请问什么是原型模式,原型模式包含哪些角色、可以应用在哪些场景?定义:用原型实例指定创建对象的种类,并且通过复制这些原型创建新的对象。角色:抽象原型;具体原型。场景:程序需要从一个对象出发,得到若干个和其他状态相同,并且可以独立变化其状态的对象;对象的创建可以与对象的构建独立。5、 请问什么是责任链器模式,责任链模式包含哪些角色、可以应用在哪些场景?定义:使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系,将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。角色:处理者、具体处理者。场景:有许多对象可以处理用户的请求,希望程序在运行期间自动确定处理用户的那个对象;希望用户不必明确指定接受者的情况下,向多个接受者一个提交请求;程序希望动态指定可处理用户请求的对象集合。阅卷教师得 分五、程序设计题(本大题共4个小题,每个题目10共 40分)1、现有一公司有3部门组成,每个部门有10名员工,现需要统计一个部门的人员工资总和和每名员工的工资,要求使用组合模式设计程序实现。(10分)抽象组件 (该部分3分,每处错误扣1分)import java.util.*;public interface Person public void add(Person person) throws NoSuchMethodException; public void remove(Person person) throws NoSuchMethodException; public MilitaryPerson getChild(int index) throws NoSuchMethodException; public Iterator getAllChildren() throws NoSuchMethodException; public boolean isLeaf(); public double getSalary(); public void setSalary(double salary); public String toString();Composite 节点(该部分4分,每处错误扣1分)public class Officer implements Person LinkedList list; String name; double salary; Officer(String name,double salary) =name; this.salary=salary; list=new LinkedList(); 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 getAllChildren() return list.iterator(); public boolean isLeaf() return false; public double getSalary() return salary; public void setSalary(double salary) this.salary=salary; 叶子节点(该部分3分,每处错误扣1分)public class staff implements Person double salary; String name; staff(String name,double salary) =name; this.salary=salary; public void add(Person person) public void remove (Person person) public Person getChild(int index) return null; public Iterator getAllChildren() return null; public boolean isLeaf() return true; public double getSalary() return salary; public void setSalary(double salary) this.salary=salary; 2、现有一字符串链表(LinkedList),装有1000个字符串(内容自拟),要求使用迭代器模式设计程序对链表的中的元素进行遍历并打印输出。(10分)import java.util.*;public class TestSpeed public static void main(String args) LinkedList list=new LinkedList(); (2分) for(int i=0;i=1000;i+) list.add(speed+i); Iterator iter=list.iterator(); (2分) long starttime=System.currentTimeMillis(); while(iter.hasNext() (2分) String te=iter.next(); (1分) long endTime=System.currentTimeMillis(); long result=endTime-starttime; System.out.println(使用迭代器遍历集合所用时间:+result+毫秒); starttime=System.currentTimeMillis(); for(int i=0;ilist.size();i+) (1分) String te=list.get(i); (1分) System.out.println(te); (1分) endTime=System.currentTimeMillis(); result=endTime-starttime; System.out.println(使用get方法遍历集合所用时间:+result+毫秒); 3、现有一个字符串数组,现需要:统计数组的长度,按照字符串的长度大小对数组进行排序,最后将排序号后的字符串数组输出。要求使用模板方法模式编写程序实现。(10分)抽象模板 (该部分4分,每处错误扣1分)import java.io.*;public abstract class AbstractTemplate String allStrings; AbstractTemplate(String all) this.allStrings=all; public final void showStrings () sort(); printStrings(); public abstract void sort(); public abstract void printStrings();具体模板(该处6分,每处错误扣1分)import java.io.*;import java.awt.*;import java.util.Date;import java.text.SimpleDateFormat;public class ConcreteTemplate1 extends AbstractTemplate ConcreteTemplate1(String all) super(all); public void sort() for(int i=0;iallStrings.length;i+) for(int j=i+1;jallString.l

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论