ImageVerifierCode 换一换
格式:DOC , 页数:5 ,大小:58.50KB ,
资源ID:1340372      下载积分:5000 积分
快捷下载
登录下载
邮箱/手机:
温馨提示:
如需开发票,请勿充值!快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝扫码支付 微信扫码支付   
注意:如需开发票,请勿充值!
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【http://www.mydoc123.com/d-1340372.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(【计算机类职业资格】软件设计师-29及答案解析.doc)为本站会员(postpastor181)主动上传,麦多课文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知麦多课文库(发送邮件至master@mydoc123.com或直接QQ联系客服),我们立即给予删除!

【计算机类职业资格】软件设计师-29及答案解析.doc

1、软件设计师-29 及答案解析(总分:100.00,做题时间:90 分钟)一、试题一(总题数:1,分数:20.00)1.阅读下列说明和 C+代码,将应填入_处的字句写在下面。 说明 某咖啡店当卖咖啡时,可以根据顾客的要求在其中加入各种配料,咖啡店会根据所加入的配料来计算费用。咖啡店所供应的咖啡及配料的种类和价格如下表所示。 咖啡 价格/杯(¥) 配料 价格/杯(¥) 蒸馏咖啡(Espresso) 25 摩卡(Mocha) 10 深度烘焙咖啡(DarkRoast) 20 奶泡(Whip) 8 现采用装饰器(Decorator)模式来实现计算费用的功能,得到如下图所示的类图。 (分数:20.00)_

2、二、试题二(总题数:1,分数:20.00)2.阅读下列说明和 C+代码,将应填入_处的字句写在下面。 说明 某大型商场内安装了多个简易的纸巾售卖机,自动售出 2 元钱一包的纸巾,且每次仅售出一包纸巾。纸巾售卖机的状态如图 1 所示。 图 1 纸巾售卖机状态图采用状态(State)模式来实现该纸巾售卖机,得到如图 2 所示的类图。其中类 State 为抽象类,定义了投币、退币、出纸巾等方法接口。类 SoldState、SoldOutState、NoQuanerstate 和 HasQuanerState 分别对应图 1 中纸巾售卖机的 4 中状态:售出纸巾、纸巾售完、没有投币、有 2 元钱。 (

3、分数:20.00)_三、试题三(总题数:1,分数:20.00)3.阅读下列说明和 C+代码,将应填入_处的字句写在下面。 说明 某饭店在不同的时段提供多种不同的餐饮,其菜单的结构图如图 1 所示。现在采用组合(Composition)模式来构造该饭店的菜单,使得饭店可以方便地在其中添加新的餐饮形式,得到如图 2 所示的类图,其中MenuComponent 为抽象类,定义了添加(add)新菜单和打印饭店所有菜单信息(print)的方法接口。类 Menu表示饭店提供的每种餐饮形式的菜单,如煎饼屋菜单、咖啡屋菜单等。每种菜单中都可以添加子菜单,例如图 1 中的甜点菜单,类 MenuItem 表示菜单

4、中的菜式。 图 1 菜单结构图(分数:20.00)_四、试题四(总题数:1,分数:20.00)4.阅读下列说明和 Java 代码,将应填入_处的字句写在下面。 说明 某灯具厂商欲生产一个灯具遥控器,该遥控器具有 7 个可编程的插槽,每个插槽都有开关按钮,对应着一个不同的灯。利用该遥控器能够统一控制房间中该厂商所有品牌灯具的开关,现采用 Command(命令)模式实现该遥控器的软件部分,Command 模式的类图如下图所示。 (分数:20.00)_五、试题五(总题数:1,分数:20.00)5.阅读下列说明和 Java 代码,将应填入_的字句写在下面。 说明 某实验室欲建立一个实验室环境监测系统,

5、能够显示实验室的温度、湿度以及洁净度等环境数据,当获取到最新的环境测量数据时,显示的环境数据能够更新现在采用观察者(observer)模式来开发该系统,观察者模式的类图如下图 2 所示。 (分数:20.00)_软件设计师-29 答案解析(总分:100.00,做题时间:90 分钟)一、试题一(总题数:1,分数:20.00)1.阅读下列说明和 C+代码,将应填入_处的字句写在下面。 说明 某咖啡店当卖咖啡时,可以根据顾客的要求在其中加入各种配料,咖啡店会根据所加入的配料来计算费用。咖啡店所供应的咖啡及配料的种类和价格如下表所示。 咖啡 价格/杯(¥) 配料 价格/杯(¥) 蒸馏咖啡(Espress

6、o) 25 摩卡(Mocha) 10 深度烘焙咖啡(DarkRoast) 20 奶泡(Whip) 8 现采用装饰器(Decorator)模式来实现计算费用的功能,得到如下图所示的类图。 (分数:20.00)_正确答案:()解析:protected virtual string getDescription virtual int cost()=0 Beverage*beverage beverage beverage 解析 由类图可知,Beverage 是基类,Espresso、DarkRoast、CondimentDecorator 是 Beverage 的派生类,Mocha、Whip 又是

7、CondimentDecorator 的派生类。 第一处应填入 description 的访问控制类型,可能为 private 或 protected。在 Beverage 的派生类Espresso 的初始化函数中直接使用 description,由此可知,在基类中,description 的访问控制类型为protected。如果为 private,则在派生中不能使用。 在基类中先后动态建立了一个 DarkRoast 对象、Mocha 对象和 Whip 对象,调用初始化函数,并输出。 在 Mocha 类和 Whip 类中分别调用了基类的 getDescription()cost()。二、试题二

8、总题数:1,分数:20.00)2.阅读下列说明和 C+代码,将应填入_处的字句写在下面。 说明 某大型商场内安装了多个简易的纸巾售卖机,自动售出 2 元钱一包的纸巾,且每次仅售出一包纸巾。纸巾售卖机的状态如图 1 所示。 图 1 纸巾售卖机状态图采用状态(State)模式来实现该纸巾售卖机,得到如图 2 所示的类图。其中类 State 为抽象类,定义了投币、退币、出纸巾等方法接口。类 SoldState、SoldOutState、NoQuanerstate 和 HasQuanerState 分别对应图 1 中纸巾售卖机的 4 中状态:售出纸巾、纸巾售完、没有投币、有 2 元钱。 (分数:20

9、00)_正确答案:()解析:State tissueMachine-getHasQuaiterState()或 new HasQuarterState tissueMachine-getNoQuarterState()或 new NoQuarterState tissueMachine-getNoQuarterState()或 new NoQuarterState tissueMachine-getSoldOutState()或 new SoldOutState 解析 根据题意,本题使用的是状态模式,判断纸巾售卖机的状态,根据不同的状态执行不同的动作。State 定义了纸巾售卖机所对应的一些

10、状态,售出纸巾、纸巾售完等状态。类 SoldOutState、NoQuarterState、HasQuarterState、SoldState 均有类State 派生而来。 void insertQuarter()定义了一个“投币”的方法:在没有“2 元钱”时,客户投币的方法。tissureMachine.setState 是改变纸巾售卖机的状态,此时,客户已投入 2 元钱,故将此时的状态改为“有 2 元钱”的状态,纸巾售卖机调用“有 2 元钱”状态的方法即可。 void ejectQuarter()定义了一个“退币”的方法:在有 2 元钱的状态下,用户按下“退币”按钮,纸巾售卖机将此时的状态

11、改为“没有投币”状态,故直接调用 getNoQuarterState()即可。 根据纸巾售卖机状态图可知,当售出纸巾,并且纸巾数量仍大于 O 时,将返回“没有投币”状态,同第(3)小题的分析,此处应调用 getNoQualterState()。 根据纸巾售卖机状态图可知,当售出纸巾,并且纸巾数量等于 0 时,将返回“纸巾售完”状态,此处用了ifelse 判断语句,当纸巾数量仍大于 0 时,返回“没有投币”状态,否则,纸巾数量一定等于 0,本段程序第五空是 else 下的一条语句,故此处是判断 count 为 0 时,纸巾售卖机的状态,显然,应调用getSoldOutState()。三、试题三(

12、总题数:1,分数:20.00)3.阅读下列说明和 C+代码,将应填入_处的字句写在下面。 说明 某饭店在不同的时段提供多种不同的餐饮,其菜单的结构图如图 1 所示。现在采用组合(Composition)模式来构造该饭店的菜单,使得饭店可以方便地在其中添加新的餐饮形式,得到如图 2 所示的类图,其中MenuComponent 为抽象类,定义了添加(add)新菜单和打印饭店所有菜单信息(print)的方法接口。类 Menu表示饭店提供的每种餐饮形式的菜单,如煎饼屋菜单、咖啡屋菜单等。每种菜单中都可以添加子菜单,例如图 1 中的甜点菜单,类 MenuItem 表示菜单中的菜式。 图 1 菜单结构图(

13、分数:20.00)_正确答案:()解析:virtual void add(MenuComponent*menuComponet)=0 MenuComponet* nemuComponets-push_back(menuComponent) (*iter) allMenus 解析 MenuComponent 是虚基类,其中要定义添加新菜单纯虚函数,函数体在其派生类Menultem 和 Menu 中现。第一个空处应填入:virtual void add(MenuComponent*menuComponet)=0。 在类 Menu 定义了列表 menuComponets,用于保存添加的新菜单,由st

14、d:listMenuComponent*:iteratoriter 可知列表的类型为 MenuComponent*,故第二个空处应填入:MenuComponet*。 添加菜单时,可以从 menuComponets 列表的前面添加,也可以从 menuComponets 列表的后面添加,但通过菜单的输出函数可知,菜单是从列表的后面添加的,因此第三个空处应填入:nemuComponets-push back(menuComponent)。 iter 是迭代器,用于遍历菜单列表 menuComponets,第四个空处应填入(*iter)。 在主函数,打印饭店所有菜单信息的函数调用为:allMenus-

15、print()。四、试题四(总题数:1,分数:20.00)4.阅读下列说明和 Java 代码,将应填入_处的字句写在下面。 说明 某灯具厂商欲生产一个灯具遥控器,该遥控器具有 7 个可编程的插槽,每个插槽都有开关按钮,对应着一个不同的灯。利用该遥控器能够统一控制房间中该厂商所有品牌灯具的开关,现采用 Command(命令)模式实现该遥控器的软件部分,Command 模式的类图如下图所示。 (分数:20.00)_正确答案:()解析:interface Command light.on() light.off() onCommandsslot offCommandsslot onCommandss

16、lot.execute() offCommandsslot.execute() 解析 本题考查 Command 命令模式的概念及应用,并用 Java 语言实现,Command 命令模式是一种对象行为模式。它主要解决的问题是:在软件构建过程中,“行为请求者”与“行为实现者”通常呈现一种“紧耦合”的问题,将一个请求封装为一个对象,从而可用不同的请求对客户进行参数化,以及支持可撤销的操作。五、试题五(总题数:1,分数:20.00)5.阅读下列说明和 Java 代码,将应填入_的字句写在下面。 说明 某实验室欲建立一个实验室环境监测系统,能够显示实验室的温度、湿度以及洁净度等环境数据,当获取到最新的环

17、境测量数据时,显示的环境数据能够更新现在采用观察者(observer)模式来开发该系统,观察者模式的类图如下图 2 所示。 (分数:20.00)_正确答案:()解析:Subject observer.update(temperature,humidity,cleanness) notifyObservers() measurementsChanged() Observer() envData.registerObserver(this) 解析 EnVironmentData 是环境数据,也就是我们要监测的对象,即主题(Subject),因此第一处为 Subject,第二处为通知观察者,因此遍历观察者容器,遍历到一个观察者对象,则更新该观察者的数据,即调用观察者的 update()方法,当环境数据变化时,需要通知观察者,因此第四处是调用环境变化方法 measurementsChanged(),通过此方法通知观察者更新数据,因此,第三处为 notifyObservers()。 根据 CurrentconditionsDisplay 类中的 update()方法可知:CurrentconditionsDisplay 是个观察者,因此第五处为 Observer,第六处是将观察者添加到主题中去。

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1