案例五:
要求:设计一个圆形类(AdvCircle)和一个点类(AdvPoint),计算点在圆内部还是圆外,即:求点和圆的关系。
设计思路:
【1】首先比较明确需要定义五个文件:AdvCircle.h、AdvCircle.cpp、AdvPoint.h、AdvPoint.cpp、main.cpp;
【2】在两个.h文件中分别定义圆形类(属性:半径、圆心坐标;方法:设定半径、圆心坐标,判断点与圆心的距离)和点类(属性:点坐标);
【3】主函数中定义两个类的对象和初始化两个对象的属性;
【4】计算圆心和点的距离,进行判断。
程序设计:
文件一:AdvCircle.h
#pragmaonce
#include"AdvPoint.h"
classAdvCircle
{
private:
intr;
intx0;
inty0;
public:
//根据圆的半径和圆心构造圆
voidCircleInit(int_r,int_x0,int_y0);
intjudg(AdvPoint &p0);
};
文件二:AdvPoint.h
#pragmaonce
classAdvPoint
{
public:
intx1;
inty1;
public:
//根据点的坐标构造点
voidPointInit(int_x1,int_y1);
};
文件三:AdvCircle.cpp
#include"AdvCircle.h"
#include
voidAdvCircle::CircleInit(int_r,int_x0,int_y0)
{
r=_r;
x0=_x0;
y0=_y0;
}
intAdvCircle::judg(AdvPoint &p0)
{
doubled=sqrt(double(p0.x1-x0)*(p0.x1-x0)+(p0.y1-y0)*(p0.y1-y0) );
return1;
return0;
}
文件四:AdvPoint.cpp
#include"AdvPoint.h"
voidAdvPoint::PointInit(int_x1,int_y1)
{
x1=_x1;
y1=_y1;
}
文件五:main.cpp
#include
#include"AdvCircle.h"
#include"AdvPoint.h"
usingnamespacestd;
intmain()
{
//生成圆和点的对象
AdvCircle c1;
AdvPoint p1;
//构造圆
c1.CircleInit(2,0,0);
//构造点
p1.PointInit(0,0);
if(c1.judg(p1))//调用c1的成员函数,会自动使用c1的私有属性
{
cout
}
else
{
cout
}
//计算点到圆心的距离
system("pause");
return0;
}
领取专属 10元无门槛券
私享最新 技术干货