machinestate.h

来自「饮料自动售货机」· C头文件 代码 · 共 80 行

H
80
字号
#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 + =
减小字号Ctrl + -
显示快捷键?