学习目标:
通过例子来巩固封装相关语法
学习内容:
1.示例一:设计立方体
示例要求:设计一个立方体类(Cube);求出立方体的体积;使用全局变量和成员函数判断两个立方体是否相等。
整体思路:
- 设置立方体长宽高;
- 立方体的体积
V
=
L
∗
W
∗
H
V= L*W*H
V=L∗W∗H;
- 成员函数和全局函数返回bool型变量;
成员函数
全局函数
- 主函数
代码演示
#include<iostream>
#include<string>
using namespace std;
class Cube
{
public:
//长的设置
void set_L(int L)
{
m_L = L;
}
int get_L()
{
return m_L;
}
//宽的设置
void set_W(int W)
{
m_W = W;
}
int get_W()
{
return m_W;
}
//高的设置
void set_H(int H)
{
m_H = H;
}
int get_H()
{
return m_H;
}
//计算体积
int calculate_V()
{
int V;
V = m_L * m_W * m_H;
return V;
}
//利用成员函数来判断两个立方体是否相等
bool isSame(Cube& c)
{
if (m_L == c.get_L() && m_W == c.get_W() && m_H == c.get_H())
{
return true;
}
return false;
}
private:
int m_L;
int m_W;
int m_H;
};
//利用全局函数来判断两个立方体是否相等
bool isSame(Cube& c1, Cube& c2)
{
if(c1.get_L() == c2.get_L()&& c1.get_W() == c2.get_W()&& c1.get_H() == c2.get_H())
{
return true;
}
return false;
}
int main()
{
Cube c1;
c1.set_L(10);
c1.set_W(10);
c1.set_H(10);
cout << "C1体积为:" << c1.calculate_V() << endl;
Cube c2;
c2.set_L(4);
c2.set_W(25);
c2.set_H(10);
cout << "C2体积为:" << c2.calculate_V() << endl<<endl;
bool ret1 = isSame(c1, c2);
cout << "全局函数判断结果:" << endl;
if (ret1)
{
cout << "C1与C2相等" << endl;
}
else
{
cout << "C1与C2不相等" << endl;
}
cout << endl << endl;
bool ret2 = c1.isSame(c2);
cout << "成员函数判断结果:" << endl;
if (ret2)
{
cout << "C1与C2相等" << endl;
}
else
{
cout << "C1与C2不相等" << endl;
}
system("pause");
return 0;
}
2.示例二:判断点和圆的位置
核心思路:
- 设计圆类和点类,并且进行嵌套处理;
- 利用全局函数来判断点和圆的位置关系;
创建一个圆类,并且在属性中嵌套一个点类
利用全局函数来判断点和圆的位置关系
主函数部分
代码演示
#include<iostream>
using namespace std;
//设置一个点类
class Point
{
public:
//设置x
void set_X(int x)
{
p_X = x;
}
//获取x
int get_X()
{
return p_X;
}
//设置y
void set_Y(int y)
{
p_Y = y;
}
//获取y
int get_Y()
{
return p_Y;
}
private:
int p_X;
int p_Y;
};
class Circle
{
public:
//设置圆的半径
void setR(int r)
{
m_R = r;
}
//获取圆的半径
int getR()
{
return m_R;
}
//设置圆心
void setCenter(Point center)
{
m_Center = center;
}
//获取圆心
Point getCenter()
{
return m_Center;
}
private:
int m_R;//圆的半径
//在一个类中,直接调用另一个类
Point m_Center; //圆心
};
//判断点和圆的关系的函数
void isInCircle(Circle& c, Point& p)
{
//计算两点之间的平方
int distance = (c.getCenter().get_X() - p.get_X()) * (c.getCenter().get_X() - p.get_X())
+
(c.getCenter().get_Y() - p.get_Y()) * (c.getCenter().get_Y() - p.get_Y());
//计算半径的平方
int Rdistance = c.getR() * c.getR();
//判断关系
if (distance == Rdistance)
{
cout << "点在圆上" << endl;
}
else if(distance > Rdistance)
{
cout << "点在园外" << endl;
}
else
{
cout << "点在圆内" << endl;
}
}
int main()
{
Circle c; //创建一个圆
c.setR(10);
Point center; //创建一个圆心的点
center.set_X(10);
center.set_Y(0);
c.setCenter(center);
//创建一个点
Point p;
p.set_X(10);
p.set_Y(5);
//判断关系
isInCircle(c, p);
system("pause");
return 0;
}