为了账号安全,请及时绑定邮箱和手机立即绑定

用最简单的一句话说清,什么是面向对象?他和过程区别是什么?有什么好处?

用最简单的一句话说清,什么是面向对象?他和过程区别是什么?有什么好处?

撒科打诨 2019-02-20 21:25:10
可能我们都在用面向对象方式编程,我们真的理解到他了吗,每个程序员对面向对象的理解也不一样,每当别人问我为什么用对象不用过程时,我总是说不到一个充分的理由,我一般是这么说的,用对象的好处是,代码简洁,重用性高。。。。说说你们的看法和这么些年的总结阿。
查看完整描述

19 回答

?
一只斗牛犬

TA贡献1784条经验 获得超2个赞

个人拙见,仅供参考,以期启发,抛砖引玉。

1. 什么事面向对象?

面向对象就是把跟某一主题(类型称为类,实体叫做对象)的所有方法(即函数)和所有属性(即变量)组合起来,用这种逻辑来组织程序的一种程序开发方法。

2. 与面向过程的区别?

面向过程是通过一个一个的函数堆砌起来来组织程序的,面向的是过程(函数),而面向对象是通过一个一个的类/对象堆砌起来来组织程序的,面向的是对象(类/对象)。

3. 面向对象有什么好处?

当软件的规模不断扩大时,面向过程式的程序开发就会遭遇力不从心,一方面难以应付规模带来的压力,后期难以维护,另一方面代码也难以实现复用,造成重复编码(面向对象通过继承应对)。
因此,面向对象开发很好的解决了大型程序开发的困难,程序组织更为清晰,更容易后期维护。

查看完整回答
反对 回复 2019-03-01
?
慕虎7371278

TA贡献1802条经验 获得超4个赞

抛砖引玉。

Q: 什么是面向对象?
A: 一种编程范式,与面向过程相对,代表一种以数据(对象)为单元的对现实世界的抽象方式。

Q: 面向对象与面向过程的区别是什么?
A: 用程序描述"我吃饭"。面向过程的写法:eat(I, food),面向对象的写法:I.eat(food)。两者最直观的区别是程序的组织方式不同,面向过程的程序以动作(函数)为构建单元,通过在函数中调用其它函数完成对现实世界的描述。面向对象是以数据(名词)为核心,通过对象之间的消息传递构建程序。

Q: 面向对象的好处?
A: 面向对象更符合人类对现实世界的认知,人对抽象的“类”和具体的“对象实例”这些概念从童年起能有很好的理解,例如 "人类"就是一个抽象的 class,而"张三"就是一个属于"人类" class 的 object.面向对象有三大特征:封装、继承、多态,能够避免命名冲突、实现代码复用,对于构建大型程序十分有利。

查看完整回答
反对 回复 2019-03-01
?
慕后森

TA贡献1802条经验 获得超5个赞

上面的答案已经说的很清晰了。
面向对象就是对“类、接口”的合理使用。
面向过程就是对“函数、命名空间”的合理使用。
好处?减少重复的代码,增加可维护性。

查看完整回答
反对 回复 2019-03-01
?
Cats萌萌

TA贡献1805条经验 获得超9个赞

依我看,最大的好处就是:

更有助于人类的思考

面向对象的定义,网上一搜一大把。的确,我们每个人都在使用它,却很少有人思考过其中的原因。

事实上,从语法层面上来说: 面向对象只是面向过程的语法糖。继承,多态等等,完全可用面向过程来模拟,只是繁简的区别罢了。

面向对象的存在,肯定是有价值的。诚然,面向过程也可用于软件工程,但为何不被人们所推崇?原因就是: 不好想

人类更愿意用联系的思想去看问题,因为这更贴近生活经验,而面向对象就能很好地体现这种思想。

把事物分解为实现,这是机器的脑子; 把事物联系成整体这才是人类的脑子

查看完整回答
反对 回复 2019-03-01
?
开心每一天1111

TA贡献1836条经验 获得超13个赞

上面说的都挺不错的,偶也来凑个热闹~
简单到一句话:(按题主的要求)

  1. 什么是面向对象?对象是数据+操作。

  2. 和面向过程的区别是什么?面向对象更关注数据,而面向过程更关注操作。

  3. 有什么好处?面向对象让我们能更容易去封装数据、封装操作、扩展(继承机制),以及提供更轻量的接口--多态和duckType

查看完整回答
反对 回复 2019-03-01
?
拉莫斯之舞

TA贡献1820条经验 获得超10个赞

楼上说的都挺不错的,但是说好的一句话说清呢。。。

要我说,面向对象比面向过程好的是:人类语言很大程度是面向对象的。(至少中文、英文是。我就会这两个…)

查看完整回答
反对 回复 2019-03-01
?
慕沐林林

TA贡献2016条经验 获得超9个赞

如果非要一句话概括,那么就是:面向对象是将问题模块化,面向过程是将问题程序化

查看完整回答
反对 回复 2019-03-01
?
慕侠2389804

TA贡献1719条经验 获得超6个赞

老程序员了,c# JAVA c++ py都走过,现在爱node。那么多年的感觉就是,oo其实就是一种建模方法,简单的说就是你是如何理解这个世界这些业务的,oo只是其中一种。多接触各种不同的思想,才明白其中的差别,别纠结于理论。

查看完整回答
反对 回复 2019-03-01
?
蓝山帝景

TA贡献1843条经验 获得超7个赞

化整为零的哲学思想

查看完整回答
反对 回复 2019-03-01
?
月关宝盒

TA贡献1772条经验 获得超5个赞

举一个栗子
实现电商网站里面的一个小功能叫“删除商品”
如果是面向对象:可能的思路是---“删除商品”是对商品进行删除的一种方法,那就在商品这个类里面增加一个方法
如果是面向过程:可能的思路是---“删除商品”就是1,判断用户登录状况;2,判断用户权限;3,对提交的操作进行库表操作;4,返回结果;

不知道说的明不明白,我没有学过面向对象编程,小白的理解~~~~

查看完整回答
反对 回复 2019-03-01
?
慕容3067478

TA贡献1773条经验 获得超3个赞

oo更适合把数据和其对应的操作封装起来,对外隐藏实现细节。

查看完整回答
反对 回复 2019-03-01
?
素胚勾勒不出你

TA贡献1827条经验 获得超9个赞

能封装的就封装

查看完整回答
反对 回复 2019-03-01
?
小怪兽爱吃肉

TA贡献1852条经验 获得超1个赞

现在我们来应该讨论 oop 和 aop 。。

查看完整回答
反对 回复 2019-03-01
?
沧海一幻觉

TA贡献1824条经验 获得超5个赞

封装,继承,多态。

查看完整回答
反对 回复 2019-03-01
?
慕码人2483693

TA贡献1860条经验 获得超9个赞

感觉最大的不同就是封装,而继承,多态都可以用面向过程的方法来替代。还有就是上面说的程序的解耦。用类来代替方法确实方便了很多。

查看完整回答
反对 回复 2019-03-01
  • 19 回答
  • 0 关注
  • 656 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信