再看python,对于面向对象编程与面向过程编程的理解
由于学校免费给我们开放了一个python的学习课程,今天看到的类这一块的知识讲到了面向对象,于是对比之前用python做的一点小东西的过程,发现之前一直是以面向过程来实现功能的,看来面向对象编程的思想还并未深入我心(学的时候虽然理解了,但是长时间没用、实践没跟上),如果不是看这个课程,我恐怕还没反应过来什么才是面向对象编程。于是今天就在这里记录一下自己现在的理解。
面向过程编程。顾名思义,就是分析实现一个功能需要哪些步骤,首先考虑的就是一个顺序问题,先做什么,然后做什么。这里的重点就是对于各个步骤的分析和实现。
面向对象编程。面向对象,对于我们这种没有什么概念的初学者来说还是比较难以理解。这里的对象我的理解就是:对于一个“存在”的抽象表示,这个“存在”可以是你能想到的任何东西,在代码中可以是类、变量和函数等。面向对象编程在程序中就是实现功能时先不考虑步骤是怎样的,而是先分析能用到哪些对象,也就是分析要创建哪些类,然后再考虑每个类有哪些属性、需要实现什么方法
接下来就具体展示一下两种编程方法的代码
面向过程:
#有一种动物叫鲲,它能唱会跳还会打篮球
def animal(name):
print("我是一只%s"%name)
def sing():
print("我会唱歌")
def dance():
print("我会跳舞")
def playBasketball():
print("我还会打篮球")
name="鲲"
animal(name)
sing()
dance()
playBasketball()
运行结果:
面向对象:
#有一种动物叫鲲,它能唱会跳还会打篮球
class Animal():
name = " "
def __init__(self,name):
self.name=name
def sing(self):
print("我会唱歌")
def dance(self):
print("我会跳舞")
def playBasketball(self):
print("我还会打篮球")
kun = Animal("鲲")
print("我是一只%s"%kun.name) #为举例调用属性这样写
kun.sing()
kun.dance()
kun.playBasketball()
运行结果:
过观察代码发现面向过程编程是根据要实现的功能,先后创建了一个个函数,最终通过调用不同的函数来实现各种功能,也就是需要实现什么功能,就写对应的函数。
而面向对象编程,不需要考虑实现功能的步骤,而是根据功能来设计类,定义其中的属性和方法,最终通过实例化一个对象(代码中实例为:kun)来调用属性与方法。
虽然上面的例子中面向过程与面向对象的代码区别看起来不是很大,但是面向对象编程中的类方法,传递参数比普通函数要简单的多,也不用考虑全局变量与局部变量,直接在类中使用属性即可完成。当项目越来越大时,需要的参数会越来越多,面向对象编程会比面向过程编程更优越。
除此之外,面向对象编程还有更多的优越性,比如代码拓展性,可维护性等方面,因为有了类的约束,代码更有结构感,也更容易理解。
最后总结一下就是
面向对象编程 | 面向过程编程 | |
---|---|---|
特点 | 以对象为中心 | 以过程为中心 |
内容 | 类的创建和调用 | 函数的创建和调用 |
程序组成 | 一组对象的集合 | 一系列过程的集合 |
以上仅个人理解与感悟,总的来说感觉讲述的还是比较浅,今日就做一个记录吧,若是今后再有感悟再来修改吧