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

采用狀態(tài)(State)模式來實現該紙巾售賣機,得到如圖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; //紙巾數
public TissueMachine(int numbers) { /* 實現代碼省略 */ }
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) );
}
//構造方法以及其余代碼省略
}
class HasQuarterState implements State {
TissueMachine tissueMachine;
public void ejectQuarter() {
tissueMachine.setState( (3) );
}
//構造方法以及其余代碼省略
}
class SoldState implements State {
TissueMachine tissueMachine;
public void dispense() {
if(tissueMachine.getCount() > 0) {
tissueMachine.setState( (4) );
} else {
tissueMachine.setState( (5) ); }
}
}
信管網試題答案與解析:m.xiexiliangjiufa.com/st/3811419264.html
信管網考友試題答案分享:
信管網試題答案與解析:
m.xiexiliangjiufa.com/st/3811419264.html