Python中 什么是面向过程?面向对象的第一个特性:封装

 

面向过程概述

所谓面向过程,及关注过程

面向的字面意思就是 关注、着眼于、面对着

那么什么是过程呢? 过程就是过程,也可以理解为步骤

当我们做某件事情的时候,如果关注过程(站在过程的角度来做)

那么我们就会把这件事,分解为多个小过程(步骤)

比如,我们打算捏一个泥娃娃,那么,捏一个泥娃娃则是本次我们要解决的问题

站在面向过程(面向步骤)的角度来说, 我们可以把捏泥娃娃分隔为以下几个步骤:

  1. 准备泥
  2. 准备水
  3. 混合搅拌
  4. 捏头
  5. 捏身体
  6. 捏两只手
  7. 捏两只脚
  8. 拼接身体

我们这里有8个大的步骤,当然每个大步骤还有很多小步骤,这里暂且不那么细致

你可以发现,面向过程的这种解决问题的思路,和我们现实中解决问题的思路 是差不多的,我们几乎天天都会用到

面向过程并不神秘, 我们 分析事物的关注点,在于每一个过程,我们会把复杂的事情,分解为,多个简单的步骤, 然后一个步骤一个步骤的 去完成

面向过程代码实战

接下来 我们以面向过程的思路,来写一点代码, 我们的任务是,用python代码制作一个玩具鸭子

首先分析,制作一个鸭子,需要哪些步骤呢?

  1. 翅膀
  2. 身体
  3. 拼接到一起

那么我们的代码如下:

Python代码虽然可以使用中文作为变量名,但不推荐,不过本次为了便于大家理解,我会使用中文汉字作为变量名

def 制作鸭头():
    print("鸭头-开始制作")
    pass # 这里是详细步骤,暂时省略
    print("鸭头-制作完毕")
    return "鸭头"

def 制作鸭翅膀():
    print("鸭翅膀-开始制作")
    pass # 这里是详细步骤,暂时省略
    print("鸭翅膀-制作完毕")
    return "鸭翅膀"

def 制作鸭身体():
    print("鸭身体-开始制作")
    pass # 这里是详细步骤,暂时省略
    print("鸭身体-制作完毕")
    return "鸭身体"

def 制作鸭脚():
    print("鸭脚-开始制作")
    pass # 这里是详细步骤,暂时省略
    print("鸭脚-制作完毕")
    return "鸭脚"

def 拼接身体(鸭头, 鸭翅膀, 鸭身体, 鸭脚):
    print("拼接鸭子的身体-开始")
    pass # 这里是详细步骤,暂时省略
    print("拼接鸭子的身体-完毕")
    return "我是一个完整的鸭子"

好了, 我们已经用代码把制作鸭子梳理成了5个步骤 那么我们开始让代码运行起来吧

鸭头 = 制作鸭头()
鸭翅膀 = 制作鸭翅膀()
鸭身体 = 制作鸭身体()
鸭脚 = 制作鸭脚()
小鸭子 = 拼接身体(鸭头,鸭翅膀,鸭身体,鸭脚)

print(小鸭子)

现在,我们成功的制作了一只鸭子

你可以发现,我们把制作鸭子,分解成了几个步骤,我们按照规划好的步骤,按照顺序,一个步骤一个步骤的推进,最终完成了鸭子的制作

当然,实际情况中,事情往往不会那么简单,往往会有很多角色的参与, 每个角色又会完成多个步骤,于是,后来就在面向过程的基础上,演化出了 面向对象, 关于面向对象,先介绍第一个特性:封装!

封装

前面我们已经学过了 面向过程

我们知道,面向过程 的时候,我们的关注点是 步骤

面向过程做事,就是把 一件事情 分割为多个步骤, 然后依次去完成每一个步骤

这样做事可以让我们的事情变的很明朗,不会弄乱

那么,

  1. 既然有了面向过程,为什么还要跑出来一个面向对象呢?
  2. 面向对象是什么东西呢?有啥好处?
  3. 他和面向过程有啥关系呢?他们两个我们应该选谁呢?

带着这么3个问题,开始本节课的讲解

面向对象概述

所谓面向对象,

意思就是,我们的关注点 是对象, 而非过程(步骤)

那么,这里的对象是啥意思呢?

要回答这个问题, 就必须先回到实际的案例中去讲解

上节课的我们的案例是制作一个玩具鸭子,我们的关注点是制作鸭子的每一个步骤

如果我们只是捏个泥娃娃,或者制作一个简单的玩具鸭子, 使用面向过程,是没有多大问题的

但是如果我们面对的一个复杂的事情呢?

有一家玩具公司,这家玩具公司不止生成玩具鸭,还生产玩具狗,玩具猫,玩具猫头鹰, 。。。。。等等 100多种玩具

Python中 什么是面向过程?面向对象的第一个特性:封装

如果按照之前的 面向过程思路,那么我们的代码 会很长, 很杂乱, 那 怎么办呢?

这时候就需要使用面向对象的思路来解决问题了

面向对象-封装

于是某一天,,这家玩具公司有了一台鸭子制造机器,

Python中 什么是面向过程?面向对象的第一个特性:封装

这台机器,当我们按下开关后,它就会立刻开始制作玩具鸭子,

此刻,我们不再去关注先做脚,还是先做头, 还是身体,

这台机器会帮我们搞定所有步骤, 我们只需要在机器的出口处,等着完整的玩具鸭子出来就可以了

这时候,我们的关注点,就是这台机器本身,而不是制作鸭子的某一个步骤

这台机器,此刻就是一个对象(整体),此刻,我们就开始了面向对象

可能到这里大家还是不明白,还是有点糊涂,这是正常的, 请允许我再来解释解释

这台鸭子制造机器,包含了 以前制造鸭子的所有步骤,它把制作鸭子的步骤,封装在了机器内部, 留给我们的,只有一个开关,我们只需要按开关,就可以开始制造鸭子

而以前的面向过程,我们需要关注制造鸭子的细节,需要先制作鸭头,然后制作翅膀,然后....

但是,当我们有了一台封装了详细步骤的机器,只需要关心什么时候按开关,别的都不用关心

这就是面向对象的第一个特性(好处):封装

封装特性,可以把复杂的信息,流程,包起来,内部处理,

让使用者不去关注细节, 只关心什么时候按开关,

如此一来当我们要制作鸭子的时候,只要按开关就可以了,是不是省心很多??

再来举个例子

比如,某一天,你以程序员的身份,去某家公司工作,老板让你开发一个网站,

Python中 什么是面向过程?面向对象的第一个特性:封装

此刻,老板就是面向了对象,这里的对象,在老板眼里 就是你, 因为老板只要把任务丢给你,他不关注你用什么电脑写代码,也不关注你用什么输入法,不会关注你写代码的时候听什么歌,不会关注你写代码的时候是穿拖鞋好,还是光脚丫好, 更加不会关注你今天穿什么颜色的内裤 写代码效率更高;

但是在你自己的角度,你就是面向过程的,你会关心自己用哪个电脑写代码更舒服, 你会关注自己用哪个输入法效率更高,你还会关注写代码应该听什么歌.. 等等

Python中 什么是面向过程?面向对象的第一个特性:封装

而,当你写代码的时候,你使用的电脑,对于你而言,也是一个封装好的对象, 当你在键盘上按下字母A, 你不会关注电脑内部究竟发生了 多么复杂的化学反应, 你只关注,我按了键盘上的字母A,电脑就要显示一个A在屏幕上

Python中 什么是面向过程?面向对象的第一个特性:封装

同样的道理,我们用的手机,也是一个封装的很好的对象,我们想打电话给某人,输入对方的号码, 点击拨号就可以接通对方, 我们不会关注按下每个数字以后,手机内部发生的复杂原理,更加不会关注手机是怎么连接基站的,也不会关注手机内部是怎么与基站进行信号交换的, 我们的关注点就是, 我要打电话给 张三,要和他说说话,其他复杂的事情手机会帮我搞定

Python中 什么是面向过程?面向对象的第一个特性:封装

再举例, 我们玩的手机游戏、电脑游戏,也算是一个对象,在游戏里,当我们按下技能发射按钮,我希望能发射一个技能出去, 我不关注按下按钮后,手机是怎么检测到我的手指的,也不会关注,手机是怎么把技能光环显示在屏幕上的,更加不会关注,敌人死了以后,手机究竟给服务器发送了什么信息, 我只关心, 当我按了按钮,就发射技能,当敌人死了,他就倒下并且无法再攻击我

你现在明白了吗, 程序员、工程师,把复杂的东西封装起来,留给我们的,只是非常简单的操作按钮, 可以让我们做事情 更加高效,更加快乐

Python中 什么是面向过程?面向对象的第一个特性:封装

而那家玩具公司,有100多种玩具,原本需要关注几千个生产步骤,如今,有了面向对象,只要把每个玩具的制作流程封装成机器,然后只关注100个机器的按钮就可以了,

Python中 什么是面向过程?面向对象的第一个特性:封装

如果这家公司的老板还想再简化,那就雇佣100个员工来负责这100台机器的运行, 然后给这100个员工雇佣1个主管

而老板自己,则只需要面对主管一个人就行了,你看,经过层层封装,最后多简单啊

对象 可以是我们生活中任何的 人、事、物

而几乎所有对象都具有了封装的特性,你能想到什么对象没有封装的特性吗?

以上,这就是面向对象的第一个特性, 封装

感谢大家阅读,喜欢的给小编一个关注,多多收藏和转发,小编也有很多学习资料分享给大家,关注小编,之后私信[学习]即可

猜你喜欢

转载自blog.csdn.net/ITjianshuzhai/article/details/106503819