分享

Day4 第12关、面向过程和面向对象

 deerwjj 2019-03-04

第十二关

接下来的两关,我们会接触Python中非常重要的概念——类和对象

【类】是【对象】的母板,得先有了类,我们才能制造各种“对象”。就像我们先有了产品图纸,才能制造各种产品一样。

这一关我们先聚焦学习【类】,然后在下一关学习【类与对象】。我们分四个步骤来学习【类】:

###

###

我们会学习到,给类方法传参的知识;同时还有增加或修改类属性的两种途径,一种是从内部,用类方法去增加/修改;另一种是从外部,用类.变量 = xx直接增加/修改类属性。

###

这一关知识量会有点多,为了让大家活学活用,课程后面还会指导大家完成一个小型的课堂实操,综合使用这一关我们学过的所有知识呢~

面向过程和面向对象

今天,我们来聊聊两种编程思想:面向过程和面向对象。

###

Python虽然是解释型语言,但从设计之初就已经是一门面向对象的语言,对于Python来说一切皆为对象。

###

正因为如此,在Python中创建一个类和对象是很容易的,当然如果习惯面向过程或者函数的写法也是可以的,Python并不做硬性的限制。

###

那么,面向过程和面向对象指的是什么呢?

###

“面向过程”是一种以“事件”为中心的编程思想。就是分析出解决问题所需的步骤,然后用函数把这些步骤实现,并按顺序调用,就好比设计一条流水线,是一种机械式的思维方式。

###

“面向过程”的优点是能将复杂的问题流程化,进而简单化,缺点是扩展性差。

###

”面向对象“是以“对象”为中心的编程思想。”面向对象“的优点是可扩展性高,缺点是编程复杂度高。

###

举个生活中的例子,比如让你编写一个机械手臂来打开冰箱取东西的程序。

###

那么面向过程编写的代码是这样的:

1.函数f1(机械右手,冰箱):机械右手打开冰箱。

2.函数f2(机械左手,要取的东西):机械左手拿出东西。

3.函数f3(机械右手,冰箱):机械右手关上冰箱。

###

而面向对象是这样的:

首先定义一个对象——机械手臂,机械手臂具有两个属性,即机械左手和机械右手。接着写出三个方法,即打开冰箱,拿出东西,关上冰箱。

###

1.机械右手调用方法——打开冰箱

2.机械左手调用方法——取出东西

3.机械右手调用方法——关上冰箱

###

通过对比以上两种实现机械手臂来打开冰箱取东西的方式,我们可以看出,“面向对象”和“面向过程”的区别:

###

“面向过程”就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。

###

再具体点说,就是程序从上到下一步步执行,一步步从上到下,从头到尾的解决问题 。基本设计思路就是程序一开始是要着手解决一个大的问题,然后把一个大问题分解成很多个小问题或子过程,这些子过程再执行的过程再继续分解直到小问题足够简单到可以在一个小步骤范围内解决。

###

而“面向对象”是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描述某个事物在整个解决问题的步骤中的行为。

###

下面,我们通过具体代码来更加直观地了解两者的区别。

###

假设我们有一辆汽车,我们知道它的速度(60km/h),以及A、B两地的距离(100km)。要算出驾驶这辆车从A地到B地花费的时间。

###

这是一道小学数学题,如果用“面向过程”和“面向对象”的方法来计算,就是图片中所展示的代码:

###

###

看上去似乎面向对象没有比面向过程更简单,反而写了更多行代码。但是,如果我们让题目再稍稍复杂一点。

###

假设我们又有了一辆更好的跑车,它的速度是150km/h,然后我们除了想从A到B,还要从B到C(距离200km)。要求分别知道这两种车在这两段路上需要多少时间。那么代码就是:

###

###

###

可以看出,如果只是写一些简单的脚本,去做一些一次性任务,用面向过程的方式是极好的,但如果你要处理的任务是复杂的,且需要不断迭代和维护的, 那还是用面向对象最方便。

###

像用户需求经常变化,互联网应用,游戏这些应用场景往往会用到面向对象的方式,而像登录注册程序这类则用面向过程。

###

总的来说,两种不同的编程思想都可以实现相同的功能, 但是面向对象的实现方式更加贴近人类生活 (比如: 公司的各个部门, 学校的各个院校等)。

###

在程序的编程中,我们把项目中的每个不同的个体看成整体功能的每一个对象, 对象中再包含其属性和方法, 让对象对其属性和方法进行封装, 这样也更加利于后期扩展和维护。

###

好了,今天的晚分享就到这里,大家加油吧~

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多