C++c6-类和对象-封装-设计案例2-点和圆的关系

跟着黑马程序员写,大致就是提取点坐标与圆心坐标做差进行平方和圆的半径平方进行对比

一个类负责提取坐标(模块化)

一个类负责提取圆心和半径(模块化)

主函数进行计算

头文件:

1.FileName.cpp

cpp 复制代码
#include<iostream>
#include<string>
using namespace std;
#include"circle.h"
#include"point.h"

//点和圆关系案例

////点类
//class Point
//{
//public:
//	//设置x坐标
//	void setX(int x)
//	{
//		m_X = x;
//	}
//	//获取x坐标(其实就是返还给主函数)
//	int getX()
//	{
//		return m_X;
//	}
//	//设置y坐标
//	void setY(int y)
//	{
//		m_Y = y;
//	}
//	//获取y坐标(其实就是返还给主函数)
//	int getY()
//	{
//		return m_Y;
//	}
//	int m_X;
//	int m_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().getX() - p.getX()) * (c.getCenter().getX() - p.getX()) +	//中心点减去p点坐标^2(X和Y相加)
		(c.getCenter().getY() - p.getY()) * (c.getCenter().getY() - p.getY());
	//半径 平方
	 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.setX(10);
	Center.setY(0);
	c.setCenter(Center);
	
	//创建点
	Point p;
	p.setX(10);
	p.setY(9);

	//创建关系

	isInCircle(c, p);
	system("pause");
	return 0;
}

2.point.h

cpp 复制代码
#pragma once
#include<iostream>
using namespace std;
//保留函数声明和变量即可

//点类
class Point
{
public:
//设置x坐标
	void setX(int x);

//获取x坐标(其实就是返还给主函数)
	int getX();

//设置y坐标
	void setY(int y);

//获取y坐标(其实就是返还给主函数)
	int getY();

int m_X;
int m_Y;
};

3.Circle.h

cpp 复制代码
#pragma once
#include<iostream>
using namespace std;
#include"point.h"
//保留函数声明和变量即可


//圆类
class Circle
{
public:

	//设置半径
	void setR(int r);
	
	//获取半径
	int getR();

	//设置圆心
	void setCenter(Point center);

	//获取圆心
	Point getCenter();


private:
	int m_R;	//半径
	 
	//在类中可以让另一个类 作为本类中的成员
	Point m_Center;	//圆心
};

源文件:

1.point.cpp

cpp 复制代码
#include "point.h"

//设置x
void Point::setX(int x)
{
	m_X = x;
}
//获取x坐标(其实就是返还给主函数)
int Point::getX()
{
	return m_X;
}
//设置y坐标
void Point::setY(int y)
{
	m_Y = y;
}
//获取y坐标(其实就是返还给主函数)
int Point::getY()
{
	return m_Y;
}

	

2.Circle.cpp

cpp 复制代码
#include "point.h"
#include "Circle.h"

//设置半径
void Circle::setR(int r)
{
	m_R = r;
}
//获取半径
int Circle::getR()
{
	return m_R;
}
//设置圆心
void Circle::setCenter(Point center)
{
	m_Center  = center;
}
//获取y坐标(其实就是返还给主函数)
Point Circle::getCenter()
{
	return m_Center;
}
相关推荐
范范之交1 分钟前
JavaScript基础语法two
开发语言·前端·javascript
Felven2 分钟前
C. Game of Mathletes
c语言·开发语言
点云SLAM24 分钟前
C++中内存池(Memory Pool)详解和完整示例
开发语言·c++·内存管理·内存池·new/delete·malloc/free
程高兴1 小时前
遗传算法求解冷链路径优化问题matlab代码
开发语言·人工智能·matlab
wow_DG1 小时前
【C++✨】多种 C++ 解法固定宽度右对齐输出(每个数占 8 列)
开发语言·c++·算法
Epiphany.5561 小时前
c++最长上升子序列长度
c++·算法·图论
CHEN5_021 小时前
【Java基础】反射,注解,异常,Java8新特性,object类-详细介绍
java·开发语言
Cx330❀2 小时前
【数据结构初阶】--排序(四):归并排序
c语言·开发语言·数据结构·算法·排序算法
云间月13142 小时前
飞算JavaAI智慧文旅场景实践:从景区管理到游客服务的全链路系统搭建
java·开发语言
杜子不疼.2 小时前
《Python学习之使用标准库:从入门到实战》
开发语言·python·学习