吉林大学2012级设计模式试题.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
吉林大学2012级设计模式试题

2014-2015学年第1学期 2012级《软件设计模式》考试试题(开卷) 考试时间:2014年 班级 学号 姓名 本试卷满分100分; 请将答案写在答题纸上,写明题号,不必抄题,字迹工整、清晰; 试题中使用C++语言作为描述语言,答题时可以使用C++或Java或C#程序设计语言中 的任意一种作为描述语言,但整个卷面只能使用其中一种,不得混合使用; 请在答题纸和试题纸上都写上你的班级,学号和姓名,交卷时请将试题纸、答题纸和草纸 一并交上来。 单选题(共20分,每题2分) 类设计中,“变化是绝对的,稳定是相对的”,下列哪个不属于这句话中“变化”的范畴? (A) 改变函数参数的类型 (B) 增加新的数据成员 (C) 改变编程语言 (D) 改变对象交互的过程和顺序 Open-Close原则的含义是一个软件实体: (A) 应当对扩展开放,对修改关闭 (B) 应当对修改开放,对扩展关闭 (C) 应当对继承开放,对修改关闭 (D) 以上都不对 下列关于继承表述错误的是: (A) 继承是一种通过扩展一个已有类的实现,从而获得新功能的复用方法 (B) 泛化类(超类)可以显式地捕获那些公共的属性和方法。特殊类(子类)则通过附加 属性和方法来进行实现的扩展 (C) 破坏了封装性,因为这会将父类的实现细节暴露给子类 (D) 继承本质上是“白盒复用”,对父类的修改,不会影响到子类 下列关于对象组合/聚合,说法错误的是: (A) 容器类能通过被包含对象的接口来对其进行访问 (B) ?属于黑盒复用,封装性好,因为被包含对象的内部细节对外是不可见 (C) 可以在运行时将被包含对象改变成同类型对象,从而改变容器类的行为效果,但没有改变容器类的接口 (D) 比继承关系更加灵活,代价是相比继承关系,增强了类间的耦合度 用于分离接口和具体实现,使得接口和实现可独立变化的是: (A)适配器模式 (B) 桥接模式 (C) 命令模式 (D)模板方法模式 体现“集中管理多个对象间的交互过程和顺序”的是: (A)生成器模式 (B) 门面模式 (C) 策略模式 (D)中介者模式 限制类的实例对象只能有一个 原型工厂方法单 ?生成器 用于为一个对象添加更多功能而不使用子类的是 桥接适配器组合 ?装饰器 适配器设计模式可以用于 将已有类的接口转换成和目标接口兼容 (B) 改进系统性能 (C) 将客户端代码数据转换成目标接口期望的合适的格式 (D) 使所有接口不兼容类可以一起工作 class Shape { public: virtual ~Shape( ) {} virtual void Draw( ) const = 0; }; class Rectangle:public Shape { public: virutal ~Rectangle( ) {} virtual void Draw( ) const { coutDraw Rectangle.endl; } }; 已有的椭圆类 class Ellipse { public: Ellipse( int a,int b):ra(a),rb(b) { } bool X_Draw( ) { /*略*/ } private: int ra,int rb; //椭圆长短轴 }; class Circle:public Shape { public: virutal ~Circle( ) { } virtual void Draw( ) const { coutDraw Circle.endl; } }; 考察Shape,Rectangle和Circle三个类。若Circle::Draw( )的实现会有多种其它方法,又不想从Circle类派生新子类。请给出你的设计方案或示例代码。 若Circle::Draw( )的实现就是长短轴均为2的Ellipse::X_Draw( ),请问你怎样设计。给出你的设计方案或示例代码。 请使用装饰器模式给Draw添加新的功能。给出示例代码及相应的主函数。 如扩展矩形Draw的输出为: Start Drawing … Draw Rectangle. 扩展圆形Draw的输出为: Draw Circle. Draw Over. 若从Shape类再派生一个新的

文档评论(0)

shenlan118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档