面向对象:用线性的思维。与面向过程相辅相成。在软件开发过程中,宏观上,用面向对象来把握事物间复杂的关系,分析系统。微观上,仍然使用面向过程。

“面向过程”是一种是事件为中心的编程思想。就是分析出解决问题所需的步骤,然后用函数把这写步骤实现,并按顺序调用。

”面向对象“是以“对象”为中心的编程思想。

简单的举个例子:汽车发动、汽车到站。汽车启动是一个事件,汽车到站是另一个事件,面向过程编程的过程中我们关心的是事件,而不是汽车本身。针对上述两个事件,形成两个函数,之后依次调用。

对于面向对象来说,我们关心的是汽车这类对象,两个事件只是这类对象所具有的行为。而且对于这两个行为的顺序没有强制要求。

面向过程的思维方式是分析综合,面向对象的思维方式是构造。

软件工程追求的目标之一就是可维护性,可维护性主要表现在3个方面:可理解性、可测试性和可修改性。面向对象的好处之一就是显著的改善了软件系统的可维护性。

面向过程(OP)和面向对象(OO)是不是就是指编码的两种方式呢?不是!你拿到了一个用户需求,比如有人要找你编个软件,你是不是需要经过需求分析,然后进行总体/详细设计,最后编码,才能最终写出软件,交付给用户。这个过程是符合人类基本行为方式的:先想做什么,再想如何去做,最后才是做事情。有的同学说:“我没按照你说的步骤做啊,我是直接编码的”。其实,你一定会经历了这三个阶段,只不过你潜意识里没有分得那么清楚。对于拿到需求就编码的人,可能编着编着,又得倒回去重新琢磨,还是免不了这些过程,

以OO为例,对应于软件开发的过程,OO衍生出3个概念:OOA、OOD和OOP。采用面向对象进行分析的方式称为OOA,采用面向对象进行设计的方式称为OOD,采用面向对象进行编码的方式称为OOP。面向过程(OP)和面向对象(OO)本质的区别在于分析方式的不同,最终导致了编码方式的不同。

总的来说:

面向对象是将事物高度抽象化。

面向过程是一种自顶向下的编程

面向对象必须先建立抽象模型,之后直接使用模型就行了。

LinuxC编程的学习已经告一段落,这段开始学C++。C++是面向对象编程,C语言是面向过程编程。因此学习C++的第一件事就是要弄明白什么是面向过程编程,什么是面向对象编程。

之前学习的C语言是面向过程编程,回想一下C语言编程的过程。主函数,定义变量,调用函数然后实现。面向过程编程是一种非常具体,要面面俱到的的编程方式。而面向对象是以对象为单位来进行编程,比较像正常人的思维。

下面我们举个例子,比如开车、加速、减速、刹车。

用面向过程来说就是你要先有一个车,然后这四个分别是4件事,也就是说你要写4个函数,分别是开车、加速、减速、刹车,这分别是四个事件,如果使用的话要调用4个函数。

但是对于面向对象的编程来说,我们关心的是车这个类,而不是开车、加速、减速和刹车这四个过程。这4个过程是车这个类的一部分,只是其中的一种行为,而且对于行为的顺序没有强制要求。

两种思想的对比:

面向过程是具体的东西,而且面向过程是面向对象的基础。面向对象可以说是面向过程的抽象,比如汽车有开车,加减速和刹车,关于汽车的操作有好多,每一个都需要一个具体的过程来实现,把这些过程抽象的总结起来就可以形成一个类,这个类包括的汽车所有的东西,所有的操作。

总结来说就是,面向过程是一种基础的方法,它考虑的是实际的实现,一般情况下,面向过程是自顶向下逐步求精,其最重要的是模块化的思想方法。因此在模块化编程的时候才会有“低耦合,高内聚”的思想来提高效率。面向对象的方法主要是把事物给对象化,包括其属性和行为。当程序较小的时候,面向过程就会体现出一种优势,其程序流程十分清楚。但是,面向对象编程更贴近实际生活的思想。

面向过程和面向对象的本质理解

面向过程是具体化的,流程化的。解决一个问题,需要一步一步分析需要怎样,然后需要怎样,一步一步实现的。面向对象是模型化的,抽象出一个类,这是一个封闭的环境,在这个环境中有数据有解决问题的方法,你如果需要什么功能直接使用就可以了,至于是怎么实现的,你不用知道。

从代码层面来看,面向对象和面向过程的主要区别就是数据是单独存储还是与操作存储在一起。在类的里边,实现具体的功能还是需要流程化、具体化的代码去实现的,在类里还是需要具体的算法来实现的。总结来说面向对象的底层还是面向过程,面向过程抽象成类,然后封装,方便使用就是面向对象。

转载于:https://www.cnblogs.com/klb561/p/8633801.html

面向对象与面向过程区别相关推荐

  1. JAVA 面向对象与面向过程区别

    JAVA 面向对象与面向过程区别 什么是面向过程 概述:自上而下的编程模式 将我们所需要的问题(需求)拆分成一个个步骤,把每个步骤使用函数进行实现,再根据解决问题的步骤逻辑将函数依次调用即可. 可以通 ...

  2. php 面向对象和面向过程区别

    面向对象与面向过程的区别: 面向过程编程:不是技术,是一种思想,一种将流程分解成小功能,然后用函数对小功能进行封装,在使用的时候调用函数去实现. 面向对象都有以下三个基本特点:封装,继承和多态 共同点 ...

  3. 关于面向对象、面向过程区别,我的看法

    表示你把一个概念学懂了.了解透彻了的最简单检验标准就是-你能不能让一个门外汉也听懂个60%? 为了尝试给出最简单的解释,让门外汉听懂,我和同事采用各种表述,最终都不太满意.后来无意间看到网络上有人回答 ...

  4. python面向对象和面向过程的区别_Python11-01_面向对象----面向对象和面向过程的区别...

    面向对象编程 面向对象(OPP)编程思想主要针对大型软件设计而来的.面向对象编程使程序的扩展性更加强,可读性更好.使得编程可以像搭积木一样简单. 面向对象编程将数据和操作数据的方法封装到对象中,组织代 ...

  5. python 递归函数_Python尚学堂高淇|P82P86面向对象和面向过程的区别LEGB规则nonlocal_global递归函数阶乘计算案例...

    P82-递归函数-阶乘计算案例 #使用递归函数计算阶乘def factorial(n):if n==1:return 1else:return n*factorial(n-1)result=facto ...

  6. 面向对象和面向过程的区别个人觉得是目前解释最好的

    面向对象 首先,一言不和先百度,得到如下定义: 一切事物皆对象,通过面向对象的方式,将现实世界的事物抽象成对象,现实世界中的关系抽象成类.继承,帮助人们实现对现实世界的抽象与数字建模. 我们知道,编写 ...

  7. Java面向对象和面向过程有什么区别?网友:傻傻分不清楚……

    面向对象,Obeject Oriented,是一种编程术语.面向对象是当今软件开发方法的主流方法之一,他是把数据以及对数据的操作放在一起,作为一个相互依存的整体,就是我们所说的对象.对同类对象抽象出其 ...

  8. C++ 面向对象与面向过程的区别与联系

    转自:https://blog.csdn.net/jerry11112/article/details/79027834 前言: 如果你很想搞明白面向对象是什么,面向过程是什么,或者说二者之间的区别是 ...

  9. java面向对象与面向过程的区别

    面向对象与面向过程的区别 面向过程与面向对象,只是一种思维方式的划分   面向过程 面向对象 区别 以分步骤的方式解决问题. 用方法组织代码. 以分类的方式解决问题. 用类组织代码. 共同点 细节上用 ...

最新文章

  1. 数学建模论文写作小技巧分享
  2. 联海网站开发-操作说明-会员系统及诵读之星
  3. scrapy如何指定生成python3的项目_新手学习scrapy的坑(都是泪)
  4. vim中跳到第一行和最后一行
  5. 简述JAVA线程调度的原理,Rxjava原理(二)--线程调度
  6. java多线程调用nsq消费_spark-streaming连接消费nsq
  7. 云计算产生的新生事物一云桌
  8. windows11 微信双开的方法
  9. Typora图片上传 —— PicGo-Core篇
  10. 因子主成分分析,因子载荷矩阵、因子解释度 因子得分-在基金净值和主要金融因子分析上的应用
  11. 牛刀杀鸡-开源社区API之抢楼大作战
  12. vant框架van-field
  13. 计算机应用基础客观答案,20春国家开放大学计算机应用基础客观题资料参考答案...
  14. 第五次网页前端培训(JavaScript)
  15. -bash: ./startup.sh: /bin/sh^M: 坏的解释器: 没有那个文件或目录
  16. android 全局菜单键,视听效果都很出色的超值之选 OPPO智能电视K9评测
  17. 上海交大计算机考试科目,上海交通大学需要选什么科目?附上海交通大学必选科目...
  18. ( 从零开始的数据结构生活 )二、栈
  19. halcon 缺陷检测 穿孔检测(边缘点偏离检测)
  20. 来,让我们认识一哈工程高等代数

热门文章

  1. SAP RETAIL 寄售模式的公司间STO发货过账后的物料凭证的特殊点
  2. 华为北大等打造的Transformer竟在CV上超过CNN
  3. 人工智能治理需用好“人工”
  4. 64岁Python之父:退休生活太无聊,我要加入微软,将开源进行到底
  5. PLM和PDM相互关系
  6. 在数据中心利用AI的5个理由
  7. Reddit年度盘点:2019年最佳机器学习项目
  8. 盘点丨MIT教授Poggio:过去23年,机器学习取得了哪些进步
  9. (已解决)module ‘tensorflow‘ has no attribute ‘app‘
  10. 华人一作统一「视觉-语言」理解与生成:一键生成图像标注,完成视觉问答,Demo可玩...