一、实验题目
利用类实现阶梯型电阻电路计算
二、实验目的
利用类改造试验三种构造的计算程序,实现类的封装。通过这种改造理解类实现数据和功能封装的作用,掌握类的设计与编程。
三、实验原理
程序要求用户输入的电势差和电阻总数,并且验证数据的有效性:电势差必须大于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
得到正确结果。