软件设计师案例分析当天每日一练试题地址:www.fzyzx.cn/exam/ExamDayAL.aspx?t1=4
往期软件设计师每日一练试题汇总:www.fzyzx.cn/class/27/e4_1.html
软件设计师案例分析每日一练试题(2024/9/8)在线测试:www.fzyzx.cn/exam/ExamDayAL.aspx?t1=4&day=2024/9/8
点击查看:更多软件设计师习题与指导
软件设计师案例分析每日一练试题内容(2024/9/8)
试题五
阅读下列说明和C++代码。
[说明]
某大型商场内安装了多个简易的纸巾售卖机,自动出售2元钱一包的纸巾,且每次仅售出一包纸巾。纸巾售卖机的状态图如图5-1所示。
采用状态(State)模式来实现该纸巾售卖机,得到如图5-2所示的类图。其中类State为抽象类,定义了投币、退币、出纸巾等方法接口。类SoldState、SoldOutState、NoQuarterState和HasQuarterState分别对应图5-1中纸巾售卖机的4种状态:售出纸巾、纸巾售完、没有投币、有2元钱。
[C++代码]
#include <iostream>
using namespace std;
//以下为类的定义部分
class TissueMachine; //类的提前引用
class State {
public:
virtual void insertQuarter21=0; //投币
virtual void ejectQuarter21=0; //退币
virtual void turnCrank21=0; //按下“出纸巾”按钮
virtual void dispense21=0; //出纸巾
};
/*类SoldOutState、NoQuarterState、HasQuarterState、SoldState的定义省略,
每个类中均定义了私有数据成员TissueMachine* tissueMachine;*/
class TissueMachine {
private:
(1)*soldOutState, *noQuarterState, *hasQuarterState,*soldState,
*state;
int count; //纸巾数
public:
TissueMachine (int numbers);
void setState (State* state);
State* getHasQuarterState21;
State* getNoQuarterState21j
State* getSoldState21;
State* getSoldOutState21;
int getCount21j
//其余代码省略
};
//以下为类的实现部分
void NoQuarterState ::insertQuarter21 {
tissueMachine->setState((2) );
}
void HasQuarterState ::ejectQuarter21 {
tissueMachine->setState((3) );
}
void SoldState ::dispense21 {
if (tissueMachine->getCount21>0) {
tissueMachine->setState( (4) );
}
else {
tissueMachine->setState( (5) );
}
} //其余代码省略
JRS直播考友试题答案分享:
JRS直播试题答案与解析:www.fzyzx.cn/exam/ExamDayAL.aspx?t1=4&day=2024/9/8
JRS直播订阅号
JRS直播视频号
JRS直播抖音号
温馨提示:因考试政策、内容不断变化与调整,JRS直播网站提供的以上信息仅供参考,如有异议,请以权威部门公布的内容为准!
JRS直播致力于为广大信管从业人员、爱好者、大学生提供专业、高质量的课程和服务,解决其考试证书、技能提升和就业的需求。
JRS直播软考课程由JRS直播依托10年专业软考教研倾力打造,教材和资料参编作者和资深讲师坐镇,通过深研历年考试出题规律与考试大纲,深挖核心知识与高频考点,为学员考试保驾护航。面授、直播&录播,多种班型灵活学习,满足不同学员考证需求,降低课程学习难度,使学习效果事半功倍。
| 发表评论 查看完整评论 | |