封装案例

 
//设计一个圆类
const double PI = 3.14
 
class Circle
{
//访问权限:
public:
	//属性
	int m_r;
	//方法
	double calculateC()
	{
		return 2 * PI * m_r;
	}
};
 
int main()
{
	//创建对象
	Circle c1;
	c1.m_r = 10;
	cout << c1.calculateC() << endl;//output:62.8
	
	return 0;
}
title:Example2
//设计一个学生类
class Student
{
public:
	int m_number;
	std::string m_name;
	
	//有风险
	void setStu()
	{
		cin >> m_number >> m_name;
	}
	
	//一般用这种方法
	void setName(std::string name)
	{
		m_name = name;
	}
	
	void setNumber(int num)
	{
		m_number = num;
	}
	
	void findStu()
	{
		cout << m_number << m_name << endl;
	}
};
 
int main()
{
	Student stu1;
	stu1.m_name = "张三";
	stu1.m_number = 1;
	stu1.findStu();//output:张三1
	Student stu2;
	stu2.m_name = "李四";
	stu2.m_number = 2;
	stu2.findStu();//output:李四2
	
	//或者:
	Student stu3;
	stu3.setName("王五");
	stu3.setNumber(1);
	stu3.findStu();//output:王五3
	return 0;
}

设计案例

```text
练习案例1:设计立方体类设计立方体类(Cube)
求出立方体的面积和体积
分别用全局函数和成员函数判断两个立方体是否相等
class Cube
{
public:
	void setL(int l){m_L = l;}
	void setW(int w){m_W = w;}
	void setH(int h){m_H = h;}
	void getL(){return m_L;}
	void getW(){return m_W;}
	void getH(){return m_H;}
	int calculateS(){return (2 * (m_L * m_W + m_L * m_H + m_W * m_H));}
	int calculateV(){return (m_L * m_W * m_H);}
	bool isSame(Cube &cu)
	{
		if(this->m_L ==cu.getL() && this->m_W ==cu.getW() && this->m_H ==cu.getH())return true;
		else false;
	}
private:
	int m_L;
	int m_W;
	int m_H;
};
 
bool isSame(Cube &cu1, Cube &cu2)
{
	if(cu1.getL() == cHu2.getL() && cu1.getW() == cu2.getW() && cu1.getH() == cu2.getH() )return true;
	else false;
}
 
int main()
{
	Cube c1;
	c1.setL(10);
	c1.setW(10);
	c1.setH(10);
	cout << c1.calculateS() << endl;//output:600
	cout << c1.calculateV() << endl;//output:1000
	Cube c2;
	c2.setL(10);
	c2.setW(10);
	c2.setH(10);
	cout << c2.calculateS() << endl;//output:600
	cout << c2.calculateV() << endl;//output:1000
	cout << isSame(c1, c2) << endl;
}
```text
练习案例二:点和圆关系
求点和园关系
class Point
{
public:
	void setX(int x){m_X = x;}
	void setY(int y){m_Y = y;}
	int getX(){return m_X;}
	int getY(){return m_Y;}
	
private:
	int m_X;
	int m_Y;
};
 
class Circle
{
public:
	void setCenter(Point center){m_center = center;}
	void setR(int r){m_R = r;}
	Point getCenter(){return m_center;}
	int getR(){return m_R;}
	
private:
	int m_R;
	Point m_center;
};
 
void isInCircle(Circle &c, Point &p)
{
	int distance1 = 
	pow((c.getCenter().getX() - p.getX()), 2) + 
	pow((c.getCenter().getY() - p.getY()), 2);//(x_c - x_p)^2 + (y_c - y_p)^2
	int distance2 = pow(c.getR(), 2);//r^2
	if(distance1 == distance2)
	{cout << "点在圆上" << endl;}
	else if(distance1 > distance2)
	{cout << "点在圆内" << endl;}
	else{cout << "点在圆外" << endl;}
}
 
int main()
{
	Circle c1;
	c1.setR(10);
	Point center;
	center.setX(10);
	center.setY(0);
	Point point;
	point.setX(10);
	point.setY(10);
	isInCircle(c1, point);//output:点在圆上
}