【浅谈面向过程和面向对象的区别】

面向对象和面向过程是两种不同的编程范式,它们在处理问题和构建软件时有着显著的区别。

一、面向过程

1、基本概念

面向过程编程是一种早期的程序设计范型,它以事件为中心,主要关注“怎么做”,即完成任务的具体步骤。它将问题分解成一系列的函数,然后按照顺序调用这些函数来实现目标。强调流程化,线性化,步骤化的思考方式
在这里插入图片描述

2、优缺点

优点:这种编程范式流程清晰,效率高,适合解决简单的问题。

缺点:在于代码重用性低,扩展性差,维护难度大。

常见的面向过程的编程语言:C语言、BASIC、Pascal等

二、面向对象

1、基本概念

面向对象编程则以对象为中心的程序设计范型,考察的是如何创建一些对象,让对象之间通过相互配合来共同完成复杂的功能。

强调 整体性和差异性,(即可将任何事物看做一个有机统一的整体来研究,然后通过派生的方式实现差异性来降低高耦合的可能性),行为的多样性和多态性高度可扩展性
面向对象的四个基本特征,(抽象),封装,继承,多态。

封装:属性可以用来描述同一类事物的特征,行为可描述一类事物可做的操作,而封装就是把属于同一类事物的共性(包括属性和行为)归到一个类中,以方便使用。

继承:由于封装,使得有共同特征的一类事物的所有描述信息都被归于一个类之中,但有些事物虽然有共性,但还是存在区别的。

多态:能站在抽象的角度去描述一件事,而针对这件抽象的事, 对于每个个体(具体)又能找到其自身的行为去执行, 这就是多态。

在这里插入图片描述

在面向对象编程中,对象是数据和功能的结合体,它包含了数据(属性)和行为(方法)。通过面向对象的方式,可以将现实世界的事物抽象为程序中的对象,并通过对象之间的交互来模拟现实世界的运作。

2、优缺点

优点:具有结构清晰、代码重用性高、易于扩展和维护的优点。它适用于解决复杂的问题,特别是那些需要抽象和封装的问题。

缺点
(1)效率低
面向对象在面向过程的基础上高度抽象,和代码底层的直接交互非常少,不适合底层开发和游戏甚至多媒体开发;
(2)复杂性
对于事务开发而言,事务本身是面向过程的,过度的封装导致事务本身的复杂性提高。

典型应用场景:图形界面、游戏、数据库、网络应用等。
常见的面向对象的编程语言:Java、C++和Python等

三、两者关系

面向对象和面向过程不是对立的。

面向对象是面向过程发展到一定阶段的产物,是程序设计的高级阶段。
面向对象以面向过程为基础,通过引入对象的概念,使得程序设计更加符合人类的思维方式,提高了软件的可维护性和可扩展性。

面向过程适合于一个人的小量工作,
而面向对象更侧重于团队合作,需要很多人完成的大量工作。

面向过程 : 按步骤进行执行。考虑怎么来完成某一需求,分析出具体的步骤,然后按照步骤来一步步实现。

面向对象 : 按对象的功能进行调用。适合复杂的工作需要团队合作

四、举例说明

1、示例:盖房子

目标:盖房子面向过程:选材-备料-打地基-砌墙-封顶-装修    【细节,需要干活】
面向对象:工程队    装修队                  【指挥,需要管理】

2、示例:计算时间

目标:让一辆比亚迪以100KM/h行驶在10000公里的路上,求需要多少时间。面向过程: 时间 = 路程   / 速度          【数学思维】
面向对象:有一车(名字:比亚迪;速度=100KM/h)、跑起来、要有一段路(10000公里)  

3、示例:装大象

目标:装大象

面向过程:打开冰箱门–把大象装进去—关上冰箱门
面向对象:对象(人 大象 冰箱 ) 、各属性、各行为、逻辑。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/589289.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

用于无人机小型化设计的高精度温补晶振

用于无人机小型化设计的高精度温补晶振:TG2016SMN和TG2520SMN。无人机的发展可以说是非常的迅速,在安防,农业,交通,电力,直播等领域经常能看到无人机大显身手。无人机的应用场最是非常的广泛,功能更强&…

每日面经分享(python part1)

Python中的深拷贝和浅拷贝的区别是什么? a. 浅拷贝创建一个新的对象,但其中的可变元素仍然共享引用。只有对象的第一层被复制,而更深层次的嵌套对象仍然是引用。更改其中一个对象的属性会影响到其他对象。 b. 深拷贝创建一个完全独立的新对象…

C++——异常机制

目录 一,背景 1.1 C语言处理错误的方式 1.2 C异常概念 二,异常的使用 2.1 异常的简单使用 2.2 异常的匹配原则 2.3 异常抛对象 2.4 异常的重新抛出 2.5 异常安全 三,自定义异常体系 四,异常优缺点 4.1 优点 4.2 缺点 …

对【AI技术创业】有哪些机会进行分析和引导

文章目录 方向一:行业解决方案,以下是一些常见的行业解决方案:方向二:智能产品和服务,以下是一些智能产品和服务的示例:方向三:教育和培训 1.智能客户服务: 利用自然语言处理(NLP)和…

day10 java封装性

封装性 为什么有封装性? 为了保护数据不被随意修改,隐藏类的实现细节。增强了代码的安全性和可维护性。 该隐藏隐藏 该暴露暴露 封装性的实现? 让调用者只能通过方法操作属性。可以在方法中加入一些限制条件或数据检查的操作。 封装性的直…

局域网与城域网(练习题)

局域网与城域网 ⭐️⭐️⭐️⭐️ 红色标记为答案⭐️⭐️⭐️⭐️ ⭐️⭐️⭐️ 蓝色标记为要点解析⭐️⭐️⭐️ 1.以下关于VLAN标记的说法中,错误的是()。 A.交换机根据目标地址和VLAN标记进行转发决策 B.进入目的网段时,交换机…

ansible-自动化工具

一、ansible概述 不是C/S架构,就是一种工具 1:linux自动化运维 编写程序实现运维自动化:shell python 工具模式自动化: ①OS Provisioning: RedHat satellite;PXE(可实现dhcp和tftp&#…

moment.js 产出未知格式的时间,可能的原因

moment.js 产出未知格式的时间,可能的原因 有个问题困扰我好久了,在项目中使用格式化时间的时候会产出一些千奇百怪的格式,产出的文字我都不认识。 百思不得其解,终于今天在看代码的时候发现了这个问题。 它的表现是这样的&…

pygame--坦克大战(一)

项目搭建 本游戏主要分为两个对象,分别是我方坦克和敌方坦克。用户可以通过控制我方的坦克来摧毁敌方的坦克保护自己的“家”,把所有的敌方坦克消灭完达到胜利。敌方的坦克在初始的时候是默认5个的(这可以自己设置),当然,如果我方坦克被敌方坦克的子弹打中,游戏结束。从…

Jmeter各组件超详细介绍

1、JMeter和Loadrunner的区别? 2、JMeter如何开发脚本的?强化脚本的技术? 代理服务器录制脚本,Fiddler录制脚本,Badboy录制脚本,根据API,手写脚本,根据抓包,手写脚本。 …

课程设计项目1.2:回音消除

01.课程设计的主要内容 02.代码效果图 1.逆系统法消除回声 2.LMS算法自适应滤波消除回声 3.用同态滤波消除回音 获取代码请关注MATLAB科研小白的个人公众号(即文章下方二维码),并回复:MATLAB课程设计本公众号致力于解决找代码难&…

Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单视频处理实战案例 之一 简单视频放大抖动效果

Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单视频处理实战案例 之一 简单视频放大抖动效果 目录 Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单视频处理实战案例 之一 简单视频放大抖动效果 一、简单介绍 二、简单视频放大抖动效果实现原理 三、简单视频放大…