軟件設(shè)計師案例分析當(dāng)天每日一練試題地址:www.xomuzic.com/exam/ExamDayAL.aspx?t1=4
往期軟件設(shè)計師每日一練試題匯總:www.xomuzic.com/class/27/e4_1.html
軟件設(shè)計師案例分析每日一練試題(2021/10/19)在線測試:www.xomuzic.com/exam/ExamDayAL.aspx?t1=4&day=2021/10/19
點擊查看:更多軟件設(shè)計師習(xí)題與指導(dǎo)
軟件設(shè)計師案例分析每日一練試題內(nèi)容(2021/10/19)
閱讀下列說明和C++代碼,將應(yīng)填入
(n)處的字句寫在答題紙的對應(yīng)欄內(nèi)。
【說明】
某大型商場內(nèi)安裝了多個簡易的紙巾售賣機(jī),自動出售2元錢一包的紙巾,且每次僅售出一包紙巾。紙巾售賣機(jī)的狀態(tài)圖如圖5-1所示。

采用狀態(tài)(State)模式來實現(xiàn)該紙巾售賣機(jī),得到如圖5-2所示的類圖。其中類State為抽象類,定義了投幣、退幣、出紙巾等方法接口。類SoldState、SoldOutState、NoQuarterState和HasQuarterState分別對應(yīng)圖5-1中紙巾售賣機(jī)的4種狀態(tài):售出紙巾、紙巾售完、沒有投幣、有2元錢。

【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的定義省略,每個類中均
定義了私有數(shù)據(jù)成員TissueMachine* tissueMachine; */
class TissueMachine {
private:
(1) *soldOutState, *noQuarterState, *hasQuarterState,*soldState, *state ;
int count; //紙巾數(shù)
public:
TissueMachine(int numbers);
void setState(State* state);
State* getHasQuarterState();
State* getNoQuarterState();
State* getSoldState();
State* getSoldOutState();
int getCount();
// 其余代碼省略
};
// 以下為類的實現(xiàn)部分
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) );
}
} // 其余代碼省略
信管網(wǎng)試題答案與解析:www.xomuzic.com/st/3811321878.html
信管網(wǎng)考友試題答案分享:
信管網(wǎng)cnitpm442723562920:
1、class
<br>2、getnoquarterstate()
<br>3、gethasquarterstate()
<br>4、getsoldstate()
<br>5、getsoldoutstate()
信管網(wǎng)試題答案與解析:
www.xomuzic.com/st/3811321878.html