学习
实践
活动
专区
工具
TVP
写文章

面向对象和面向过程的区别?

  • 回答 (21)
  • 关注 (3)
  • 查看 (4963)

IT小马哥IT小马哥

北京天谱同盛教育科技有限公司 · JAVA高级研发经理 (已认证)

提问于
jwj

腾云先锋 · 腾云先锋(TDP)成员 (已认证)

回答于

面向过程是一种以过程为中心的编程思想,它首先分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,在使用时依次调用,是一种基础的顺序的思维方式。面向过程开发方式是对计算机底层结构的一层抽象,它将程序分为数据和操纵数据的操作两部分,其核心问题是数据结构和算法的开发和优化。常见的支持面向过程的编程语言有 C语言、COBOL 语言等。

面向对象是按人们认识客观世界的系统思维方式,采用基于对象(实体)的概念建立模型,模拟客观世界分析、设计、实现软件的编程思想,通过面向对象的理念使计算机软件系统能与现实世界中的系统一一对应。

面向对象方法直接把所有事物都当作独立的对象,处理问题过程中所思考的不再主要是怎样用数据结构来描述问题,而是直接考虑重现问题中各个对象之间的关系。面向对象方法的基础实现中也包含面向过程的思想。常见的支持面向对象的编程语言有 C++ 语言、C# 语言、Java 语言等。

参考内容:面向对象和面向过程的区别和联系

大脸猫个人主页 https://www.yzdlm.com回答于

一、面向对象与面向过程的区别

面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了;

面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。

可以拿生活中的实例来理解面向过程与面向对象,例如五子棋,面向过程的设计思路就是首先分析问题的步骤:

1、开始游戏,

2、黑子先走,

3、绘制画面,

4、判断输赢,

5、轮到白子,

6、绘制画面,

7、判断输赢,

8、返回步骤2,

9、输出最后结果。

把上面每个步骤用不同的方法来实现。

如果是面向对象的设计思想来解决问题 面向对象的设计则是从另外的思路来解决问题

整个五子棋可以分为

1、黑白双方,这两方的行为是一模一样的,

2、棋盘系统,负责绘制画面,

3、规则系统,负责判定诸如犯规、输赢等。

第一类对象(玩家对象)负责接受用户输入,并告知第二类对象(棋盘对象)棋子布局的变化,棋盘对象接收到了棋子的变化就要负责在屏幕上面显示出这种变化,同时利用第三类对象(规则系统)来对棋局进行判定。

可以明显地看出,面向对象是以功能来划分问题,而不是步骤。

同样是绘制棋局,这样的行为在面向过程的设计中分散在了多个步骤中,很可能出现不同的绘制版本,因为通常设计人员会考虑到实际情况进行各种各样的简化。

而面向对象的设计中,绘图只可能在棋盘对象中出现,从而保证了绘图的统一。

上述的内容是从网上查到的,觉得这个例子非常的生动形象,我就写了下来,现在就应该理解了他俩的区别了吧,其实就是两句话,面向对象就是高度实物抽象化、面向过程就是自顶向下的编程!

二、面向对象的特点

在了解其特点之前,咱们先谈谈对象,对象就是现实世界存在的任何事务都可以称之为对象,有着自己独特的个性

属性用来描述具体某个对象的特征。

比如小志身高180M,体重70KG,这里身高、体重都是属性。

面向对象的思想就是把一切都看成对象,而对象一般都由属性+方法组成!

属性属于对象静态的一面,用来形容对象的一些特性,方法属于对象动态的一面,咱们举一个例子,小明会跑,会说话,跑、说话这些行为就是对象的方法!所以为动态的一面, 我们把属性和方法称为这个对象的成员!

类:具有同种属性的对象称为类,是个抽象的概念。

比如“人”就是一类,期中有一些人名,比如小明、小红、小玲等等这些都是对象,类就相当于一个模具,他定义了它所包含的全体对象的公共特征和功能,对象就是类的一个实例化,小明就是人的一个实例化!

我们在做程序的时候,经常要将一个变量实例化,就是这个原理!

我们一般在做程序的时候一般都不用类名的,比如我们在叫小明的时候,不会喊“人,你干嘛呢!”而是说的是“小明,你在干嘛呢!”

面向对象有三大特性,分别是封装性、继承性和多态性,这里小编不给予太多的解释,因为在后边的博客会专门总结的!

三、面向过程与面向对象的优缺点

很多资料上全都是一群很难理解的理论知识,整的小编头都大了,后来发现了一个比较好的文章,写的真是太棒了,通俗易懂,想要不明白都难!

用面向过程的方法写出来的程序是一份蛋炒饭,而用面向对象写出来的程序是一份盖浇饭。

所谓盖浇饭,北京叫盖饭,东北叫烩饭,广东叫碟头饭,就是在一碗白米饭上面浇上一份盖菜,你喜欢什么菜,你就浇上什么菜。

我觉得这个比喻还是比较贴切的。

蛋炒饭制作的细节,我不太清楚,因为我没当过厨师,也不会做饭,但最后的一道工序肯定是把米饭和鸡蛋混在一起炒匀。

盖浇饭呢,则是把米饭和盖菜分别做好,你如果要一份红烧肉盖饭呢,就给你浇一份红烧肉;

如果要一份青椒土豆盖浇饭,就给浇一份青椒土豆丝。

蛋炒饭的好处就是入味均匀,吃起来香。

如果恰巧你不爱吃鸡蛋,只爱吃青菜的话,那么唯一的办法就是全部倒掉,重新做一份青菜炒饭了。

盖浇饭就没这么多麻烦,你只需要把上面的盖菜拨掉,更换一份盖菜就可以了。

盖浇饭的缺点是入味不均,可能没有蛋炒饭那么香。

到底是蛋炒饭好还是盖浇饭好呢?其实这类问题都很难回答,非要比个上下高低的话,就必须设定一个场景,否则只能说是各有所长。

如果大家都不是美食家,没那么多讲究,那么从饭馆角度来讲的话,做盖浇饭显然比蛋炒饭更有优势,他可以组合出来任意多的组合,而且不会浪费。

盖浇饭的好处就是"菜"“饭"分离,从而提高了制作盖浇饭的灵活性。

饭不满意就换饭,菜不满意换菜。用软件工程的专业术语就是"可维护性"比较好,“饭” 和"菜"的耦合度比较低。

蛋炒饭将"蛋”“饭"搅和在一起,想换"蛋”"饭"中任何一种都很困难,耦合度很高,以至于"可维护性"比较差。

软件工程追求的目标之一就是可维护性,可维护性主要表现在3个方面:可理解性、可测试性和可修改性。

面向对象的好处之一就是显著的改善了软件系统的可维护性。

看了这篇文章,简单的总结一下!

面向过程

优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机、嵌入式开发、 Linux/Unix等一般采用面向过程开发,性能是最重要的因素。

缺点:没有面向对象易维护、易复用、易扩展

面向对象

优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统 更加灵活、更加易于维护

缺点:性能比面向过程低

以上内容来自网络

云深无际闲言碎语,感悟心得,动手实操,爱code,爱折腾.回答于
用户3169736回答于
用户7866730回答于
低代码布道者

BoCloud博云 · 系统架构师 (已认证)

10年以上架构经验,专注微服务、低代码,容器化、混合云,NextArch开源基金会大使,华为云MVP #欢迎关注#回答于

可以理解为:

面向对象有高度的抽象、封装、可重用性。

面向过程只是实现功能,纯粹是为了满足功能而实现

青年码农

晨讯科技 · web前端开发高级工程师 (已认证)

关注公众号【青年码农】,回复“源码”可获取软件,源码等资料回答于

面向对象和面向过程是两种不同的编程思想。

面向过程是一种以过程为中心的编程思想,通过编写一系列函数或过程,按照既定的流程进行处理,以完成任务。它强调步骤和流程,重视算法的设计和优化,使用的数据结构一般是基本数据类型和数组。

面向对象是一种以对象为中心的编程思想,把数据和操作数据的方法封装在一起,形成对象,通过对象之间的交互,完成程序的功能。它强调的是对象的行为和属性,使用的数据结构一般是类、对象、数组和集合等。

两种编程思想的区别可以从以下几个方面进行说明:

  1. 抽象程度不同:面向过程把问题分解成一系列的步骤,强调的是功能的实现过程,而面向对象强调的是数据和行为的封装,抽象程度更高。
  2. 维护性不同:面向过程的代码比较复杂,耦合度高,维护困难,而面向对象的代码相对简单,具有良好的扩展性和可维护性。
  3. 代码复用性不同:面向过程的代码很难复用,而面向对象的代码可以通过继承、多态等机制实现代码的复用。
  4. 可读性不同:面向过程的代码往往比较冗长,难以理解,而面向对象的代码结构清晰,易于阅读和理解。

综上所述,面向对象的编程思想在大型项目开发中更为常用,因为它具有良好的可维护性、扩展性和复用性。而面向过程的编程思想在一些简单、小型的程序中使用较多。

点火三周Elastic首席云解决方案架构师,拥有多个云厂商架构师认证。是一个活跃的知识分享者和社区活动者。回答于

面向对象编程 (OOP) 和面向过程编程 (PPP) 是两种不同的编程方法。

面向对象编程是一种基于对象的编程方法。它的基本思想是将程序中的数据和操作数据的方法组合在一起,形成一个独立的对象。对象可以相互通信,并且可以通过继承和多态来实现代码的重用。

面向过程编程是一种指令式编程方法。它的基本思想是将程序按照时间顺序拆分成一个个过程,并通过调用过程来实现程序的执行。面向过程编程强调的是过程的执行流程,而不是数据的操作。

面向对象编程和面向过程编程之间的主要区别在于,前者侧重于对象的抽象而后者侧重于过程的执行。

面向对象编程注重的是对象之间的关系,它提倡将相似的对象归纳为一类,并通过继承和多态实现代码的重用。这样可以更好地抽象出问题的本质,使得程序的维护和扩展变得更加容易。

面向过程编程注重的是过程的执行流程,它提倡将程序拆分成一个个过程,并通过调用过程来实现程序的执行。这样可以更好地控制程序的执行流程,使得程序的排错和调试变得更加容易。

总的来说,面向对象编程和面向过程编程都是有用的编程方法。在选择编程方法时,您需要根据实际情况和需求来决定哪种方法更适合您的项目。

Try again

烟雨平生回答于

区别是解决问题的着眼点。

以把大象装进冰箱这件事为例。

如果用面向过程的视角,就是第一步打开冰箱,第二步大象走进去,第三步把冰箱关上

面向过程的代码: 可以是一个类 + 三个方法。然后一个main方法执行三个步骤对应的方法

面向对象的代码: 创建两个类 一个冰箱类,一个大象类,

然后分别执行冰箱对象的撕开方法【行为】,大象对象的走方法【行为】,最后执行冰箱的关闭方法。

从这个角度看,面向对象是按照人类世界认识世界的思路来构建代码。在可理解性会好一些。

当然在冰箱对象的关闭方法中,也可以理解为是面向过程的代码

从执行结果上看,面向过程和面向过程是一样的。

汐语记录小白成长历程~回答于

面向过程:

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

面向过程优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机、嵌入式开发、 Linux/Unix等一般采用面向过程开发,性能是最重要的因素。

缺点:没有面向对象易维护、易复用、易扩展。

面向对象:

面向对象是将事物高度抽象化。面向对象必须先建立抽象模型,之后直接使用模型就行了。

优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统 更加灵活、更加易于维护。面向对象技术具有程序结构清晰,自动生成程序框架,实现简单,可有效地减少程序的维护工作量,代码重用率高,软件开发效率高等优点。

缺点:因为类调用时需要实例化,开销比较大,比较消耗资源,性能比面向过程低。

————————————————

版权声明:本文为CSDN博主「陌守」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/qq_36763419/article/details/92025379

杜争斌爱学习修改于

面向对象以实例 为主偏重数据处理

面向过程以流程为主偏重流程。

lpp18回答于

面向对象和面向过程的区别是:1.面向对象以对象为核心,面向过程以过程为核心;2.面向对象强调事件的角色、主体,面向过程强调事件的流程、顺序。

IT技术分享社区热爱技术的程序员,公众号:IT技术分享社区回答于

面向对象和面向过程是两种不同的编程范式。面向对象是基于对象和类的概念,强调封装、继承和多态性;而面向过程是基于函数的概念,强调输入、处理和输出的线性关系。相比之下,面向对象更加适合开发复杂的应用程序,能够提高代码的可维护性和可扩展性;而面向过程更加适合开发简单的算法和功能,能够提高代码的执行效率和运行速度。

总体来说,要根据实际需求选择合适的编程范式。

小小程序员专业:数据科学与大数据技术 兴趣 :大数据、JAVA全栈开发 CSDN:小小程序员回答于

面向过程是一种以事件为中心的编程思想,编程的时候把解决问题的步骤分析出来,然后用函数把这些步骤实现,在一步一步的具体步骤中再按顺序调用函数。

在日常生活或编程中,简单的问题可以用面向过程的思路来解决,直接有效,但是当问题的规模变得更大时,用面向过程的思想是远远不够的。所以慢慢就出现了面向对象的编程思想。世界上有很多人和事物,每一个都可以看做一个对象,而每个对象都有自己的属性和行为,对象与对象之间通过方法来交互。面向对象是一种以“对象”为中心的编程思想,把要解决的问题分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个对象在整个解决问题的步骤中的属性和行为。

newbe36524

荷培信息科技(上海)有限公司 · 后端开发工程师 (已认证)

newbe36524 是一名开发工程师。Now, everyone will be excellent。回答于

面向对象和面向过程是两种不同的编程思想和范式。面向过程是按照解决问题的步骤来设计程序,把每个步骤用函数实现,然后依次调用。面向对象是把问题中涉及的事物抽象成对象,描述对象的属性和行为,然后通过对象之间的交互来解决问题。¹²³

面向过程的优点是程序结构清晰,适合简单的问题。缺点是难以应对复杂的问题,代码重用性低,可维护性差。¹²

面向对象的优点是程序更加模块化,易于扩展和维护,代码重用性高,更符合人类的思维方式。缺点是设计过程较复杂,运行效率较低,需要更多的内存空间。¹²

测试加回答于

面向对象是以对象为中心的程序设计思想,强调利用对象的抽象、继承、多态和封装性等特性,来简化程序的设计开发,这种思想使得程序的复用性和可维护性大大提高。

面向过程是以过程为中心的程序设计思想,强调通过对复杂问题拆分成更小的部分,再从简单部分出发,一步一步完成整个程序的设计开发,使程序更加清晰简洁。

两者的区别在于:

1.面向对象强调的是对象间的抽象、封装、继承、多态;面向过程强调的是过程的分解和重组;

2.面向对象的思维模式使得程序的复用性和可维护性大大提高;面向过程的思维模式更加清晰简洁;

3.面向对象着重解决数据的表示和操作问题;面向过程关注的是程序的实现细节;

4.面向对象更加强调程序的可扩展性和灵活性;面向过程侧重于程序的功能实现。

赵彤刚一个被音乐耽误的程序员。回答于

面向对象编程(Object-Oriented Programming,OOP)是一种编程范式,它强调将抽象的数据类型和函数封装成可重用的组件,以便构建更大型的程序。它把软件的构建和操作看作是对象的操作,而不是指令的操作。

面向过程编程(Procedural Programming,PP)是一种编程范式,它强调将程序的功能分解为独立的函数和过程,按照一定的顺序来执行。它把软件的构建和操作看作是指令的操作,而不是对象的操作。

总的来说,面向对象编程更加灵活,有助于提高程序的可重用性和可维护性,而面向过程编程更加简单,易于理解和实现。

用户10082492回答于
特特回答于

在代码层次的个人见解

面向过程编程:便于在不改动既有数据结构的前提下添加新函数(难以添加新的数据结构,因为必须要修改所有函数)

面向对象编程:便于在不改动既有函数的前提先添加新类(难以添加新函数,因为必须修改所有类)

用户2202346回答于

这个是很老的一个话题,面向过程是函数式编程方式,面向对象是高度的抽象、封装、可重用性

底层码农

腾讯 · 后端开发 (已认证)

回答于

面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了;

面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。

可能回答问题的人

  • IT技术分享社区

    62 粉丝1 提问14 回答
  • ☆~oo~☆

    15 粉丝5 提问4 回答
  • 技术分享达人

    青岛四海通达电子科技有限公司 · 安全主管 (已认证)

    34 粉丝0 提问3 回答
  • 用户3051268

    0 粉丝0 提问2 回答

关注

腾讯云开发者公众号
10元无门槛代金券
洞察腾讯核心技术
剖析业界实践案例
腾讯云开发者公众号二维码

扫码关注腾讯云开发者

领取腾讯云代金券