吉林大学2012级软件设计模式试题

上传人:daj****de 文档编号:123190535 上传时间:2022-07-22 格式:DOCX 页数:4 大小:37.40KB
收藏 版权申诉 举报 下载
吉林大学2012级软件设计模式试题_第1页
第1页 / 共4页
吉林大学2012级软件设计模式试题_第2页
第2页 / 共4页
吉林大学2012级软件设计模式试题_第3页
第3页 / 共4页
资源描述:

《吉林大学2012级软件设计模式试题》由会员分享,可在线阅读,更多相关《吉林大学2012级软件设计模式试题(4页珍藏版)》请在装配图网上搜索。

1、2014-2015 学年第1 学期2012 级软件设计模式考试试题(开卷)考试时间:2014年班级 学号 姓名 本试卷满分100分; 请将答案写在答题纸上,写明题号,不必抄题,字迹工整、清晰; 试题中使用C+语言作为描述语言,答题时可以使用+或Java或C#程序设计语言中 的任意一种作为描述语言,但整个卷面只能使用其中一种,不得混合使用; 请在答题纸和试题纸上都写上你的班级,学号和姓名,交卷时请将试题纸、答题纸和草纸 一并交上来。一、单选题(共 20 分,每题 2 分)1. 类设计中,“变化是绝对的,稳定是相对的”,下列哪个不属于这句话中“变化”的范畴?(A) 改变函数参数的类型(B) 增加新

2、的数据成员(C) 改变编程语言(D) 改变对象交互的过程和顺序2. Open-Close 原则的含义是一个软件实体:(A) 应当对扩展开放,对修改关闭(B) 应当对修改开放,对扩展关闭(C) 应当对继承开放,对修改关闭(D) 以上都不对3. 下列关于继承表述错误的是:(A) 继承是一种通过扩展一个已有类的实现,从而获得新功能的复用方法(B) 泛化类(超类)可以显式地捕获那些公共的属性和方法。特殊类(子类)则通过附加 属性和方法来进行实现的扩展(C) 破坏了封装性,因为这会将父类的实现细节暴露给子类(D) 继承本质上是“白盒复用”,对父类的修改,不会影响到子类4. 下列关于对象组合/聚合,说法错

3、误的是:(A) 容器类能通过被包含对象的接口来对其进行访问(B) 属于黑盒复用,封装性好,因为被包含对象的内部细节对外是不可见(C) 可以在运行时将被包含对象改变成同类型对象,从而改变容器类的行为效果,但没有 改变容器类的接口(D) 比继承关系更加灵活,代价是相比继承关系,增强了类间的耦合度5. 用于分离接口和具体实现,使得接口和实现可独立变化的是:(A)适配器模式(B)桥接模式 (C)命令模式 (D)模板方法模式6. 体现“集中管理多个对象间的交互过程和顺序”的是:(A)生成器模式(B)门面模式 (C)策略模式 (D)中介者模式7. 限制类的实例对象只能有一个的是:.(D) 生成器模式(A)

4、 原型方法模式 (B) 工厂方法模式 (C) 单件模式8. 用于为一个对象添加更多功能而不使用子类的是:(A) 桥接模式 (B) 适配器模式 (C) 合成(组合)模式(D) 装饰器模式9. 适配器设计模式可以用于:(A) 将已有类的接口转换成和目标接口兼容(B) 改进系统性能(C) 将客户端代码数据转换成目标接口期望的合适的格式(D) 使所有接口不兼容类可以一起工作10. 关于原型方法模式的说法,错误的是:(A) 便于在运行时刻更换原型对象;(B) 各产品必须实现复制的方法,如Clone方法;(C) 实现产品复制功能的难易程度,是应用该模式必须考虑的;(D) 设计时,不能同时使用生成器模式和原

5、型方法模式;、(共20分,每题5分)阅读代码,按要求回答问题:class Shape public:class Rectangle:public Shape public:virutal Rectangle( ) virtual void Draw( ) const coutvvDraw Rectangle.vvendl;virtual Shape( ) virtual void Draw( ) const = 0;已class Ellipse class Circle:public Shape 有public:public:的Ellipse( int a,int b):ra(a),rb(b)

6、 virutal Circle( ) 椭bool X_Draw( ) /*略*/virtual void Draw( ) const 圆private:coutDraw Circle.vvendl;类int ra,int rb; 椭圆长短轴; ;1. 考察Shape,Rectangle和Circle三个类。若Circle:Draw()的实现会有多种其它方法,又不 想从Circle类派生新子类。请给出你的设计方案或示例代码。2.若Circle:Draw()的实现就是长短轴均为2的Ellipse:X_Draw(),请问你怎样设计。给出你 的设计方案或示例代码。3.请使用装饰器模式给Draw添加新的

7、功能。给出示例代码及相应的主函数。 如扩展矩形 Draw 的输出为: Start Drawing Draw Rectangle.扩展圆形 Draw 的输出为: Draw Circle.Draw Over.4. 若从Shape类再派生一个新的子类Picture,且Picture组合多个Shape对象,其中Picture 的Draw就是依次绘制其组合的各个Shape。现假设一个Picture对象只包含一个Rectangle 和一个Circle对象,请在3的基础上继续扩展,并编写主函数,使得主函数能够输出: Start Drawing Draw Rectangle.Draw Circle.Draw

8、Over.请给出具体设计代码和主函数。三、(20 分)现开发一个应届毕业生招聘软件,初步方案中的类图如下:(1)各公司招聘毕业生的流程是不一样的;(2)同一公司招聘不同毕业生(这里举例Boy,Girl)的流程也是不一样的;(3)已知不同毕业生的类别是稳定的。(如Boy和Girl)(4)以后可能增加新功能,如试用(Practise).(5)以后可能增加新的公司。1. (12 分)请应用访问者模式重新给出设计方案或示例代码,使得你的新设计满足根据上 述要求。2. (4分)请说明如果增加新的功能(如试用), 1中的设计如何适应。请给出示例代码.3. (4分)请说明如果增加新的公司(如中兴公司), 1

9、中的设计如何适应。请给出示例代码.四、(40分,每题20分)应用设计模式,给出设计方案、示例代码。1. 游戏中每个初始英雄带一样武器,占据一个城堡,拥有一件法器。武器、城堡、法器 都有多种,现已预设了几类英雄,如海盗(火枪、岛城、行船术)、骑士(火枪、石城、 骑马术)等。(1) 未来一定会增加新武器、新城堡、新法器等。如武器中增加一种新武器:激光枪。(2) 来一定会增加新的预设类英雄,如未来战士。(3) 各类英雄的特征不完全相同,但可能会有重复。如海盗、骑士都使用火枪。最初的部分代码如下: class Knight:public Hero public: Knight( ) weapon = new Rifle( ); castle = new StoneCastle( ); power = new HorseMagic( );现希望分离英雄与具体特性(如武器、城堡、法器等)的创建。请选择适当的设计模式 重新设计,实现设计者的愿望。简要说明你的设计方案,并给出示例代码。2. 猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒。(1) 要有联动性,老鼠和主人的行为是被动的;(2) 考虑可扩展性,猫的叫声可能引起其他联动效应。 请选择适当的设计模式描述上述场景,简要说明你的设计方案,并给出示例代码。厶半宀全卷完

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!