废话不多说,开始!
面向对象(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
“面向过程”(Procedure Oriented)是一种以过程为中心的编程思想。这些都是以什么正在发生为主要目标进行编程,不同于面向对象的是谁在受影响。与面向对象明显的不同就是封装、继承、类。简写为POP。(以上解释来自百度:面向过程)
在上面的栗子里,我们已经提到面向过程了。
面向过程的思路是:和浇筑中的失蜡法一样,先按模型要求完整设计一个蜡模型,这个蜡模型是对于当选要求专门定制的,蜡模型完成后可以直接通过浇筑生成符合要求的模型,不需要组合的过程,这时如果要求合体,那就要从头开始设计蜡模型,这个过程不可避免的会重复之前的工作,造成浪费,这其实也暴露面向对象缺乏灵活性,不能根据需求的变化,在原来的基础上快速调整自己,每一次改变都是重头开始。
面相对象 = 每一个(拆分)对象 + 面向过程 + 最终组合出来的对象
其实上面已经说过一点了,不过我还要总结归纳一下
面向对象 | 面向过程 | |
---|---|---|
特性 | 抽象、继承、封装、多态 | 功能模块化,代码流程化 |
优点 | 易维护、易复用、易扩展、低耦合 | 性能高,适合资源紧张、实时性强的场合 |
缺点 | 性能比面向过程低 | 没有面向对象易维护、易拓展 |
面向过程的程序设计
面向过程的程序设计的核心是过程(流水线式思维), 过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西。
优点是:极大的降低了写程序的复杂度,只需要顺着要执行的步骤,堆叠代码即可。
缺点是:一套流水线或者流程就是用来解决一个问题,代码牵一发而动全身。
应用场景:一旦完成基本很少改变的场景,著名的例子有Linux內核,git,以及Apache HTTP Server等。
面向对象的程序设计
优点是:解决了程序的扩展性。对某一个对象单独修改,会立刻反映到整个体系中,如对游戏中一个人物参数的特征和技能修改都很容易。
缺点是:可控性差,无法向面向过程的程序设计流水线式的可以很精准的预测问题的处理流程与结果,面向对象的程序一旦开始就由对象之间的交互解决问题,即便是上帝也无法预测最终结果。
应用场景:需求经常变化的软件,一般需求的变化都集中在用户层,互联网应用,企业内部软件,游戏等都是面向对象的程序设计大显身手的好地方。
在python 中面向对象的程序设计并不是全部。
面向对象编程可以使程序的维护和扩展变得更简单,并且可以大大提高程序开发效率 ,另外,基于面向对象的程序可以使它人更加容易理解你的代码逻辑,从而使团队开发变得更从容。
链接:https://blog.csdn.net/weixin_45151795/article/details/105714391
@文章作者: 小孟
@文章代码审核: 小于派派