面向过程、面向函数、面向对象的区别浅谈
Python的面向过程、面向函数、面向对象的区别浅谈
转自--猎奇古今,加上其他
有人之前私信问我,python编程有面向过程、面向函数、面向对象三种,那么他们区别在哪呢?
面向过程就是将编程当成是做一件事,要按步骤完成!
比如煮咖啡这件事,先拿一定量的咖啡豆,然后磨成粉末,再倒入咖啡机,等待几分钟,就煮好了咖啡。大概过程是这样的
整个过程是按步骤一步一步执行,最终达到目标!
面向函数呢,就是将编程分成N件事情,分配每件事情为一个函数,然后要按步骤执行函数完成!
同样是上面的例子,我们可以这样实现
分解整个任务,执行每个单独小任务,该哪个任务执行,就通知对方即可,执行的过程呢,已经提前封装在函数内了!
面向对象就不一样了,将整个任务封装成一个大的类,在这个类里面详细分解执行每个步骤,只需要执行类就可以完成任务
还以上面例子来说,面向对象就是我不再自己煮咖啡了,而且先设计一个机器人,告诉它煮咖啡的每个步骤(这里注意,你可以使用别人机器人提前设定好的程序哦),然后放在一边,当我想煮咖啡的时候,只需要给机器人一个指令,就自动煮好一杯咖啡了!在代码中是这样的
只需要告诉机器人,去煮咖啡,一会机器人会自动将咖啡煮好并报告结果!
总结
面向过程:需要你自己去一步一步的执行
面向函数:也是需要自己去一步一步执行,只是执行的过程已经提前设定好了
面向对象:让机器人去执行 ,因为已经设定好执行步骤,你只需等待结果就好了
因此,在我看来,面向过程和对象,是自己在干活,面向对象,是先创造机器人,然后让机器人去干活。
站在计算机程序角度来讲,面向过程(函数)和面向对象的本质理解为:
面向过程(函数)的程序设计把计算机程序视为一系列的命令集合,即一组函数的顺序执行。为了简化程序设计,面向过程把函数继续切分为子函数,即把大块函数通过切割成小块函数来降低系统的复杂度。
而面向对象的程序设计把计算机程序视为一组对象的集合,而每个对象都可以接收其他对象发过来的消息,并处理这些消息,计算机程序的执行就是一系列消息在各个对象之间传递。
总的来说:面向对象是将事物高度抽象化,面向对象必须先建立抽象模型,之后直接使用模型就行了;面向过程是一种自顶向下的编程!
本人认识:
第一,研究考察的基本单元(粒度)及其特性,命令,函数,还是对象?第二,如何使用这些粒度单元,让他们相互作用,谁先谁后的调度;第三,要看实际业务与哪个粒度比较接近,不要硬套,否则就如拿着java搞汇编一样,谁蛋疼谁知道。还有其他范式,如声明式,响应式。
进一步:
命令范式(脚本过程),就是将各种单词组成一段话。
函数式,你拿了一个插排,开启开关(输入参数:电压220伏特),打开电饭锅(输入参数:15min等),盛入饭碗;每个步骤都用函数传入参数完成,这个结构较松散,插排不一定要跟电饭锅有个特别的关系。你说要搞个什么专门做饭系统之类,就像oop了,插排就专有了,它与电饭锅关系就紧密了,都属于做饭系统内部成员。
面向对象(合适的对象具有较好内聚性),给你一台机器(对象)让它干活,你需要打开电源,按下制作命名,然后按下结束。
声明式,如sql, 把要干的活用个句子描述好了就行了。
响应式比oop更随性了,直接发一个短信(如帮我把这事弄一下。。)过去对方就帮你干活了,其他的你根本不用管。
这些基本研究考察单元的特性决定了: 当基本单元构建完成之后如何重用(所谓重用就是在不同地方多次使用)这些代码,如果你有对象你就直接使用对象类;如果你的基本单元是函数,那么你重用的只是函数,否则不能重用就要在不同地方重写了!若,你的基本单元是命令,那么别处的你似乎只能复制代码了,纳尼?若你需要的是各种服务类似的,比如点外卖,你只要,再点击一下,我要了。。。
正是这些状况,各种编程方式就有不同的性质表现和结构组成,正所谓动机决定表现,总体运行机理决定样本一样。各自范式酌情恰当使用才是最牛,硬拗勉强未必好过。。
也有更多的空间划分隔离和状态保持
转载于:https://www.cnblogs.com/wdmx/p/9999420.html
面向过程、面向函数、面向对象的区别浅谈相关推荐
- C语言面向过程与C++面向对象
C语言面向过程与C++面向对象 一.面向对象与面向过程的区别 面向过程是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了:面向对象是把构成问题事务分解成 ...
- 对比面向过程方法和面向对象方法的优劣(全)
对比面向过程方法和面向对象方法的优劣(全) 前言: 面对这个问题,我们首先能想到两个代表性的语言C/C++,亦或是Java.区别大,优劣也区别明显.我们刚开始学习编程时都会面对"HelloW ...
- python是面向过程的吗_Python开发是面向过程、函数还是对象?
Python虽然是解释型语言,但从设计之初就已经是一门面向对象的语言,对于Python来说一切皆为对象.正因为如此,在Python中创建一个类和对象是很容易的,当然如果习惯面向过程或者函数的写法也是可 ...
- python面向过程是基于面向对象的_Python5.1-面向对象与面向过程
面向对象: 将数据与函数绑定在一起,进行封装, 这样能够更快速的开发程序,减少了重复 代码的重写过程. 优点: 易维护.易复用.易扩展,由于面向对象有封装.继承.多态性的特性,可以设 计出低耦合的系统 ...
- <%@include%>和<jsp:include>区别浅谈
jsp中include有两种方式: 1.指令元素include:<%@ include file=""%> 2.动作元素include:<jsp:include ...
- 面向过程方法与面向对象方法的比较
结构化方法是在软件行业得到广泛接受和使用,并一度成为早期占主导地位的软件构造与开发方法.而面向对象方法提出后,当代软件工程的发展面临着从传统的结构化范型到面向对象范型的转变,对象技术作为新范型的核心技 ...
- python二分法编程_python基础18——二分法面向过程匿名函数
二分法 算法:是高效解决问题的办法 算法之二分法 格式: def binary_search(ls, num, lower=0, high=None): if high is None: high = ...
- linux cp mv区别,浅谈Linux下mv和cp命令的区别
1.功能上的区别 mv:用户可以使用该命令为文件或目录重命名或将文件由一个目录移入另一个目录中. cp: 该命令的功能是将给出的文件或目录拷贝到另一文件或目录中. 2.从inode角度来区分 mv:会 ...
- 提取过程_上海生物发酵展浅谈中药提取分离的现状
上海生物发酵展,浅谈中药提取分离的现状 在植物(中草药)提取过程中,我们大多采用水提醇沉.醇提水沉工艺,结合单效.多效浓缩.减压真空浓缩等方式和方法,对提取液进行浓缩和除杂,以获得我们需要的有效成分和 ...
最新文章
- nodejs运行python_如何在后台Python中运行子进程命令来启动nodejs服务器
- Java中Integer和String浅谈
- (转)MySQL 服务器内存使用
- aliyun服务器安装git,g++
- The 30 CSS Selectors you Must Memorize
- webUI自动化一元素定位
- php5.6.11 openssl安装
- Dying In The Sun
- 2.架构设计的敏捷视图
- Alibaba秋招前端测试题
- Spring Data JPA
- 简单的解决nginx转发WebSocket问题
- Win10环境中运行Nacos2.0.4
- 浏览器配置异常_IE浏览器异常 修复/重置ie设置方法
- 虚幻引擎(UE4) UMG实例
- s数据结构替换子表java版,数据结构(Java版)-习题解答与实验指导
- 技术岗面试中的一些常见问题
- 关于阿里巴巴icon矢量图显示空白问题
- C/C++编程必备网址
- 【导数术】6.端点效应
热门文章
- Build a Machine Learning Portfolio(构建机器学习投资组合)
- 【ubuntu】服务器新增user,并且配置ssh
- 支持分布式数据库同步操作的一个设计点:主键问题
- 八、梯度下降法和拟牛顿法
- 邮件伪造_伪造品背后的数学
- 2021泰州高考什么时候查成绩查询,2021年泰州学院高考录取结果什么时候出来及查询系统入口...
- mysql 对已有表分区_mysql怎么对先有表进行分区
- vue 项目难点_vue项目中遇到的问题汇总
- mysql delete语句_MySQL ------ 触发器(TRIGGER)(二十七)
- mysql客户端版本太低_windows一机多装mysql,5.5低版本+5.8高版本