一、面向过程编程



给定 圆 的 半径 , 求该圆 的 周长 和 面积 ;

半径为 r r r , 周长就是 2 π r 2 \pi r 2πr , 面积是 π r 2 \pi r^2 πr2 ;


使用 面向过程 的方法解决上述问题 , 只能是令程序顺序执行 , 如果要求多个圆的面积 , 则需要重复执行过程代码 ;


代码示例 :


// 包含 C++ 头文件
#include "iostream"

// 使用 std 标准命名空间
//		该命名空间中 , 定义了很多标准定义
using namespace std;

int main() 
{
	// 定义圆半径 , 周长 , 面积 对应的变量
	double r = 0, p = 0, a = 0;

	// 提示输入圆半径
	cout << "输入圆半径 :" << endl;

	// 从命令行标准输入得到的数据 到 变量 r 指示的内存空间中
	cin >> r;
	cout << "接收到圆半径 :"<< r << endl;

	// 计算圆周长
	p = 3.14159 * 2 * r;

	// 计算圆面积
	a = 3.14159 * r * r;

	// 打印计算结果
	cout << "圆周长为 :" << p << " 圆面积为 : " << a << endl;

	
	// 控制台暂停 , 按任意键继续向后执行
	system("pause");
}

执行结果 : 输入半径 10 , 计算出了对应的周长 和 面积 ;

输入圆半径 :
10
接收到圆半径 :10
圆周长为 :62.8318 圆面积为 : 314.159
Press any key to continue . . .

【C++】面向对象编程引入 ( 面向过程编程 | 查看 iostream 依赖 | 面向对象编程 )-LMLPHP

【C++】面向对象编程引入 ( 面向过程编程 | 查看 iostream 依赖 | 面向对象编程 )-LMLPHP





二、查看 iostream 依赖



在上个章节的代码中 , 使用了 cout 和 cin 两个标准流 ,

  • 将数据输出到 cout 标准输出流中 , 使用 cout << 输出内容 实现 ;
  • 将数据从 cin 标准输入流中读取到内存中, 使用 cin >> 内存空间 实现 ;

<< 是输出数据到输出流中 , >> 是输入数据到内存中 ;

记住的方法是 : 标准流 cin 和 cout 始终在 左边 , << 和 >> 是 数据的方向 ;


cin 和 cout 都定义在 iostream 中 , 可以在 Visual Studio 2019 的 解决方案资源管理器 中的 项目下的 " 外部依赖 " 中查看 iostream 标准流 定义 ;

【C++】面向对象编程引入 ( 面向过程编程 | 查看 iostream 依赖 | 面向对象编程 )-LMLPHP
双击 展开 " 外部依赖项 " , 可以查看 iostream 的完整代码 ;

【C++】面向对象编程引入 ( 面向过程编程 | 查看 iostream 依赖 | 面向对象编程 )-LMLPHP





三、面向对象编程



给定 圆 的 半径 , 求该圆 的 周长 和 面积 ;

半径为 r r r , 周长就是 2 π r 2 \pi r 2πr , 面积是 π r 2 \pi r^2 πr2 ;


使用 面向对象 的 方式 , 解决上述问题 ;

  • 首相 , 将 事物 进行抽象 , 这里将 圆 定义为一个 数据类型 ;
  • 然后 , 在 圆 类型中 , 定义 成员属性 半径 , 周长 , 和 面积 ;
  • 最后 , 在 圆 类型中 , 定义两个 成员函数 , 分别根据 半径 求出 周长 和 面积 ;

代码示例 :


// 包含 C++ 头文件
#include "iostream"

// 使用 std 标准命名空间
//		该命名空间中 , 定义了很多标准定义
using namespace std;

class Circle
{
public:
	double r;	// 成员变量 半径
	double p;	// 成员变量 周长
	double a;	// 成员变量 面积

	// 成员方法 设置半径
	void setR(double r1) 
	{
		r = r1;
	}

	// 成员方法 计算圆周长和面积
	void caculate()
	{
		p = 3.14159 * r * 2;
		a = 3.14159 * r * r;
	}

	// 获取圆周长
	double getP()
	{
		return p;
	}

	// 获取圆面积
	double getA()
	{
		return a;
	}
private:
protected:
};


int main() 
{
	// 定义圆对象
	Circle c;
	double r;


	// 提示输入圆半径
	cout << "输入圆半径 :" << endl;

	// 从命令行标准输入得到的数据 到 变量 r 指示的内存空间中
	cin >> r;
	cout << "接收到圆半径 :"<< r << endl;

	// 给 圆 对象 c 设置半径
	c.setR(r);
	// 计算圆 周长 和 面积
	c.caculate();

	// 打印计算结果
	cout << "圆周长为 :" << c.getP() << " 圆面积为 : " << c.getA() << endl;

	
	// 控制台暂停 , 按任意键继续向后执行
	system("pause");
}

执行结果 :

输入圆半径 :
10
接收到圆半径 :10
圆周长为 :62.8318 圆面积为 : 314.159
Press any key to continue . . .

【C++】面向对象编程引入 ( 面向过程编程 | 查看 iostream 依赖 | 面向对象编程 )-LMLPHP
【C++】面向对象编程引入 ( 面向过程编程 | 查看 iostream 依赖 | 面向对象编程 )-LMLPHP
在上述代码中 , 定义了 Circle 类 ,

class Circle
{
	...
}

此时 Circle 是一个数据类型 , 编译器并没有为其分配内存 ;

定义 Circle 对象 c 时 , 才为该 c 对象在 内存中分配内存 , 注意该内存是在 栈内存 中分配内存 ;

	// 定义圆对象
	Circle c;

如果定义 Circle *c 对象 , 则需要为其分配内存 , 该内存是在堆内存中的内存 ;

08-16 23:17