首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >面向对象和面向过程的区别?

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

提问于 2021-09-04 06:27:19
回答 22关注 3查看 7.7K

大脸猫

发布于 2021-09-05 02:20:37

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

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

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

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

1、开始游戏,

2、黑子先走,

3、绘制画面,

4、判断输赢,

5、轮到白子,

6、绘制画面,

7、判断输赢,

8、返回步骤2,

9、输出最后结果。

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

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

整个五子棋可以分为

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

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

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

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

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

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

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

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

二、面向对象的特点

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

面向过程

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

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

面向对象

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

缺点:性能比面向过程低

以上内容来自网络

查看全部 22 条回答
相关文章
面向对象与面向过程的区别-面向对象和面向过程的区别
  优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源。比如,单片机、嵌入式开发、Linux/Unix 等一般采用面向过程开发,性能是最重要的因素。
宜轩
2022/12/29
5230
面向对象与面向过程的区别-面向过程和面向对象有什么区别 面向过程和面向对象的区别
  1、面向过程:是一种以过程为中心的编程思想。都是以什么正在发生为主要目标进行编程。
宜轩
2022/12/29
6970
面向对象与面向过程的区别-面向对象和面向过程的区别(个人总结)
  面向对象以对象为中心,我们把要完成的功能封装成一个一个的对象,调用对象的方法或属性来完成功能。
宜轩
2022/12/29
4180
面向对象和面向过程的区别?
面向过程 :分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了;面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。面向过程性能比面向对象高。因为类调用时需要实例化,开销比较大,比较消耗资源,所以当性能是最重要的考量因素的时候,比如单片机、嵌入式开发、Linux/Unix 等一般采用面向过程开发。但是,面向过程没有面向对象易维护、易复用、易扩展。
黑洞代码
2021/01/14
6900
面向对象和面向过程的区别?
面向对象和面向过程的区别
面向对象(Object-Oriented) 是一种编程范式,它将程序设计看作是一组对象的集合,每个对象都可以接收消息、处理数据,并与其他对象进行交互。在面向对象编程中,程序由多个对象组成,每个对象都有自己的状态和行为。
程序员朱永胜
2023/10/07
6510
面向过程,面向对象,面向接口,面向切面的区别
面向过程:把所有的变量,方法写在一个主方法里面,强调使用正常的对事物的处理方式,比如人做饭的过程有买菜,洗菜,切菜,炒菜的过程,,在面向过程中则逐一顺次写出来.
全栈程序员站长
2022/06/30
5710
面向对象和面向过程的区别理解_c是面向对象还是面向过程
玩家对象负责接受用户输入,棋盘对象棋子布局的变化,棋盘对象接收到了棋子的变化就要负责在屏幕上面显示出这种变化,同时利用规则对象来对棋局进行判定。
全栈程序员站长
2022/09/23
8970
面向对象和面向过程的区别理解_c是面向对象还是面向过程
Python的面向过程、面向函数、面向对象的区别浅谈
有人之前私信问我,python编程有面向过程、面向函数、面向对象三种,那么他们区别在哪呢?这个问题,让我想起我在学习编程的时候,我的老师给我举的例子。分享给大家。
云飞
2018/09/13
1.1K0
面向对象与面向过程的本质的区别
如果你很想搞明白面向对象是什么,面向过程是什么,或者说二者之间的区别是什么,那么就花费一点时间来研读一下这篇博客,你一定会有很大的收获的!
全栈程序员站长
2022/08/31
3320
面向对象与面向过程的本质的区别
java是面向对象还是面向过程_Java面向对象编程和面向过程编程的区别[通俗易懂]
“面向过程”(Procedure Oriented)是一种以过程为中心的编程思想,简称OP。“面向过程”也可称之为“面向记录”编程思想,就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。所以面向过程的编程方式关注点不在“事物”上,而是做这件事分几步,先做什么,后做什么。例如:早晨起来:起床、穿衣、洗漱、上班,只要按照这个步骤来,就能实现“一天”的功能,整个这个过程中关注的是一步一步怎么做,并没有关注“人”这个事物。再例如:开门、调整座椅、系好安全带、踩离合、启动、挂档、给油,只要按照这个步骤来,车就走了,显然关注点还是在步骤上,只要实现每一步就行,整个过程并没有关注“汽车”这个事物。
全栈程序员站长
2022/09/08
9750
什么是面向对象以及和面向过程的区别
面向对象是一种编程范式,它将现实世界中的事物抽象为对象,并通过对象之间的交互来实现程序的设计和开发。在面向对象编程中,对象是程序的基本单元,具有状态(属性)和行为(方法)。通过封装、继承和多态等概念,面向对象编程提供了一种结构化的方法来组织和管理代码。
关忆北.
2023/10/11
3940
什么是面向对象以及和面向过程的区别
面向过程与面向对象
《Java编程思想》是一本好书,但同时也是晦涩难懂,其一是知识本身的难度,其二这本书是翻译过来的,而且是直译。我也是尝试了好多次才又拿起了这本书啃,没想到今天突然感觉发现了宝藏。
Noneplus
2020/07/21
7290
面向过程与面向对象
1、面向过程 面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候再一个一个的依次调用就可以了。 2、面向对象 面向对象是把事务分解成为一个个对象,然后由对象之间分工与合作。 3、面向过程与面向对象对比 面向过程面向对象 优点 性能比面向对象高,适合跟硬件联系很紧密的东西,例如单片机就采用的面向过程编程。 易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统 更加灵活、更加易于维护 缺点 不易维护、不易
清出于兰
2022/05/11
4930
面向对象VS面向过程
1 前言 向伟人致敬 其实这个问题真的是被问烂了,特别是刚入门的同行,我感觉这个问题应该是大家都听说过了,但是有多少人真的是理解这两个区别呢,这两种方式并不是简简单单的两种编程语言的区分,可能会有人说,面向对象就是万物皆对象,说的没错,我也相信你是一个爱学习的好宝宝,这句话如果我没记错的话应该是出自《java编程思想》,这本神书,带领太多的IT小白走进了java世界,在此应该向大佬致敬。话不多说,回归正题,今天我们就来解释一下这两种编程方式的优劣。 首先我们先根据一个简单的小栗
用户1257393
2018/01/30
1K0
面向过程和面向对象
面向过程设计思想: 分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现 以算法为核心 自上向下设计,要求一开始必须对问题有很深的了解 将大问题转化为若干小问题来求解 表现形式:用函数来作为划分程序的基本单位 直接面向问题 面向过程设计的优点: 易于掌握和理解,符合人们的思维习惯 对于需求明确、规模不大、变动较小、的问题非常适合 面向过程设计的缺点: 数据与操作分离开,对数据与操作的修改变得很困难 数据的安全性得不到保证 程序架构的依赖关系不合理 main函数依赖于子函数,子函数又依赖于更小的函数;
孙晨c
2019/09/05
8640
面向过程和面向对象
面向对象VS面向过程
面向过程编程OPP:Procedure Oriented Programming,是一种以过程为中心的编程思想。主要关注“怎么做”,即完成任务的具体细节。
大忽悠爱学习
2022/09/28
4580
面向过程与面向对象
面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候再一个一个的依次调用就可以了。
星辰_大海
2020/10/15
7940
面向过程与面向对象
面向过程 VS 面向对象
学习编程, 基本功是掌握编程语言,但编程的本质是逻辑,所以编程思维的培养也很重要。面向过程和面向对象是两种重要的编程思想,下面讲述一下这两者的区别和优缺点比较。
用户8639654
2021/07/26
6950
面向过程与面向对象
1.面向过程与面向对象 1.1面向过程 面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候再一个一个的依次调用就可以了。 1.2面向对象 面向对象是把事务分解成为一个个对象,然后由对象之间分工与合作。 1.3面向过程与面向对象对比 面向过程面向对象 优点 性能比面向对象高,适合跟硬件联系很紧密的东西,例如单片机就采用的面向过程编程。 易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统 更加灵活、更加易于维护
梨涡浅笑
2022/05/08
4130
[C++面试]C与C++(面向过程与面向对象)区别
C是一门结构化语言,重点在于数据结构与算法,侧重于对于输入进行运算得到输出(面向过程)。而C++考虑的是构造一个对象模型,通过获取对象的方法和属性来得到输出(面向对象)。
TOMOCAT
2021/12/16
5790

相似问题

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

071

面向对象和对象公有属性的继承问题?

1251

面向服务的架构、微服务架构有何区别?

74.7K

新加坡主机挂面向外贸的网站是否要备案?

1234

实在抱歉,此次活动暂时不面向协作者?

2354
相关问答用户
腾讯云TDP | TDP会员擅长3个领域
擅长3个领域
擅长5个领域
到家集团 | 技术VP擅长5个领域
腾讯云TDP | KOL擅长5个领域
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文