📄 machinestate.h
字号:
#ifndef MACHINESTATE_H
#define MACHINESTATE_H
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include <string>
using namespace std;
class CDrinkMachine;
//状态接口
class CState
{
public:
virtual void InsertCoin(double dCoinValue) = 0; //塞入钱
virtual double EjectCoin() = 0; //退钱
virtual void SelectDrinkButton(int nkindNum) = 0;//选择饮料
virtual void DispenseDrink(int nkindNum) = 0; //发放饮料
};
//没有足够钱的状态
class CNoCoinState: public CState
{
public:
CDrinkMachine* m_DrinkMachine;
public:
CNoCoinState(CDrinkMachine* drinkMachine);
void InsertCoin(double dCoinValue);
double EjectCoin();
void SelectDrinkButton(int nkindNum);
void DispenseDrink(int nkindNum);
};
//有足够钱的状态
class CHaveCoinState: public CState
{
public:
CDrinkMachine* m_DrinkMachine;
public:
CHaveCoinState(CDrinkMachine* drinkMachine);
void InsertCoin(double dCoinValue);
double EjectCoin();
void SelectDrinkButton(int nkindNum);
void DispenseDrink(int nkindNum);
};
//出售的状态
class CSoldState: public CState
{
public:
CDrinkMachine* m_DrinkMachine;
public:
CSoldState(CDrinkMachine* drinkMachine);
void InsertCoin(double dCoinValue);
double EjectCoin();
void SelectDrinkButton(int nkindNum);
void DispenseDrink(int nkindNum);
};
//售完的状态
class CSoldOutState: public CState
{
public:
CDrinkMachine* m_DrinkMachine;
public:
CSoldOutState(CDrinkMachine* drinkMachine);
void InsertCoin(double dCoinValue);
double EjectCoin();
void SelectDrinkButton(int nkindNum);
void DispenseDrink(int nkindNum);
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -