13.C++之封装示例

学习目标:

通过例子来巩固封装相关语法


学习内容:

1.示例一:设计立方体

示例要求:设计一个立方体类(Cube);求出立方体的体积;使用全局变量和成员函数判断两个立方体是否相等。
整体思路:

  • 设置立方体长宽高;
    在这里插入图片描述
    在这里插入图片描述
  • 立方体的体积 V = L ∗ W ∗ H V= L*W*H V=LWH
    在这里插入图片描述
  • 成员函数和全局函数返回bool型变量;
    成员函数
    在这里插入图片描述
    全局函数
    在这里插入图片描述
  • 主函数
    在这里插入图片描述
    在这里插入图片描述
    代码演示
#include<iostream>
#include<string>
using namespace std;
class Cube
{
public:
	//长的设置
	void set_L(int L)
	{
		m_L = L;
	}
	int get_L()
	{
		return m_L;
	}
	//宽的设置
	void set_W(int W)
	{
		m_W = W;
	}
	int get_W()
	{
		return m_W;
	}
	//高的设置
	void set_H(int H)
	{
		m_H = H;
	}
	int get_H()
	{
		return m_H;
	}
	//计算体积
	int calculate_V()
	{
		int V;
		V = m_L * m_W * m_H;
		return V;
	}

	//利用成员函数来判断两个立方体是否相等
	bool isSame(Cube& c)
	{
		if (m_L == c.get_L() && m_W == c.get_W() && m_H == c.get_H())
		{
			return true;
		}
		return false;
	}

private:
	int m_L;
	int m_W;
	int m_H;
};
//利用全局函数来判断两个立方体是否相等
bool isSame(Cube& c1, Cube& c2)
{
	if(c1.get_L() == c2.get_L()&& c1.get_W() == c2.get_W()&& c1.get_H() == c2.get_H())
	{
		return true;
	}
	return false;
}
int main()
{
	Cube c1;
	c1.set_L(10);
	c1.set_W(10);
	c1.set_H(10);
	cout << "C1体积为:" << c1.calculate_V() << endl;

	Cube c2;
	c2.set_L(4);
	c2.set_W(25);
	c2.set_H(10);
	cout << "C2体积为:" << c2.calculate_V() << endl<<endl;

	bool ret1 = isSame(c1, c2);
	cout << "全局函数判断结果:" << endl;
	if (ret1)
	{
		cout << "C1与C2相等" << endl;
	}
	else
	{
		cout << "C1与C2不相等" << endl;
	}

	cout << endl << endl;
	bool ret2 = c1.isSame(c2);
	cout << "成员函数判断结果:" << endl;
	if (ret2)
	{
		cout << "C1与C2相等" << endl;
	}
	else
	{
		cout << "C1与C2不相等" << endl;
	}
	system("pause");
	return 0;
}

在这里插入图片描述

2.示例二:判断点和圆的位置

核心思路:

  • 设计圆类和点类,并且进行嵌套处理;
  • 利用全局函数来判断点和圆的位置关系;
    创建一个圆类,并且在属性中嵌套一个点类
    在这里插入图片描述
    在这里插入图片描述
    利用全局函数来判断点和圆的位置关系
    在这里插入图片描述
    主函数部分
    ****
    代码演示
#include<iostream>
using namespace std;

//设置一个点类
class Point
{
public:
	//设置x
	void set_X(int x)
	{
		p_X = x;
	}
	//获取x
	int get_X()
	{
		return p_X;
	}
	//设置y
	void set_Y(int y)
	{
		p_Y = y;
	}
	//获取y
	int get_Y()
	{
		return p_Y;
	}

private:
	int p_X;
	int p_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().get_X() - p.get_X()) * (c.getCenter().get_X() - p.get_X()) 
													   +
				   (c.getCenter().get_Y() - p.get_Y()) * (c.getCenter().get_Y() - p.get_Y());
	//计算半径的平方
	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.set_X(10);
	center.set_Y(0);
	c.setCenter(center);

	//创建一个点
	Point p;
	p.set_X(10);
	p.set_Y(5);

	//判断关系
	isInCircle(c, p);
	system("pause");
	return 0;
}

在这里插入图片描述


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值