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;
}
相关推荐
BadBadBad__AK2 小时前
线段树维护区间 k 次方和
c++·数学·算法·stl
卷无止境14 小时前
Eigen 库如何借助 OpenMP 加速计算
c++·后端
卷无止境14 小时前
OpenMPI、MPICH 与 OpenMP:关系、核心概念与架构全解
c++·后端
郝学胜_神的一滴2 天前
CMake 30:循环语法全解|foreach_while双循环精讲、迭代技巧与实战避坑指南
c++·cmake
卷无止境4 天前
C++ 的Eigen 库全解析
c++
卷无止境4 天前
现代 C++特性大盘点:一门脱胎换骨的老语言
c++·后端
郝学胜_神的一滴4 天前
CMake 27:缓存变量的特性、语法、类型与实操全解
c++·cmake
博客18006 天前
酷宝的使用方法,超好用的免费界面库,C++、MFC可用
c++·mfc·界面库·库来帮·酷宝
郝学胜_神的一滴6 天前
CMake 026:属性体系精讲、四大作用域全解 & 实战代码落地
c++·cmake
众少成多积小致巨6 天前
JNI (Java Native Interface) 技术手册中文参考指南
android·java·c++