C++面向对象

一、面向对象程序设计方法

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();//防止别人的访问

这样别人就不能访问到函数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值