Python中什么是面向对象-封装

栏目: Python · 发布时间: 5年前

内容简介:前面我们已经学过了 面向过程我们知道,面向过程 的时候,我们的关注点是 步骤面向过程做事,就是把 一件事情 分割为多个步骤, 然后依次去完成每一个步骤

文字有点长,对于不想看文字的朋友,可以去这里看视频,内容和这个文字一样的,视频可能更好理解

https://www.piqizhu.com/v/yjB...

回顾面向过程

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

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

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

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

那么,

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

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

面向对象概述

所谓面向对象,

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

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

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

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

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

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

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

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

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

面向对象-封装

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

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

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

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

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

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

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

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

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

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

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

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

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

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

再来举个例子

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

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

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

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

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

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

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

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

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

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

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

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

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


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

数学建模(原书第5版)

数学建模(原书第5版)

[美] Frank R. Giordano、[美] William P.Fox、[美] Steven B.Horton / 叶其孝、姜启源 / 机械工业出版社 / 2014-10-1 / 99.00元

《华章数学译丛:数学建模(原书第5版)》旨在指导学生初步掌握数学建模的思想和方法,共分两大部分:离散建模和连续建模,通过本书的学习,学生将有机会在创造性模型和经验模型的构建、模型分析以及模型研究方面进行实践,增强解决问题的能力。 《华章数学译丛:数学建模(原书第5版)》对于用到的数学知识力求深入浅出,涉及的应用领域相当广泛,适合作为高等院校相关专业的数学建模教材和参考书,也可作为参加国内外数......一起来看看 《数学建模(原书第5版)》 这本书的介绍吧!

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

MD5 加密
MD5 加密

MD5 加密工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具