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

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

【Java代碼】
import javA.util.*;
interface State {
public void insertQuarter(); //投幣
public void ejectQuarter(); //退幣
public void turnCrank(); //按下“出紙巾”按鈕
public void dispense(); //出紙巾
}
class TissueMachine {
(1) soldOutState, noQuarterState, hasQuarterState, soldState, state;
state = soldOutState;
int count = 0; //紙巾數(shù)
public TissueMachine(int numbers) { /* 實現(xiàn)代碼省略 */ }
public State getHasQuarterState() { return hasQuarterState; }
public State getNoQuarterState() { return noQuarterState; }
public State getSoldState() { return soldState; }
public State getSoldOutState() { return soldOutState; }
public int getCount() { return count; }
// 其余代碼省略
}
class NoQuarterState implements State {
TissueMachine tissueMachine;
public void insertQuarter() {
tissueMachine.setState( (2) );
}
//構(gòu)造方法以及其余代碼省略
}
class HasQuarterState implements State {
TissueMachine tissueMachine;
public void ejectQuarter() {
tissueMachine.setState( (3) );
}
//構(gòu)造方法以及其余代碼省略
}
class SoldState implements State {
TissueMachine tissueMachine;
public void dispense() {
if(tissueMachine.getCount() > 0) {
tissueMachine.setState( (4) );
} else {
tissueMachine.setState( (5) ); }
}
}
信管網(wǎng)試題答案與解析:www.jazzmuze.com/st/3811419264.html
信管網(wǎng)考友試題答案分享:
信管網(wǎng)試題答案與解析:
www.jazzmuze.com/st/3811419264.html