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;
}
相关推荐
星空露珠11 小时前
28种颜色对应名称,
开发语言·数据库·算法·游戏·lua
码云数智-大飞11 小时前
PHP 接口开发规范:统一返回格式、异常处理与参数校验
开发语言·php
浮江雾11 小时前
Flutter第十七节-----路由管理(3)
android·开发语言·前端·javascript·flutter·入门
我不是懒洋洋11 小时前
从零实现一个分布式监控:Prometheus的核心设计
c++
admin and root11 小时前
「移动安全」安卓APP 反编译&frida脱壳技巧分享
android·开发语言·python·web安全·微信小程序·移动安全·攻防演练
踏月的造梦星球11 小时前
DM8 DSC 单机双实例部署
运维·开发语言·数据库
An_s11 小时前
c++对接pdfium(一)win系统篇
开发语言·c++
Zwarwolf11 小时前
Rust零散知识点项目汇总
开发语言·rust
-银雾鸢尾-11 小时前
C#中HashTable相关方法
开发语言·c#
众少成多积小致巨11 小时前
C++ 规范参考(上)
c++