瀏覽單個文章
poenxu
Regular Member
 
poenxu的大頭照
 

加入日期: Feb 2004
文章: 67
回覆: 回覆: 回覆: 回覆: 回覆: 可以請問一下這程式的問題在哪嗎?

這篇可能長了一點一一a....
以下是我的程式碼↓
代碼:
#include<iostream.h>
class elevator_class	//類別:電梯
{
	int elevator_floor;	//電梯樓層
	char elevator_status[11][30];//宣告電梯狀態陣列
public:
	elevator_class()//建構
	{
		int elevator_floor=1;//set elevator at 1f
		char elevator_status[11][30]=
		{
			{"電梯目前在1f"},	//0
			{"電梯目前在2f"},	//1
			{"電梯目前在3f"},	//2
			{"電梯往1f移動中"},	//3
			{"電梯往2f移動中"},	//4
			{"電梯往3f移動中"},	//5
			{"電梯開門中"},//6
			{"電梯已經開啟"},	//7
			{"電梯關門中"},//8
			{"電梯已經關閉"},	//9
			{"電梯待命中"}//10
		};
	}//建構結束
	void set_elevator_floor()
	{	
		cout<<"請輸入電梯所在樓層(1~3) :";
		cin>>elevator_floor;
	}
};
class button_class
{
	char button_list[7][20];//
	char button_action[7][20];
public:	
	button_class()//建構
	{
		char button_list[7][20]=
		{			
			{"1F"},	//0
			{"2F"},	//1
			{"3F"},	//2
			{"開門"},	//3
			{"關門"},	//4
			{"往上"},	//5
			{"往下"}	//6
		};
		char button_action[7][20]=
		{			
			{"按下1F按鈕"},	//0
			{"按下2F按鈕"},	//1
			{"按下3F按鈕"},	//2
			{"按下開門按鈕"},	//3
			{"按下關門按鈕"},	//4
			{"按下往上按鈕"},	//5
			{"按下往下按鈕"}	//6			

		};
	}//建構結束
};
class user_class
{
	int user_floor;
	int user_inout;
public:
	user_class()
	{
		int user_floor=1;//預設使用者在1樓
		int user_inout=1;//0是在電梯裡面,1是在電梯外面
	}
	void set_user_floor()
	{
		cout<<"請輸入使用者所在樓層(1~3) :";
		cin>>user_floor;
	}
};
void main()
{
	elevator_class elevator;	//宣告物件:電梯
	button_class button;	//宣告物件:按鈕
	user_class user;		//宣告物件:使用者
	elevator.set_elevator_floor();//設定電梯所在樓層
	user.set_user_floor();	//設定使用者所在樓層
}

=====================================================
我現在在思考另一個問題...
我計畫中的做法是:
我只要輸入電梯,使用者各在哪一樓層.
程式就會自己執行電梯移動到幾樓,電梯開門,電梯關門等等的動作.
所以我得讓電腦判斷:
如果"user_floor(使用者所在樓層)"比"elevator_floor(電梯所在樓層)""高"
它會cout電梯往上移動,電梯開門/關門等等的字串.
反之亦然...
但是user_floor與elevator_floor是分別屬於兩個物件的private.
導致我沒辦法讓她們在main裡面作比較大小耶...
1.不希望把她們設定成public.因為這樣違反information hiding原則...
也不確定設定成public以後,main是否就可以比較了.
2.不能設定成friend或者divice.
2-1.設定成friend int user_floor,friend int elevator_floor的話,
user_floor或者elevator_floor就不是那兩者class的private了.
2-2.設定成divice
user物件跟elevator物件沒辦法繼承彼此耶...
=====================================================
我的解決辦法是將private的elevator_floor與user_floor的值.
設定給main的兩個int變數.待兩者int變數做完比較以後.再告訴程式該cout哪些字串.
但是這樣似乎是繞了一大圈且吃力不討好.
還是說我這樣的做法在information hiding的原則下,是對的呢?
因為老師說過,當我們要求高度information hiding的時候.
程式執行手續會相對複雜化.
想請問兩位板友的看法^_^"
舊 2004-06-04, 05:35 PM #10
回應時引用此文章
poenxu離線中