【C++面向对象基础案例】

C++面向对象案例

  • 一 、案例一:按照要求设计立方体类
    • 要求一实现:
    • 要求二实现:
      • 使用全局函数实现:
      • 使用成员方法实现
  • 二 、案例二:
    • 设置点类(引用型数据类型)
    • 设置圆类:
    • 使用全局函数对点和圆的位置关系进行判断:
    • 案例二核心总结:

一 、案例一:按照要求设计立方体类

要求:
(1)求出立方体的面积和体积

(2)分别使用全局函数和成员函数判断两个立方体是否是相等的

要求一实现:

步骤一:Cube类中设置私有属性(长,宽,高)
步骤二:Cube类中设置共有行为(包含设置,获取长方体的长宽高,获取长方体的体积和面积),这种公共行为也可以称之为接口

//行为:(成员方法)
public:
	//设置长宽高
	void setlong(int l)
	{
		m_l = l;
	}
	void setwidth(int w)
	{
		m_w = w;
	}
	void setheight(int h)
	{
		m_h = h;
	}

	//获取长宽高
	int getlong()
	{
		return m_l;
	}
	int getwidth()
	{
		return m_w;
	}
	int getheight()
	{
		return m_h;
	}



	//获取立方体的面积(六个面)
	int getarea()
	{
		return 2 * m_l * m_w + 2 * m_l * m_h + 2 * m_w * m_h;
	}
	//获取体积
	int getvolume()
	{
		return m_l * m_w * m_h;
	}

//成员属性
private:
	int m_l;//长
	int m_w;//宽
	int m_h;//高
};

要求二实现:

使用全局函数实现:

//使用全局函数:需要传递两个立方体
bool equal(Cube &c1,Cube &c2)//(引用传递)
{
	if (c1.getlong() == c2.getlong() 
	&& c1.getwidth() == c2.getwidth()
	&& c1.getheight() == c2.getheight())
	{
		return true;
	}
	else
		return false;
}

使用成员方法实现

//成员函数判断:只需要传如另一个立方体
bool issame(Cube &c)
{
	//用自身的长宽高和传进来的另一个立方体的长宽高进行比较
	if (m_l == c.getlong() 
	&& m_w == c.getwidth() 
	&& m_h == c.getheight())
	{
		return true;
	}
	else
	{
		false;
	}
}

二 、案例二:

要求:设计一个圆类,一个点类,计算点和圆的位置关系
点和圆的位置关系

(1)点在圆内:d

(2)点在圆上:d=r

(3)点在圆上:d>r

点到圆心的距离:由两点坐标获取(两点间距离公式)

设置点类(引用型数据类型)

class point
{

public:
	//设置x坐标,获取x坐标
	void setx(int x)
	{
		m_x = x;
	}
	int getx()
	{
		return m_x;
	}
	//设置y坐标,获取y坐标
	void sety(int y)
	{
		m_y = y;
	}
	int gety()
	{
		return m_y;
	}
private:
	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()) +
		(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;
	}
}

案例二核心总结:

1 在一个类中,另一个类可以作为本类的成员变量

2 由于所有类都写在一个文件中代码量过大,因此类一般与主函数分文件写(每个类都要进行分文件)
分文件步骤:
(1)写头文件

//头文件中
#pragma once 防止头文件重复包含
#include
using namespace std;

在头文件中写入类(类中成员方法只需要声明),方法后加分号
(2)源文件中先进行包含所联系的头文件

只写成员函数的具体实现,但是要使用::标识符表明是哪些类中的(作用域)成员方法

只留全局函数和主函数

要使用点类和圆类,将他们的头文件包含进来就可以

你可能感兴趣的:(案例,c++)