程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> ´ó»°Éè¼ÆģʽC++ʵÏÖ-µÚ16ÕÂ-״̬ģʽ

´ó»°Éè¼ÆģʽC++ʵÏÖ-µÚ16ÕÂ-״̬ģʽ

編輯:C++入門知識

´ó»°Éè¼ÆģʽC++ʵÏÖ-µÚ16ÕÂ-״̬ģʽ


Ò»¡¢UMLͼ

\

¶þ¡¢¸ÅÊö

ÏÂÃæÊÇÀ´×ÔÊé±¾ºÍÍøÂçµÄ¶Ô״̬ģʽµÄ¶¨ÒåºÍ·ÖÎö£º

<†·Ÿ"http://www.Bkjia.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+CqOoMaOp17TMrMSjyr3UytDtttTP89TaxNqyv9e0zKy4xLHkyrG4xLHky/y1xNDQzqqjrLbUz/O/tMbwwLS6w8/x0N64xMHLy/y1xMDgoaO/tMbwwLSjrNe0zKzEo8q9usPP8crHyfHNqLnjtPO63MD3uqYmIzIwMjg0O7XEoaqhqr7TyLvE3Lm7obDQ3rjE19TJ7bXEwOChsaOhPC9wPgo8cD4Ko6gyo6k8c3Ryb25nPsrK08Ozob6wo7pho6k8L3N0cm9uZz7XtMysxKPKvdb30qq94r72tcTKx7Wxv9jWxtK7uPa21M/z17TMrNequ7u1xMz1vP6x7bTvyr25/dPauLTU08qxtcTH6b/2oaOw0de0zKy1xMXQts/C37yt16rSxrW9se3KvrK7zazXtMystcTSu8+1wdDA4NbQo6y/ydLUsNG4tNTTtcTF0CC2z8LfvK288rWlu6+ho6OovPK1pcC0y7WjrL7Nysew0bj31tZpZiBlbHNlINeqseSzycHL0ru49rj2tcS+38zl17TMrKOs1K3AtGlmIGVsc2Ugw7/W1sfpv/bPwrXEstnX98/W1NrXqru7tb3By8SzuPa+38zl17TMrNbQo6kKPHN0cm9uZz5io6k8L3N0cm9uZz61sdK7uPa21M/z0NDOqsihvvbT2sv8tcTXtMyso6yyosfSy/yx2NDr1NrUy9DQyrG/zLj5vt3XtMysuMSx5Mv8tcTQ0M6qyrGjrL7Nv8nS1L+8wsfKudPD17TMrMSjyr3By6GjPC9wPgo8cD48c3Ryb25nPsj9oaK9x8mrPC9zdHJvbmc+PC9wPgo8cD48L3A+CjxwPgo8c3Ryb25nPqOoMaOpQ29udGV4dMDgo7o8L3N0cm9uZz7U2rjDwODE2rK/zqy7pNK7uPZDb25jcmV0ZVN0YXRl19PA4LXE0ru49sq1wP2jrNXiuPbKtcD9tqjS5bWxx7C1xNe0zKyhozwvcD4KPHA+CjxzdHJvbmc+o6gyo6lTdGF0ZcDgo7o8L3N0cm9uZz6z6c/z17TMrMDgo6y2qNLl0ru49iC907/a0tS34tew0+tDb250ZXh0tcTSu7j2zNi2qNe0zKzP4LnYtcTQ0M6qoaM8L3A+CjxwPgo8c3Ryb25nPqOoM6OpQ29uY3JldGVTdGF0ZUEsQ29uY3JldGVTdGF0ZULA4KO6PC9zdHJvbmc+vt/M5de0zKzA4KOsw7/Su7j219MgwODKtc/W0ru49tPrQ29udGV4dLXE0ru49te0zKzP4LnYtcTQ0M6qoaM8L3A+CjxwPjxzdHJvbmc+y8ShokMmIzQzOyYjNDM7yrXP1jwvc3Ryb25nPjwvcD4KPHA+PHN0cm9uZz6jqDGjqVN0YXRlLmg8L3N0cm9uZz6jqLPpz/PXtMyswOC6zb7fzOXXtMyswOC1xMn5w/e6zbao0uW2vNTaU3RhdGUuaLrNU3RhdGUuY3Bw1tCjqTwvcD4KPHA+PHByZSBjbGFzcz0="brush:java;">#ifndef STATE #define STATE //#include "Work.h" extern class Work; class State { public: State(){}; virtual void writeProgram(Work* w){}; }; class ForenoonState:public State { public: void writeProgram(Work* w); }; class NoonState:public State { public: void writeProgram(Work* w); }; class AfternoonState:public State { public: void writeProgram(Work* w); }; class EveningState:public State { public: void writeProgram(Work* w); }; class SleepingState:public State { public: void writeProgram(Work* w); }; class RestState:public State { public: void writeProgram(Work* w); }; #endif

£¨2£©State.cpp

#include 
#include "State.h"
#include "Work.h"

using namespace std;

void ForenoonState::writeProgram(Work* w)
{
	if(w->getHour()<12)
	{
		cout<<"µ±Ç°Ê±¼ä£º"<getHour()<<"µã "<<"ÉÏÎ繤×÷£¬¾«Éñ°Ù±¶"<setState(s);
		w->writeProgram();
	}
}

void NoonState::writeProgram(Work* w)
{
	if(w->getHour()<13)
	{
		cout<<"µ±Ç°Ê±¼ä£º"<getHour()<<"µã "<<"¶öÁË£¬Îç·¹£»·¸À§£¬ÎçÐÝ"<setState(new AfternoonState);
		w->writeProgram();
	}
}

void AfternoonState::writeProgram(Work* w)
{
	if(w->getHour()<17)
		cout<<"µ±Ç°Ê±¼ä£º"<getHour()<<"µã "<<"ÏÂÎç״̬»¹²»´í£¬¼ÌÐøŬÁ¦"<setState(new EveningState);
		w->writeProgram();
	}
}

void EveningState::writeProgram(Work* w)
{
	if(w->getFinish())
	{
		w->setState(new RestState);
		w->writeProgram();
	}
	else
	{
		if(w->getHour()<21)
			cout<<"µ±Ç°Ê±¼ä£º"<getHour()<<"µã "<<"¼Ó°àŶ£¬Æ£±¹ÖÁ¼«"<setState(new SleepingState);
			w->writeProgram();
		}
	}
}

void SleepingState::writeProgram(Work* w)
{
	cout<<"µ±Ç°Ê±¼ä£º"<getHour()<<"µã "<<"²»ÐÐÁË£¬Ë¯×ÅÁË"<getHour()<<"µã "<<"Ï°à»Ø¼ÒÁË"<

£¨3£©Work.h£¨ÕâÀïµÄWork¾ÍÊÇ״̬ģʽÖеÄContext£©

#ifndef WORK
#define WORK

#include "State.h"

class Work
{
private:
	State* current;

	double Hour;
	bool finish;

public:
	Work();
	
	double getHour();
	void setHour(double HOUR);
	
	bool getFinish();
	void setFinish(bool FINISH);

	void setState(State* s);

	void writeProgram();
};

#endif


£¨4£©Work.cpp

#include "Work.h"

Work::Work()
{
	current=new ForenoonState;
	Hour=9;
	finish=false;
}

double Work::getHour()
{
	return Hour;
}
void Work::setHour(double HOUR)
{
	Hour=HOUR;
}

bool Work::getFinish()
{
	return finish;
}
void Work::setFinish(bool FINISH)
{
	finish=FINISH;
}

void Work::setState(State* s)
{
	current=s;
}

void Work::writeProgram()
{
	current->writeProgram(this);
}


£¨5£©main.cpp£¨¿Í»§¶Ë£©

#include 
#include 
#include "Work.h"
//#include "State.h"

using namespace std;

void main()
{
	Work emergencyProjects;

	emergencyProjects.setHour(9);
	emergencyProjects.writeProgram();

	emergencyProjects.setHour(10);
	emergencyProjects.writeProgram();

	emergencyProjects.setHour(12);
	emergencyProjects.writeProgram();

	emergencyProjects.setHour(13);
	emergencyProjects.writeProgram();

	emergencyProjects.setHour(14);
	emergencyProjects.writeProgram();

	emergencyProjects.setHour(17);
	emergencyProjects.writeProgram();

	emergencyProjects.setFinish(false);

	emergencyProjects.setHour(19);
	emergencyProjects.writeProgram();

	emergencyProjects.setHour(22);
	emergencyProjects.writeProgram();

	system("pause");
}

×¢Ò⣺ÉÏÃæµÄ´úÂë»á³öÏÖÁ½¸öÀàÏ໥µ÷ÓõÄÇé¿ö£¬Çë²é¿´ÈÕÖ¾£ºC++ÖÐÁ½¸öÀ໥ÏàÒýÓõĽâ¾ö·½·¨

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved