C++三大特性--封装

封装是C++三大特性之一

首先是类的基本概念,类是一群相同相似事物的集合,一个类有属性和行为

class Person

{

属性

        int height;

        string name;

        .........

行为

        void  getheight()

{

        ...........

}

为函数

};

 一般称类中的属性和行为都为成员

属性------成员属性

行为------成员函数

一个类是集合,我们要使用的是一个个具体的对象、

这时候就需要创建了      类名   +  对象名

Person  p1

 一个类中,并不是所有成员都是公有的

类中有三种访问权限

public  protected   private

在C++中  class和struct  其实差不多

只不过class中的成员默认是private

                      struct中默认是public

为了自己控制读写权限

我们一般将成员属性私有化

只提供接口函数

下面是两个封装的设计案例

1.立方体类

要求 :        求出体积和面积

                分别用成员函数和全局函数判断两个立方体是否相等

分析:判断两个立方体是否相等,肯定要分别比较它们的长宽高,只有在对应相等的情况下才相等

在全局函数中,只要传两个实例对象,再判断就可以了

在成员函数中,在一个实例化对象中的成员函数中传入另一个实例对象,再判断即可

下面是代码

#include <iostream>
using namespace std;


class Cube
{
public:
	void setL(int L)
	{
		m_L = L;
	}
		
	int getL()
	{
		return m_L;
	}
	void setW(int W)
	{
		m_W= W;
	}

	int getW()
	{
		return m_W;
	}
	void setH(int H)
	{
		m_H= H;
	}

	int getH()
	{
		return m_H;
	}

	int V()
	{
		return m_L * m_W * m_H;
	}

	int S()
	{
		return 2*(m_L * m_W +m_L* m_H+m_H*m_W);
	}

	bool judge(Cube& C)
	{
		if (getL() == C.getL() && getW() == C.getW() && getH() == C.getH())
		{
			return true;
		}
		return false;
	}
private:
	int m_L;
	int m_W;
	int m_H;
};


bool judge(Cube &C1,Cube&C2)
{
	if (C1.getL() == C2.getL() && C1.getW() == C2.getW() && C1.getH() == C2.getH())
	{
		return true;
	}
	return false;
}

int main()
{
	Cube C1, C2;
	C1.setL(10);
	C1.setW(10);
	C1.setH(10);
	C2.setL(10);
	C2.setW(10);
	C2.setH(20);
	cout << "C1面积为" << C1.S() << "   C1体积为" << C1.V() << endl;
	cout << "C2面积为" << C2.S() << "   C2体积为" << C2.V() << endl;
	if (C1.judge(C2) == true)
	{
		cout << "相等!" << endl;
	}
	else
		cout << "不相等" << endl;
	if (judge(C1,C2) == true)
	{
		cout << "相等!" << endl;
	}
	else
		cout << "不相等" << endl;
}

2.点与圆的关系

要求:设计一个圆类和点类,计算他们间的关系

这个也很简单,直接上写的代码了

 

#include <iostream> 
using namespace std;

class  Point
{
public:
	void setX(int x)
	{
		m_x = x;
	}
	int getX()
	{
		return m_x;
	}

	void setY(int y)
	{
		m_y = y;
	}
	int getY()
	{
		return m_y;
	}
private:
	int m_x;
	int m_y;
};

class Circle
{
public:
	//设置半径
	void setR(int r)
	{
		m_r = r;
	}
	//获取半径
	int getR()
	{
		return m_r;
	}
	//设置圆心
	void setCenter(Point center)
	{
		CircleCenter = center;
	}
	//获取圆心
	Point getCenter()
	{
		return  CircleCenter;
	}

private:
	//圆心的坐标和圆的半径
	Point CircleCenter;
	int m_r;
};

//计算圆心到点的距离与半径比较
int judge(Circle& C, Point& P)
{
	int Ddistance;
	Ddistance = ((C.getCenter().getX() - P.getX()) * (C.getCenter().getX() - P.getX())) + ((C.getCenter().getY() - P.getY()) * (C.getCenter().getY() - P.getY()));
	return Ddistance;
}


int main()
{
	Point p;//点
	Point C;//圆心
	Circle CC;
	int dis=5;
	p.setX(10);
	p.setY(10);
	C.setX(20);
	C.setY(20);
	CC.setR(dis);
	CC.setCenter(C);
	int ret = judge(CC, p);
	if (ret - dis * dis>0)
	{
		cout << "圆外" << endl;
	}
	if (ret - dis * dis==0)
	{
		cout << "圆上" << endl;
	}
	if (ret - dis * dis<0)
	{
		cout << "圆内" << endl;
	}
}

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值