小米技术社区
小米技术社区管理员 关于小米

27岁,山西运城人,职业电商经理人,前端开发工作者,从事过网站建设、网络推广、SEO、SEM、信息流推广、二类电商、网络运维、软件开发,等相关电商工作,经验较为丰富,小米技术社区致力于为广大从事Web前端开发的人员提供一些力所能及的引导和帮助 ...[更多]

E-mail:mzze@163.com

Q Q:32362389

W X:xiaomi168527

小米技术社区大牛王飞 关于王飞

27岁,山西运城人,职业电商经理人,网络工程师兼运维,从事过运营商网络建设,企业网络建设、优化。数据中心网络维护等通过,经验丰富,座右铭:当自己休息的时候,别忘了别人还在奔跑。 ...[更多]

E-mail:wf_live@126.com

Q Q:3940019

微博:王小贱ss

小米技术社区设计小艳 关于小艳

大于花一样的年龄,河南郑州是我家,2010年在北京接触团购网,2011年进入天猫淘宝一待就是四年,如今已经将设计走向国际化(ps:误打误撞开始进入阿里巴巴国际站的设计,嘿嘿)五年电商设计,丰富经验,从事过天猫淘宝阿里各项设计,店铺运营,产品拍摄;我将我的经历与您分享是我的快乐!座右铭:越努力越幸运! ...[更多]

E-mail:97157726@qq.com

Q Q:97157726

标签云
精品推荐
您的位置:首页 > 后端编程 > PHP > PHP基础

什么是面向对象?什么是面向过程,他们的区别是什么?

分类: PHP基础18个赞

先来看看官方对面向对象和面向过程的解读:

面向对象(Object Oriented)是软件开发方法,一种编程范式。面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域。面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物。


面向对象是相对于面向过程来讲的,面向对象方法,把相关的数据和方法组织为一个整体来看待,从更高的层次来进行系统建模,更贴近事物的自然运行模式。


面向过程 (Procedure Oriented) 是一种 以过程为中心 的编程思想。这些都是以什么正在发生为主要目标进行编程,不同于面向对象的是谁在受影响。与面向对象明显的不同就是 封装、继承、类。


无论是在软件开发还是在实际工作中,深入地理解软件开发的思想都非常有必要。


看了上面的话是不是有些云里雾里?


简单点理解:

有一天你想吃鱼香肉丝了,怎么办呢?你有两个选择


面向过程:1、自己买材料,肉,鱼香肉丝调料,猪肉,木耳,胡萝卜等等然后切菜切肉,开炒,盛到盘子里。

面向对象:2、去饭店,张开嘴:老板!来一份鱼香肉丝!


看出来区别了吗?这里1是面向过程,2是面向对象。


再以去饭馆吃饭为例:

面向过程:点菜——做菜——上菜——吃饭——结账——收拾

面向对象:服务员,厨师,客人 


通过下面的图再次加深你对面向对象和面向过程的认识吧!

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

简单点说面向对象是一个编程思想。编程思想有面向过程和面向对象

面向过程:编程思路集中的是过程上

面向对象:编程思路集中在参与的对象




在面向对象编程世界里,一切皆为对象,对象是程序的基本单元,对象把程序与数据封装起来提供对外访问的能力,提高软件或程序的重用性,灵活性和扩展性


面向对象的编程方式使得每一个类都只做一件事。

面向过程会让一个类越来越全能,就像一个管家一样做了所有的事。而面向对象像是雇佣了一群职员,每个人做一件小事,各司其职,最终合作共赢!


面向过程是具体化的,流程化的,解决一个问题,你需要一步一步的分析,一步一步的实现。

面向对象是模型化的,你只需抽象出一个类,这是一个封闭的盒子,在这里你拥有数据也拥有解决问题的方法。需要什么功能直接使用就可以了,不必去一步一步的实现,至于这个功能是如何实现的,管我们什么事?我们会用就可以了。

面向对象的底层其实还是面向过程,把面向过程抽象成类,然后封装,方便我们我们使用的就是面向对象了。

拓展阅读:面向对象中[类和对象]的概念介绍,以及它们的关系

面向对象的设计过程

面向过程和面向对象的优缺点和区别

面向过程:

优点:性能比面向对象好,因为类调用时需要实例化,开销比较大,比较消耗资源。

缺点:不易维护、不易复用、不易扩展.


面向对象:

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

缺点:性能比面向过程差


面向对象其他优点:

1. 多人合作方便

2. 减少代码冗余,灵活性高

3. 代码的可重用性发挥到极致

4. 可扩展性强


在面试中,

面向对象的常见考察点是三个基本特征:封装、继承、多态。

封装 

封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。

继承 

继「承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来类的情况下对这些功能进行扩展。通过继承创建的新类称为「子类」或派生类」,被继承的类称为「基类」、「父类」或「超类」。 要实现继承,可以通过 继承和组合 来实现。

多态性 

多态性是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。简单说就是一句话:允许将子类类型的指针赋值给父类类型的指针。 

实现多态,有两种方式,覆盖和重载。

两者的区别在于:覆盖在运行时决定,重载是在编译时决定。并且覆盖和重载的机制不同。

例如在 Java 中,重载方法的签名必须不同于原先方法的,但对于覆盖签名必须相同。

面向对象的要点汇总

相关概念:

OOP:面向对象编程(Object Oriented Programming,面向对象编程)

OOA: 面向对象分析(Object-Oriented Analysis,OOA)

OOD: 面向对象设计(Object-Oriented Design,OOD)


小米技术社区

本站内容均为小米原创,转载请注明出处:小米技术社区>> 什么是面向对象?什么是面向过程,他们的区别是什么?