§ 类与对象应用的例子
1. 使用类和对象构造程序的实例
[例]请用C++语言构造一个模拟加油站油泵的对象工作
正常情况下,我们在任何时刻,应该知道每公斤汽油的价格和油泵所在的油桶中还有多少汽油。当一个加油的请求出现时,如果要求加油的数量少于(或等于)油桶中的汽油数量时,就满足这个加油请求。否则,只能抽出油桶所剩下的汽油给予加油。
每次抽出汽油加油后,应显出被抽出加油的汽油数量及价格;同时,还要计算出加油后汽油桶里剩余的汽油量。
1)问题分析
根据要求,我们可设计出如下形式的油泵对象模型:
2)关于操作的具体分析
油泵进入服务
初始化油桶中汽油的数量
初始化每公斤汽油的价格
显示操作(函数)
显示油桶中汽油的数量
显示每公斤汽油的价格
抽出汽油进行加油的操作(函数)
IF (油桶中汽油数量大于或等于需要被抽出的汽油数量)
将抽出数量设置成需要抽出的数量
ELSE 将抽出数量设置成油桶中所剩汽油的数量
ENDIF
将油桶中汽油的数量减去被抽出汽油的数量
计算总金额(汽油单价乘以被抽出数量)
显示被抽出的汽油数量
显示油上剩下的汽油数量
显示应付金额
3)归纳以上分析可得到以下程序:
#include<>
#include<>
const float AMTINT=; //初始化油桶中的油量
const float PRICE=; //单价
class Pump
{ protected:
float amtint, price;
public:
Pump(float, float); //构造函数
void values( );
void request( float);
};
Pump::Pump(float start, float todays)
{ amtint=start; price=todays; }
void Pump::values( )
{ cout<<"The gas tank has: "<<amtint<<endl;
cout<<"The price per kg of gas is: "<<price<<endl;
}
void Pump::request( float pumpamt)
{ float pumped;
if( amtint>=pumpamt ) pumped=pumpamt; //满足
else pumped= amtint;
amtint=amtint-pumped; //加油后剩余数
cout<<pumpamt<<" kg were requested"<<endl;
cout<<pumped<<" kg were pumped"<<endl;
cout<<amtint<<" kg remain in the tank"<<endl;
cout<<"The total price is: "<<(pumped*price)<<endl;
}
void main( ) //演示程序
{ Pump obj(AMTINT, PRICE); //创建一个油泵对象
( ); //显示当前状态
cout<<endl;
(); //要求加油
cout<<endl;
(); //两次要求加油
}
根据程序功能分析,应得到如下执行结果:
The gas tank has:
The price per kg of gas is:
kg were requested
kg were pumped
kg remain in the tank
The total price is:
正常情况下,我们在任何时候,应该知道每公斤汽油的价格和油泵所在的油桶中还有多少汽油。当一个加油的请求出现时,如果要求加油的数量少于(或等于)油泵中的汽油数量时,就满足这个加油请求。否则,只能抽出油桶所剩下的汽油给加油。
每次抽出汽油加油后,应显出被抽出加油的汽油数量及价格;同时,还要计算出汽油桶里剩余的汽油量。
关于操作的具体分析如下:
油泵进入服务
初始化油桶中的汽油数量
初始化每公斤汽油的价格
显示操作(函数)
显示油桶中汽油的数
5.5 类与对象应用的例子 来自淘豆网www.taodocs.com转载请标明出处.