笔记四十:面向过程编程向面向对象编程转变案例(2)

案例五:

要求:设计一个圆形类(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;

}

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180412A07ADF00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券