导航
您当前的位置:首页 > 计算机 > 软件水平
问题:

[问答题] 某大型商场内安装了多个简易的纸巾售卖机,自动出售2元钱一包的纸巾,且每次仅售出一包纸巾。纸巾售卖机的状态图如图5-1所示。中级软件设计师,历年真题,2011年下半年(下午)《软件设计师》真题采用状态(State)模式来实现该纸巾售卖机,得到如图5-2所示的类图。其中类State为抽象类,定义了投币、退币、出纸巾等方法接口。类SoldState、SoldOutState、NoQuarterState和HasQuarterState分别对应图5-1中纸巾售卖机的4种状态:售出纸巾、纸巾售完、没有投币、有2元钱。中级软件设计师,历年真题,2011年下半年(下午)《软件设计师》真题【C++代码】#include<iostream>using namespace std;//以下为类的定义部分class TissueMachine;//类的提前引用class State{public:virtual void insertQuarter(  )=0;//投币virtual void ejectQuarter(  )=0;//退币virtual void turnCrank(  )=0;//按下“出纸巾”按钮virtual void dispense(  )=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*getHasQuarterState(  );State*getNoQuarterState(  );State*getSoldState(  );State*getSoldOutState(  );int getCount(  );//其余代码省略};//以下为类的实现部分void NoQuarterState::insertQuarter(  ){tissueMachine->setState((2));}void HasQuarterState::ejectQuarter(  ){tissueMachine->setState((3));}void SoldState::dispense(  ){if(tissueMachine->getCount(  )>0){tissueMachine->setState((4));}else{tissueMachine->setState((5));}}//其余代码省略
答案解析:

相关问题
关于我们 | 用户指南 | 版权声明 | 给我留言 | 联系我们 | 积分商城 | 答案求助 | 网站地图
Copyright © 2024 www.daanwo.com All Rights Reserved