面向对象和面向过程是两种不同的编程范式,它们在处理问题和构建软件时有着显著的区别。
一、面向过程
1、基本概念
面向过程编程是一种早期的程序设计范型,它以事件为中心,主要关注“怎么做”,即完成任务的具体步骤
。它将问题分解成一系列的函数,然后按照顺序调用这些函数来实现目标。强调流程化,线性化,步骤化的思考方式
。
2、优缺点
优点
:这种编程范式流程清晰,效率高,适合解决简单的问题。
缺点
:在于代码重用性低,扩展性差,维护难度大。
常见的面向过程的编程语言:C语言、BASIC、Pascal等
。
二、面向对象
1、基本概念
面向对象编程则以对象为中心的程序设计范型,考察的是如何创建一些对象,让对象之间通过相互配合来共同完成复杂的功能。
强调 整体性和差异性
,(即可将任何事物看做一个有机统一的整体来研究,然后通过派生的方式实现差异性来降低高耦合的可能性),行为的多样性和多态性
,高度可扩展性
。
面向对象的四个基本特征,(抽象),封装,继承,多态。
封装
:属性可以用来描述同一类事物的特征,行为可描述一类事物可做的操作,而封装就是把属于同一类事物的共性(包括属性和行为)归到一个类中,以方便使用。
继承
:由于封装,使得有共同特征的一类事物的所有描述信息都被归于一个类之中,但有些事物虽然有共性,但还是存在区别的。
多态
:能站在抽象的角度去描述一件事,而针对这件抽象的事, 对于每个个体(具体)又能找到其自身的行为去执行, 这就是多态。
在面向对象编程中,对象是数据和功能的结合体,它包含了数据(属性)和行为(方法)。通过面向对象的方式,可以将现实世界的事物抽象为程序中的对象,并通过对象之间的交互来模拟现实世界的运作。
2、优缺点
优点
:具有结构清晰、代码重用性高、易于扩展和维护的优点。它适用于解决复杂的问题,特别是那些需要抽象和封装的问题。
缺点
:
(1)效率低
面向对象在面向过程的基础上高度抽象,和代码底层的直接交互非常少,不适合底层开发和游戏甚至多媒体开发;
(2)复杂性
对于事务开发而言,事务本身是面向过程的,过度的封装导致事务本身的复杂性提高。
典型应用场景
:图形界面、游戏、数据库、网络应用等。
常见的面向对象的编程语言:Java、C++和Python等
三、两者关系
面向对象和面向过程不是对立的。
面向对象是面向过程发展到一定阶段的产物,是程序设计的高级阶段。
面向对象以面向过程为基础,通过引入对象的概念,使得程序设计更加符合人类的思维方式,提高了软件的可维护性和可扩展性。
面向过程适合于一个人的小量工作,
而面向对象更侧重于团队合作,需要很多人完成的大量工作。
面向过程 : 按步骤进行执行
。考虑怎么来完成某一需求,分析出具体的步骤,然后按照步骤来一步步实现。
面向对象 : 按对象的功能进行调用
。适合复杂的工作需要团队合作
四、举例说明
1、示例:盖房子
目标:盖房子
面向过程:选材-备料-打地基-砌墙-封顶-装修 【细节,需要干活】
面向对象:工程队 装修队 【指挥,需要管理】
2、示例:计算时间
目标:让一辆比亚迪以100KM/h行驶在10000公里的路上,求需要多少时间。
面向过程: 时间 = 路程 / 速度 【数学思维】
面向对象:有一车(名字:比亚迪;速度=100KM/h)、跑起来、要有一段路(10000公里)
3、示例:装大象
目标:装大象
面向过程:打开冰箱门–把大象装进去—关上冰箱门
面向对象:对象(人 大象 冰箱 ) 、各属性、各行为、逻辑。