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;
}
相关推荐
HSJ0170几秒前
Aviator中使用BigDecimal进行高精度计算
java·开发语言·bigdecimal·aviator
weixin_307779134 分钟前
利用 AWS Lambda 与 EventBridge 优化低频 Java 作业的云计算成本
java·开发语言·云原生·云计算·aws
CheungChunChiu5 分钟前
从 Rust 到 Flutter:嵌入式图形与构建工具全景指南
开发语言·flutter·rust
满天星830357711 分钟前
【C++】智能指针
c语言·开发语言·c++·visual studio
hj104340 分钟前
php上传企业微信附件的方法
开发语言·php·企业微信
m0_748248021 小时前
基于 C++ 的高性能批量媒体文件压缩程序
c++·人工智能·数据挖掘
起予者汝也1 小时前
Python基础入门
开发语言·python
Larry_Yanan1 小时前
QML学习笔记(五十三)QML与C++交互:数据转换——序列类型与 JavaScript 数组的转换
c++·笔记·学习
努力努力再努力wz2 小时前
【Linux进阶系列】:线程(上)
java·linux·运维·服务器·数据结构·c++·redis
仟千意2 小时前
C++:类和对象---初级篇
c++