利用類實現階梯型電阻電路計算的實驗報告
一、實驗題目
利用類實現階梯型電阻電路計算
二、實驗目的
利用類改造試驗三種構造的計算程式,實現類的封裝。透過這種改造理解類實現資料和功能封裝的作用,掌握類的設計與程式設計。
三、實驗原理
程式要求使用者輸入的電勢差和電阻總數,並且驗證資料的有效性:電勢差必須大於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
得到正確結果。