C++多文件案例:判断circle和point之间的关系(分为.h文件和 .cpp文件)

一、实验目的

创建圆类和点类,实例化后,判断两者之间关系

使用到类的封装,以及多文件等知识点

 

二、整体代码

        在程序入库.cpp文件中,将整体代码实现

1、点类

class Point
{
public:
	void setpoint(int L, int R)           //提供公共接口操纵属性
	{
		pointL = L;
		pointR = R;
	}

	int getPointL()
	{
		return pointL;
	}
	int getPointR()
	{
		return pointR;
	}

private:                         //属性成员必须 是private
	int pointL;
	int pointR;

};

 

2、圆类

class Circle
{
public:
	void setCenter(Point cen)
	{ 
		center = cen;
	}

	Point getCenter()		 	  
	{ 
		return center;
	}
	
	void setRadius(int side)
	{
		radius = side;
	}

	int getRadius()
	{
		return radius;
	}

private:
	Point center;             //类也可以作为成员变量
	int radius; 

};

 

3、公共函数

void isInCircle(Circle c, Point p)
{
	double distance = (pow(c.getCenter().getPointL() - p.getPointL(), 2) + pow(c.getCenter().getPointR() - p.getPointR(), 2)); 
	int d_radius = c.getRadius() * c.getRadius();
	cout << " distance = " << distance << endl;
	cout << " d_radius = " << d_radius << endl;

	if (distance< d_radius)
	{
		cout << "圆内" << endl;
	}
	else if (distance == d_radius)
	{
		cout << "圆上" << endl;
	}
	else
		cout << "圆外" << endl;
}

 

4、主函数入口

int main()
{
	//create class Circle instance
	Point center;
	center.setpoint(1, 1);
	Circle cir;
	cir.setCenter(center);
	cir.setRadius(1);

	//create class Point p
	Point p;
	p.setpoint(0, 0);

	
	isInCircle(cir, p);

	system("pause");
	return 0;
}

 

 

三、分为多个文件

1、新建 point.h 头文件,类的声明放入

#pragma once   //防止头文件重复包含
#include<iostream>
using namespace std;


class Point
{
public:
	void setpoint(int L, int R);       //具体实现删除,只需要声明即可
	int getPointL();
	int getPointR();
	
private:
	int pointL;
	int pointR;

};

 

2、新建 point.cpp 头文件,放入类的具体实现

     文件开头写上引用的头文件,函数名前加上作用域   Point::

#include "point.h"


void Point::setpoint(int L, int R)      //函数名之前加上作用域
{
	pointL = L;
	pointR = R;
}

int Point::getPointL()
{
	return pointL;
}

int Point::getPointR()
{
	return pointR;
}

 

3、新建circle.h头文件,放入类的声明

      因为函数声明里含有Point,所以在文件开头,要写上 #include "point.h"

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


class Circle
{
public:
	void setCenter(Point cen);
	Point getCenter();
	void setRadius(int side);
	int getRadius();

private:
	Point center;
	int radius;

};

 

4、新建circle.cpp文件,放入圆类的具体实现

      注意引入头文件,以及函数名前加上作用域

#include "circle.h"

void Circle::setCenter(Point cen)
{
	center = cen;
}

Point Circle::getCenter()
{
	return center;
}

void Circle::setRadius(int side)
{
	radius = side;
}

int Circle::getRadius()
{
	return radius;
}

 

5、修改主函数文件

关于类的定义都已经移除,只剩下公共函数以及 int main()函数入口

要在文件开头出加上 #include "circle.h"
                                  #include "point.h"

#include<iostream>
#include<string>
using namespace std;
#include "circle.h"
#include "point.h"

//@file   : 02 Circle and Point
//@author : wang
//@date   : 2021/3/22 21:22:02
//@brief  : create circle class and point class,detemine the relationship between circle and point



void isInCircle(Circle c, Point p)
{
	double distance = (pow(c.getCenter().getPointL() - p.getPointL(), 2) + pow(c.getCenter().getPointR() - p.getPointR(), 2)); 
	int d_radius = c.getRadius() * c.getRadius();
	cout << " distance = " << distance << endl;
	cout << " d_radius = " << d_radius << endl;

	if (distance< d_radius)
	{
		cout << "圆内" << endl;
	}
	else if (distance == d_radius)
	{
		cout << "圆上" << endl;
	}
	else
		cout << "圆外" << endl;
}


int main()
{
	//create class Circle instance
	Point center;
	center.setpoint(1, 1);
	Circle cir;
	cir.setCenter(center);
	cir.setRadius(1);

	//create class Point p
	Point p;
	p.setpoint(0, 0);

	
	isInCircle(cir, p);

	system("pause");
	return 0;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值