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;
}
相关推荐
Traced back18 分钟前
# C# 基础语法完全指南
开发语言·c#
野犬寒鸦20 分钟前
从零起步学习并发编程 || 第三章:JMM(Java内存模型)详解及对比剖析
java·服务器·开发语言·分布式·后端·学习·spring
xyq202422 分钟前
Bootstrap 表格
开发语言
大黄说说34 分钟前
TensorRTSharp 实战指南:用 C# 驱动 GPU,实现毫秒级 AI 推理
开发语言·人工智能·c#
范纹杉想快点毕业38 分钟前
嵌入式系统架构之道:告别“意大利面条”,拥抱状态机与事件驱动
java·开发语言·c++·嵌入式硬件·算法·架构·mfc
陳103040 分钟前
C++:map和set的使用
开发语言·c++
苏宸啊42 分钟前
list底层实现
c++·list
近津薪荼42 分钟前
递归专题(4)——两两交换链表中的节点
数据结构·c++·学习·算法·链表
2501_9403152643 分钟前
【无标题】2390:从字符串中移除*
java·开发语言·算法
乐观勇敢坚强的老彭1 小时前
c++寒假营day01下午
c++·算法