C++--封装

目录

封装

封装的含义

封装的意义1

实例一

实例二


C++面对对象的三大特点:继承、封装、多态。

封装

封装的含义

  • 将对象的属性和行为作为一个整体,表现生活中的事物。
  • 将属性和行为加以权限控制

封装的意义1

设计一个类,将属性和行为写到一起,表现事物。

语法:class 类名{ 访问权限:属性/行为};

实例一

设计一个圆类,求圆的周长和面积

#include
#include

using namespace std;
const double PI = 3.14;

class Circle
{

public:
	//属性(半径
	int r;
	//行为(一般是函数
	/*double length()
	{
		return 2 * PI *r;
	}
	double area()
	{
		return PI*r*r;
	}*/
};
void getlength(int r)
{
	cout << "圆的周长为:" << 2 * r * PI<< endl;
}
void getarea(int r)
{
	cout << "圆的面积是:" << PI*r*r << endl;
}
int main()
{
	Circle c;//实例化
	/*cout << "length=" <

运行结果:

实例二

设计圆类和点类,判断点和圆的关系。

C++--封装_第1张图片

C++--封装_第2张图片

 完整代码:

class point//点类
{
public:
	//设置x坐标
	void setx(int x)
	{
		p_x = x;
	}
	//获取x坐标
	int getx()
	{
		return p_x;
	}
	//设置y坐标
	void sety(int y)
	{
		p_y = y;
	}
	//获取y坐标
	int gety()
	{
		return p_y;
	}

private:
	//私有属性 点类有x,y坐标
	int p_x;
	int p_y;
};

class Circle//圆类
{
public:
	void setr(int r)//设置半径
	{
		c_r = r;
	}
	double getr()//获取半径
	{
		return c_r;
	}
	void setcenter(point center)
	{
		c_center = center;
	}
	point getcenter()
	{
		return c_center;
	}
private:
		int c_r;
		point c_center;//自定义的点类
		                //在类中,让另一个类做本类中的成员
};


//判断点和圆关系的函数
void Isincircle(Circle &c, point &p)
{
	//计算两点之间距离的平方
	int d =
		(c.getcenter().getx() - p.getx())*(c.getcenter().getx() - p.getx()) +
		(c.getcenter().getx() - p.getx())*(c.getcenter().getx() - p.getx());
	//计算半径的平方
	double R = c.getr()*c.getr();
	//判断关系
	if (d > R)
	{
		cout << "点在圆外" << endl;
	}
	else if (d < R)
	{
		cout << "点在圆内" << endl;
	}
	else
	{
		cout << "点在圆上" << endl;
	}
}

int main()
{
	Circle c;//圆类实例化
	c.setr(10);

	point p;//点类实例化
	p.setx(1);
	p.sety(0);
	point center;
	center.setx(0);//原点为圆心
	center.sety(0);
	c.setcenter(center);
	Isincircle(c, p);//判断关系
	
	system("pause");
	return 0;
}

运行结果:

 还可以将point类与circle类写进头文件:

创建相应的point.h头文件,与point.cpp源文件:

#pragma once
#include
using namespace std;

class point//点类
{
public:
	//设置x坐标
	void setx(int x);
	
	//获取x坐标
	int getx();
		
	//设置y坐标
	void sety(int y);
	
	//获取y坐标
	int gety();

private:
	//私有属性 点类有x,y坐标
	int p_x;
	int p_y;
};
#include"point.h"
	//设置x坐标
	void point ::setx(int x)//
	{
		p_x = x;
	}
	//获取x坐标
	int point::getx()
	{
		return p_x;
	}
	//设置y坐标
	void point::sety(int y)
	{
		p_y = y;
	}
	//获取y坐标
	int point::gety()
	{
		return p_y;
	}

同理,创建相应的circle.h头文件与circle.cpp源文件:

#pragma once
#include
using namespace std;
#include"point.h"

class Circle//圆类
{
public:
	void setr(int r);
	double getr();
	void setcenter(point center);
	point getcenter();
	
private:
	int c_r;
	point c_center;//自定义的点类
	//在类中,让另一个类做本类中的成员
};

#include"Circle.h"

	void Circle::setr(int r)//设置半径
	{
		c_r = r;
	}
	double Circle::getr()//获取半径
	{
		return c_r;
	}
	void Circle::setcenter(point center)
	{
		c_center = center;
	}
	point Circle::getcenter()
	{
		return c_center;
	}


此时要在主函数中添加:

#include

#include"point.h"

#include"Circle"

using namespace std;

//判断点和圆关系的函数
void Isincircle(Circle &c, point &p)
{
	//计算两点之间距离的平方
	int d =
		(c.getcenter().getx() - p.getx())*(c.getcenter().getx() - p.getx()) +
		(c.getcenter().getx() - p.getx())*(c.getcenter().getx() - p.getx());
	//计算半径的平方
	double R = c.getr()*c.getr();
	//判断关系
	if (d > R)
	{
		cout << "点在圆外" << endl;
	}
	else if (d < R)
	{
		cout << "点在圆内" << endl;
	}
	else
	{
		cout << "点在圆上" << endl;
	}
}

int main()
{
	Circle c;//圆类实例化
	c.setr(10);

	point p;//点类实例化
	p.setx(1);
	p.sety(0);
	point center;
	center.setx(0);//原点为圆心
	center.sety(0);
	c.setcenter(center);
	Isincircle(c, p);//判断关系
	
	system("pause");
	return 0;
}

运行结果与上述一致。

看B站黑马程序员的课,自己记得笔记和重点。

你可能感兴趣的:(c++,开发语言,后端)