黑马程序员匠心之作-封装实例

问题描述:

 

核心1:在一个类中,可以让另一个类作为本类的成员。 

//要求:
//判断点与圆的关系
#include<iostream>
#include<string>
using namespace std;

class Circle
{
public:

	void setm_R(double R)
	{
		m_R = R;
	}

	double readm_R()
	{
		return m_R;
	}
	void setcenter(CenterPoint theP)
	{
		p = theP;
	}
	double readcenter_x()
	{
		return p.readpoint_x();
	}
	double readcenter_y()
	{
		return p.readpoint_y();
	}
private://属性设置为私有
	double m_R;
	point p;
	
};
class point
{
public:

	void setpoint_x(double thex)
	{
		point_x = thex;
	}
	double readpoint_x()
	{
		return point_x;
	}
	void setpoint_y(double they)
	{
		point_y = they;
	}
	double readpoint_y()
	{
		return point_y;
	}
private:
	double point_x;
	double point_y;
};
void isSame(Circle c, point p)
{
	if ((p.readpoint_x() - c.readcenter_x()) * (p.readpoint_x() - c.readcenter_x()) +
		(p.readpoint_y() - c.readcenter_y()) * (p.readpoint_y() - c.readcenter_y()) > c.readm_R() * c.readm_R())
	{
		cout << "点在圆外" << endl;
	}
	else if ((p.readpoint_x() - c.readcenter_x()) * (p.readpoint_x() - c.readcenter_x()) +
		(p.readpoint_y() - c.readcenter_y()) * (p.readpoint_y() - c.readcenter_y()) == c.readm_R() * c.readm_R())
	{
		cout << "点在圆上" << endl;
	}
	else
	{
		cout << "点在圆内" << endl;
	}
}
int main()
{
	point cp;
	cp.settpoint_x(10);
	cp.settpoint_y(0);
	Circle c;
	c.setm_R(10);
	c.setcenter(cp);
	point p;
	p.setpoint_x(10);
	p.setpoint_y(9);
	isSame(c, p);
	
	system("pause");
	return 0;
	
}

核心2 怎么把一个类拆到不同的文件中:一个类拆成.h(头文件)和.cpp(源文件)

.h包含函数和变量的声明;

.cpp只包含具体的函数;

//要求:
//判断点与圆的关系
#include<iostream>
#include<string>
#include"point.h"
#include"Circle.h"
using namespace std;
void isSame(Circle c, point p)
{
	if ((p.readpoint_x() - c.readcenter_x()) * (p.readpoint_x() - c.readcenter_x()) +
		(p.readpoint_y() - c.readcenter_y()) * (p.readpoint_y() - c.readcenter_y()) > c.readm_R() * c.readm_R())
	{
		cout << "点在圆外" << endl;
	}
	else if ((p.readpoint_x() - c.readcenter_x()) * (p.readpoint_x() - c.readcenter_x()) +
		(p.readpoint_y() - c.readcenter_y()) * (p.readpoint_y() - c.readcenter_y()) == c.readm_R() * c.readm_R())
	{
		cout << "点在圆上" << endl;
	}
	else
	{
		cout << "点在圆内" << endl;
	}
}
int main()
{
	point cp;
	cp.setpoint_x(10);
	cp.setpoint_y(0);
	Circle c;
	c.setm_R(10);
	c.setcenter(cp);
	point p;
	p.setpoint_x(10);
	p.setpoint_y(9);
	isSame(c, p);
	
	system("pause");
	return 0;
	
}

point.h 

#pragma once
#include<iostream>
using namespace std;
class point
{
public:

	void setpoint_x(double thex);
	
	double readpoint_x();
	
	void setpoint_y(double they);
	
	double readpoint_y();
	
private:
	double point_x;
	double point_y;
};

point.cpp

#include"point.h"
void point::setpoint_x(double thex)//point作用域下的成员函数
{
	point_x = thex;
}
double point::readpoint_x()
{
	return point_x;
}
void point::setpoint_y(double they)
{
	point_y = they;
}
double point::readpoint_y()
{
	return point_y;
}

	

Circle.h

#pragma once
#include<iostream>
#include"point.h"
using namespace std;
class Circle
{
public:

	void setm_R(double R);
	
	double readm_R();
	
	void setcenter(point theP);
	
	double readcenter_x();
	
	double readcenter_y();
	
private://属性设置为私有
	double m_R;
	point p;

};

Circle.cpp

#include"Circle.h"
void Circle::setm_R(double R)
{
	m_R = R;
}

double Circle::readm_R()
{
	return m_R;
}
void Circle::setcenter(point theP)
{
	p = theP;
}
double Circle::readcenter_x()
{
	return p.readpoint_x();
}
double Circle::readcenter_y()
{
	return p.readpoint_y();
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值