一、面向对象程序设计方法
1.面向过程和面向对象
1)面向过程:
面向过程的程序设计=算法+数据结构。
用户需求简单而固定。
特点:
分析问题实现所需要的步骤
依次利用函数分步完成
问题:
软件可维护性差
软件可重用性差
2)面向对象:
由现实世界建立模型实现。
属性:静态特征,由一些数据构成。
方法:动态特征,对象所表现的行为或所具有的功能。
将现实世界中的事物直接映射到程序中,可以直接满足用户的需求。
特点:
1.直接分析用户需求中涉及到的个体。
2.在代码中描述现实世界。
3.在代码中关联各个实体协同工作解决问题。
优点:
可以适应用户需求的不断改变。
二.面向对象程序设计实列
求一个盒子(box)的体积(v_box)
首先我们假设长宽高分别为x,y,z,那么v_box=x*y*z;
先定义一个盒子类
class Box{
public://我们在public中提供函数接口去更改私有属性
double get_v();//函数定义
bool set_x(double x);
double get_x();
bool set_y(double y);
double get_y();
bool set_z(double z);
double get_z();
double get_s();
private://私有属性,防止我们在初始化属性的时候弄一些错误的,不合理的数据进来
double _x;
double _y;
double _z;
double _s;
double _v;
};
这里我们将函数的声明和实现进行分开,大家想想为什么这样做呢?
当我们进行项目开发的时候,难免会遇到更加复杂的类,这样我们类里的代码量就会很大,不方便与我们阅读,我们将声明和实现进行分开后,方便于阅读,使得结构清晰。
那么下面我们看一下函数实现
double Box:: get_v(){return _x*_y*_z;}
double Box:: get_s(){return _x*_y;}
double Box:: get_x(){return _x;}
double Box:: get_y(){return _y;}
double Box:: get_z(){return _z;}
bool Box:: set_x(double x){// :: 域名操作符
if(x<0||x>100){//这里是为了体现出,private的作用,防止x的值出现错误
cout<<"error x"<<endl;
return false;//运用bool类型,当出现错误时可以根据返回值进行判断,健壮性
}_x=x;
return true;}
bool Box:: set_y(double y){
if(y<0||y>100){
cout<<"error y"<<endl;
return false;}_y=y;
return true;}
bool Box:: set_z(double z){
if(z<0||z>100){
cout<<"error z"<<endl;
return false;}_z=z;
return true;}
函数的实现时的格式 数据类型 类名 :: 函数名()
::域名操作符
我们可以看见在set函数里面加了对数值的限定之后,长宽高的值就不会出现说非法不合理的数值了,像负数一般。而且为了方便观察,我们用bool类型作为函数的返回值,那具体在主函数里怎么实现呢?
那么大家来看主函数里面的代码吧
int main(){
double x,y,z;
cin>>x;
cin>>y;
cin>>z;
Box box;
//box.set_x(x);注意: 下面一条语句将重复这条语句
if(box.set_x(x)==false){
cout<<"出现错误,结束程序"<<endl;
return 0;
}
//box.set_y(y);
if(box.set_y(y)==false){
cout<<"出现错误,结束程序"<<endl;
return 0;
}
//box.set_z(z);
if(box.set_z(z)==false){
cout<<"出现错误,结束程序"<<endl;
return 0;
}
cout<<box.get_x()<<endl;
cout<<box.get_y()<<endl;
cout<<box.get_z()<<endl;
cout<<box.get_s()<<endl;
cout<<box.get_v()<<endl;
return 0;
}
像对于box.set_x(x)函数的返回值进行判断就可以判定是否赋值成功。
在日常工作中我们有时候不想别人了解函数的实现,我们可以将函数放入private中去。
private:
double get_s();//防止别人的访问
这样别人就不能访问到函数。