什么是面向对象编程?(以python为例)
概述
如图,面向对象编程,望文生义呢,就是找一个对象,然后在她或他面前编程(✿◡‿◡)
根据小编的推测,图中的黑板上应该写的是:
#include <iostream>
using namespace std;
int main(){
cout<<"hello world";
return 0;
}
//out: hello world
没错,这就是标准的C++
代码。C
语言是面向过程编程,而C++
是面向对象编程。
拿上方的代码来说,cout
是标准输出流,在C++
中输出流被定义为类,所以就涉及到了面向对象编程。
当然,本文不讲C++
,而是拿python
来讲解什么是面向对象编程。
例证
面向对象是相对面向过程而言的。面向过程编程注重过程,即程序的每一步要执行什么;面向对象编程的核心在对象,如对象有哪些属性和方法,对象间如何通讯。我们通过一个简单的例子来了解面向对象编程和面向过程编程的区别。
举个栗子
完成一个任务:计算矩形的面积。
面向过程
- 定义计算矩形面积的函数
- 给定矩形的长和宽
- 输出矩形面积
def main(w, h):
area = w*h
print(area)
main(2, 3)
# out: 6
面向对象
- 定义矩形类(类属性:长、宽;类方法:计算面积)
- 给定长和宽,创建矩形对象(也就是类的实例化)
- 上述矩形对象调用计算面积的方法
class Rectangle():
def __init__(self, w, h):
self.w = w
self.h = h
def main(self):
area = self.w*self.h
print(area)
Rectangle(2, 3).main()
对比
对比 | 优点 | 缺点 |
---|---|---|
面向过程 | 性能比面向对象高 | 没有面向对象易维护、易复用、易扩展 |
面向对象 | 易维护、易复用、易扩展 | 性能比面向过程低 |
选择
对于简单的问题,一般采用面向过程即可解决。而复杂的问题,采用面向对象的较多。
拿python
来说,50行以内的代码,一般不需要创建类和对象就能完美地解决问题。而超过100行的代码,如果你不使用类和对象,只使用函数,就会发现函数之间要不断的调用和传参,所以实现起来就变得很复杂,没有面向对象来得简单。
引用
https://baike.baidu.com/item/iostream/2850567?fr=aladdin