一、實驗題目
利用類實現階梯型電阻電路計算
二、實驗目的
利用類改造試驗三種構造的計算程序,實現類的封裝。通過這種改造理解類實現數據和功能封裝的作用,掌握類的設計與編程。
三、實驗原理
程序要求用户輸入的電勢差和電阻總數,並且驗證數據的有效性:電勢差必須大於0,電阻總數必須大於0小於等於100的偶數。再要求用户輸入每個電阻的電阻值,並且驗證電阻值的有效性:必須大於零。此功能是由類CLadderNetwork的InputParameter ()函數實現的。
且該函數對輸入的數據進行臨界判斷,若所輸入數據不滿足要求,要重新輸入,直到滿足要求為止。
本實驗構造了兩個類,一個CResistance類,封裝了電阻的屬性和操作,和一個CLadderNetwork類,封裝了階梯型電阻電路的屬性和操作。
用户輸入的'電勢差、電阻總數、電阻值,並賦給CladderNetwork的數據,此功能是由類CLadderNetwork的InputParameter 函數實現的。
輸出用户輸入的電勢差、電阻總數、電阻值,以便檢查,,此功能是由類CLadderNetwork的PrintEveryPart()函數實現的。
根據用户輸入的電勢差、電阻總數、電阻值換算出每個電阻上的電壓和電流。此功能是由類CLadderNetwork的Calculate ()函數實現的。
最後輸出每個電阻上的電壓和電流,此功能是由類CLadderNetwork的PrintResult()函數實現的。
此程序很好的體現了面向對象編程的技術:
封裝性:類的方法和屬性都集成在了對象當中。
繼承性:可以繼承使用已經封裝好的類,也可以直接引用。
多態性:本實驗未使用到多態性。
安全性:對重要數據不能直接操作,保證數據的安全性。
以下是各個類的説明:
class CResistance //電阻類
private:
double voltage;
double resistance;
double current;
public:
void InitParameter(); //初始化數據
void SetResist(double r); //設置resistance的值
void SetCur(double cur); //設置current的值
void SetVol(double vol); //設置voltage的值
void CalculateCurrent(); //由電阻的電壓和電阻求電流
double GetResist(){return resistance;} //獲得resistance的值 保證數據的安全性
double GetCur(){return current;} //獲得current的值
double GetVol(){return voltage;} //獲得voltage的值
class CResistance //電阻類{
private:
CResistance resists[MAX_NUM]; //電阻數組
int num;
double srcPotential;
public:
void InitParameter(); //初始化數據
void InputParameter(); //輸入數據
void Calculate(); //計算
void PrintEveryPart(); //顯示輸入的數據以便檢查
void PrintResult(); //顯示結果
四、實驗結果
程序開始界面:
錯誤輸入 -1(不能小於0)
錯誤輸入0 (不能為0)
輸入正確數據3
輸入錯誤數據-1
輸入錯誤數據0
輸入正確數據4
同樣給電阻輸入數據也必須是正數 現在一次輸入 2,2,1,1
得到正確結果。