这篇文章来说下面向对象编程!
那什么是面向对象编程呢?
介绍面向对象之前,那必须先说一下面向过程。
什么是面向过程呢?
面向过程(Procedure-Oriented Programming,简称POP)是一种编程模型,由一系列要执行的计算步骤组成,通常采用自上而下、顺序执行的方式。
面向过程的编程语言包括:C、Fortran、Pascal、Basic等。
下面来看一个简单的例子:
咱们以把大象放进冰箱为例,面向过程的方式分为三步:
1.打开冰箱
2.把大象放进冰箱
3.关闭冰箱
图形化表示一下,如下图所示:
![](https://i-blog.csdnimg.cn/blog_migrate/45985d69c25a50dec2009adfcb5d3805.png)
转化为代码大致是如下形式:
#include <stdio.h>
// 打开冰箱函数
bool openRefrigerator()
{
//........
}
// 放进大象函数
bool pushElephant()
{
//........
}
// 关闭冰箱函数
bool closeRefrigerator()
{
//......
}
int main()
{
//........
if(openRefrigerator()) // 判断是否可以打开冰箱
{
pushElephant(); // 放进大象
closeRefrigerator(); // 关闭冰箱
}
//.......
}
接下来步入正题,说下面向对象。
面向对象编程(Object-oriented programming,简写:OOP)是一种计算机编程模型,它围绕数据或对象而不是功能和逻辑来组织软件设计,更专注于对象与对象之间的交互,对象涉及的方法和属性都在对象内部。说的更底层一点就是面向对象是一种依赖于类和对象概念的编程方式。
面向对象的编程语言包括:C++、Java、Python、C#以及JavaScript等。
类:是相同种类对象的抽象,是它们的公共属性。
对象:对象是类的实例。
面向对象将一个事物描述为一个对象,这个对象包括各种属性和方法,例如上面把大象装进冰箱的例子,冰箱的属性包括:长、宽、高、温度等,方法有:打开、关闭、存储等,这些属性和方法都属于这个对象。
在现实生活中,一座楼、一辆车、一个班级、一个人等都可以对象化。
同样,也把大象放进冰箱为例进行说明,面向对象的方式为:
冰箱是一个对象,大象也是一个对象。冰箱有自己的方法,打开、存储、关闭,有自己的属性:长、宽、高等。大象也有自己的方法,吃、走路等,有自己的属性:体重、高度、体积等。
可以用下图来表示:
转化为代码就是:
#include <iostream>
using namespace std;
class Elephant
{
private :
int length; // 长
int weight; // 重量
public :
// 吃
bool eat()
{
//......
}
};
class Refrigerator
{
private :
int length; // 长
int width; // 宽
int height; // 高
public :
// 打开冰箱
bool openRefrigerator()
{
//........
}
// 放进大象
bool pushElephant(Elephant elephant)
{
//........
}
// 关闭冰箱
bool closeRefrigerator()
{
//........
}
};
int main()
{
Refrigerator ref; // ref 冰箱对象
Elephant ele; // ele 大象对象
if(ref.openRefrigerator()) // 打开冰箱
{
ref.pushElephant(ele); // 放进大象
ref.closeRefrigerator(); // 关闭冰箱
}
}
最后,来看一下面向过程和面向对象的区别,如下所示:
(1)安全性
面向对象比面向过程安全性更高,面向对象将数据访问隐藏在了类的成员函数中,而且,类的成员变量和成员函数都有不同的访问属性。而面向过程并没有合适的方法来隐藏程序数据。
(2)程序设计上
面向过程通常将程序分为一个个的函数,而面向对象编程中通常使用一个个对象来,函数通常是对象的一个方法。
(3)过程
面向过程通常采用自上而下的方法,而面向对象通常采用自下而上的方法。
(4)程序修改
面向对象编程更容易修改程序,更容易添加新功能。
最后,给大家留一个小问题:猜一猜 Go 是面向对象 or 面向过程 ?