Hi!我是@xiaomeng小孟

今天我们开始学习python的面(yu)向(fa)对(yao)象(dian)

废话不多说,开始!

1.首先:我们先要搞明白什么是面向对象:

面向对象(Object Oriented)是软件开发方法,一种编程范式。面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域。面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物。面向对象是相对于面向过程来讲的,面向对象方法,把相关的数据和方法组织为一个整体来看待,从更高的层次来进行系统建模,更贴近事物的自然运行模式。(以上解释来自百度:面向对象)

估计这个时候,有的人都听懵了,到底啥是面向对象????


(p.s:这个表情怎么跟我刚学的时候一样呢……)

我先上代码:

numbers = input('请输入一个数字:')
if numbers == '1':print('Hi!')

代码里面,用的是 if numbers == 1 ,那为什么要用2个=等于号呢?

我给大家一个通俗易懂的解释吧:

这就与面向对象有关了,因为python要 面对 你输入过来的一个数字或者文字,所以这就是面向对象。

再给大家一句话:

对象都是通过模板(代码)创造出来的

面向对象程序设计(Object Oriented Programming)作为一种新方法,其本质是以建立模型体现出来的抽象思维过程和面向对象的方法。模型是用来反映现实世界中事物特征的。任何一个模型都不可能反映客观事物的一切具体特征,只能对事物特征和变化规律的一种抽象,且在它所涉及的范围内更普遍、更集中、更深刻地描述客体的特征。通过立模型而达到的抽象是人们对客体认识的深化。

面向对象制作一款变形金刚的思路是:对整体的模型进行拆分,然后把部件单独制作浇筑模型,然后不同部件之间留符合标准的接口,然后逐一生产完成后组合起来即可,这时如果要求将两个模型进行合体,那么我们只需要根据合体后的模型需要的且符合接口标准的零件组合起来就好,不用再专门设计模型的浇筑模型了。

面向过程强调的是完成既定目标需要完成哪些步骤,总结完步骤之后,把所有步骤走完也就达到了既定目标了,所以一个目标就是各个步骤的糅合的结果

面向对象强调的是完成既定目标需要哪些条件(比如需要什么物品),之后逐步满足各个条件之后,最后再进行组装合并,达到既定目标。

综合以上的对比,我们可以发现面向对象是先把条件都凑齐了再进行组装,而面向过程总是在上一个步骤的基础上进行合并组装,一步一步完成,这两种的区别在于,当我们需要对目标进行调整时,面向对象中先完成的条件,可以用在需要调整的目标上,但是面向过程不支持这一个,需要重新走完整个步骤,所以面向对象最大的好处就是降低工作的重复率。

简单来说,面向过程是完整的完成一件事,除了第一个步骤没有前步骤的情况,每个一个步骤都有上一个步骤,面向过程之后两个过程,制作物品,组装物品

再给大家举一个栗子:

有一天你想吃鱼香肉丝了,怎么办呢?你有两个选择

1、自己买材料,肉,鱼香肉丝调料,蒜苔,胡萝卜等等然后切菜切肉,开炒,盛到盘子里。

2、去饭店,张开嘴:老板!来一份鱼香肉丝!

看出来区别了吗?这就是1是面向过程,2是面向对象

https://www.jianshu.com/p/7a5b0043b035

读到这里,你是不是明白跟多了呢


2.什么是面向过程?

“面向过程”(Procedure Oriented)是一种以过程为中心的编程思想。这些都是以什么正在发生为主要目标进行编程,不同于面向对象的是谁在受影响。与面向对象明显的不同就是封装、继承、类。简写为POP。(以上解释来自百度:面向过程)

在上面的栗子里,我们已经提到面向过程了。

面向过程的思路是:和浇筑中的失蜡法一样,先按模型要求完整设计一个蜡模型,这个蜡模型是对于当选要求专门定制的,蜡模型完成后可以直接通过浇筑生成符合要求的模型,不需要组合的过程,这时如果要求合体,那就要从头开始设计蜡模型,这个过程不可避免的会重复之前的工作,造成浪费,这其实也暴露面向对象缺乏灵活性,不能根据需求的变化,在原来的基础上快速调整自己,每一次改变都是重头开始。

对于1,2点的总结:

面相对象 = 每一个(拆分)对象 + 面向过程 + 最终组合出来的对象


3.面向过程与面向对象的关系:

其实上面已经说过一点了,不过我还要总结归纳一下

表 1:面向对象和面向过程的特性和优缺点对比
面向对象 面向过程
特性 抽象、继承、封装、多态 功能模块化,代码流程化
优点 易维护、易复用、易扩展、低耦合 性能高,适合资源紧张、实时性强的场合
缺点 性能比面向过程低 没有面向对象易维护、易拓展

版面设计不同:

面向过程的程序设计

面向过程的程序设计的核心是过程(流水线式思维), 过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西。

优点是:极大的降低了写程序的复杂度,只需要顺着要执行的步骤,堆叠代码即可。

缺点是:一套流水线或者流程就是用来解决一个问题,代码牵一发而动全身。

应用场景:一旦完成基本很少改变的场景,著名的例子有Linux內核,git,以及Apache HTTP Server等。

面向对象的程序设计

优点是:解决了程序的扩展性。对某一个对象单独修改,会立刻反映到整个体系中,如对游戏中一个人物参数的特征和技能修改都很容易。

缺点是:可控性差,无法向面向过程的程序设计流水线式的可以很精准的预测问题的处理流程与结果,面向对象的程序一旦开始就由对象之间的交互解决问题,即便是上帝也无法预测最终结果。

应用场景:需求经常变化的软件,一般需求的变化都集中在用户层,互联网应用,企业内部软件,游戏等都是面向对象的程序设计大显身手的好地方。

在python 中面向对象的程序设计并不是全部。

面向对象编程可以使程序的维护和扩展变得更简单,并且可以大大提高程序开发效率 ,另外,基于面向对象的程序可以使它人更加容易理解你的代码逻辑,从而使团队开发变得更从容。

链接:面向过程程序设计与面向对象程序设计有何不同?_段远山-CSDN博客_面向对象程序设计和面向过程程序设计的区别

4.总结

作为一名Python爱好者,学会面向过程与面向对象是极其重要的

本篇文章集合了多篇文章的精华,还有博主的理解方式,学习方法

如果你喜欢这篇文章,就给我点个赞+关注吧

下期我们分享:Python轰炸好友邮箱

Python-到底啥是面向对象&面向过程?相关推荐

  1. python 面向对象 面向过程_python3全栈开发-面向对象、面向过程

    一. 什么是面向对象的程序设计及为什么要有它 1.面向过程 面向过程的程序设计:核心是过程二字,过程指的是解决问题的步骤,即先干什么再干什么......面向过程的设计就好比精心设计好一条流水线,是一种 ...

  2. [python]两种编程思维--面向过程和面向对象

    例如:eg:炒一份西红柿鸡蛋 一.面向过程 面向过程的编程思维,如下 二.面向对象 制作一台炒菜机器人,然后告诉机器人做一道西红柿炒鸡蛋.在这里,我们直接面对的是机器人,而非炒菜的过程,所以这里机器人 ...

  3. Lawliet|面向对象/面向过程

    1.面向对象的程序设计 对象object --包含属性和行为,通过描述属性和行为来描述一个对象,是程序的基本单元. 对象=属性(特征)+方法(行为) 类class --具有相同属性和方法的对象的集合, ...

  4. 【python】利用python制作通讯录管理系统(面向过程)

    管理人员档案,管理学生信息,实现录入和查找功能,方便人员管理 下面就教大家如何利用python编写这一系统⬇⬇⬇ ------------------------------------------- ...

  5. python面向对象还是过程_Python学习————面向对象和面向过程

    一.面向过程和面向对象 面向过程: 核心是"过程"二字 过程的终极奥义就是将程序流程化 过程是"流水线",用来**分步骤解决问题**的 面向对象: ​ 核心是& ...

  6. php是面向对象还是过程,PHP面向过程和面向对象

    php程序编写分为面向过程和面向对象.两者在功能实现上没有区别,但是在代码编写上区别很大,面向过程的代码很乱,不易管理,而面向对象把常用的功能封装为一个类,这样代码清楚多了. 下面举个小例子说明一下: ...

  7. 浅谈面向对象和面向过程

    1.面向对象   面向过程和面向对象都是对软件分析.设计和开发的一种思想,它指导着人们以不同的方式去分析.设计和开发软件.早期先有面向过程思想,随着软件规模的扩大,问题复杂性的提高,面向过程的弊端越来 ...

  8. 带你理解面向过程与面向对象

    START WeChat Applet(公众号) :Java空巷 一.前言 如果你总是对面向对象和面向过程傻傻分不清,这篇博客尽量会用通俗的方式来讲解. 二.面向过程 概念 面向过程是一种以过程为中心 ...

  9. 深度之眼(九)——python函数--面向过程的编程

    文章目录 4.1 函数的定义及调用 4.1.1 为什么要调用函数 4.1.2 函数的的定义及调用 4.1.3 参数传递 4.1.4 函数体与变量作用域 4.1.5 返回值 4.1.6 几点建议 4.2 ...

最新文章

  1. 【Java 并发编程】线程池机制 ( 线程池阻塞队列 | 线程池拒绝策略 | 使用 ThreadPoolExecutor 自定义线程池参数 )
  2. Unity使用协程技术制作倒计时器
  3. tiny4412u-boot烧写及根文件系统制作(不进入终端问题)
  4. Revit Family API 找到实体某一方向上的面。
  5. java char 计算_经典Java面试题之Java中Char类型的运算
  6. 如何做一个mysql数据库_如何创建一个简单的mysql数据库
  7. 2015软件测试面试题第二篇
  8. 并查集路径压缩_并查集简单教学
  9. 万里牛B轮融资过亿,电商SaaS究竟有多吸金?
  10. 通过js检测当前浏览器是否是无头浏览器
  11. HTTP长连接和短连接
  12. 从内存池到连接池 老码农眼中的资源池
  13. YTU oj 3272: 公民身份号码
  14. PySpark+Prophet
  15. 使用git提交到仓库使用commit指令出现问题Your branch and 'origin/master' have diverged,
  16. J2EE基础之自定义标签2
  17. 年轻人频繁辞职的主要原因是什么呢?
  18. 看了不会后悔的——SQL 面试题库
  19. 专访王颖泽:国产数据库开源之路如何可控?
  20. 创建数据库是列名无效咋办_列创建后,sql server上的列名无效

热门文章

  1. python智慧树判断题_智慧树_Python数据分析与数据可视化_判断题答案
  2. java early eof_idea克隆项目,git clone出现early EOF问题的解决方案
  3. 2021澳洲大学计算机专业排名,澳洲纽卡斯尔大学UoN计算机科学Computer Science专业排名第201-250位(2021年THE世界大学商科排名)...
  4. 夫妻之间赠与房产,没过户前可以反悔
  5. 【原创】公司自研缓存系统UPU的总结
  6. 抖音qu水印采集下载源码 附带成品软件
  7. MySQL表锁了如何解锁
  8. Y7000 2018版(I7-8650H 1050T)黑苹果安装攻略附带工具安装包
  9. qlv视频格式怎么转换成常用的mp4格式
  10. 「 生活太重要了,不能太过严肃 」:生命游戏之父、最神奇的数学家John Conway...