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

news/2024/4/30 10:16:31

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

一、面向过程

1、基本概念

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

2、优缺点

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

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

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

二、面向对象

1、基本概念

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

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

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

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

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

在这里插入图片描述

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

2、优缺点

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

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

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

三、两者关系

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

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

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

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

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

四、举例说明

1、示例:盖房子

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

2、示例:计算时间

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

3、示例:装大象

目标:装大象

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

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

centos7 安装 postgresql

进入地址:https://yum.postgresql.org/repopackages.php 鼠标放置红色框内,右击拷贝地址 yum install 拷贝的地址 例如:yum install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch…

大型矿业集团安全知识竞赛主持词

男:尊敬的各位领导,员工同志们: 合:大家好! 男;首先让我们以热烈的掌声对公司领导亲临比赛现场指导观看表示欢迎! 男;继成功开展了荣辱观专题讲座、好矿嫂女红艺术展、安全谜语竞猜…

CSS使用clip-path实现元素动画

前言: 在日常开发当中,如果想要开发多边形,一般都需要多个盒子或者伪元素的帮助,有没有一直办法能只使用一个盒子实现呢? 有的:css裁剪 目录 前言: clip-path到底是什么? clip-pa…

基于8086贪吃蛇游戏系统方恨设计

**单片机设计介绍,基于8086贪吃蛇游戏系统方恨设计 文章目录 一 概要二、功能设计三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于8086的贪吃蛇游戏系统设计是一个结合了微处理器控制、游戏逻辑以及图形显示技术的综合性项目。该系统旨在通过8086微处理器…

MATLAB 自定义中值滤波(54)

MATLAB 自定义中值滤波(54) 一、算法介绍二、算法实现1.原理2.代码一、算法介绍 中值滤波,是一种常见的点云平滑算法,改善原始点云的数据质量问题,MATLAB自带的工具似乎不太友好,这里提供自定义实现的点云中值滤波算法,具体效果如下所示: 中值滤波前: 中值滤波后:…

使用 PyOpenGL 进行 2D 图形渲染总结

一、说明 OpenGL是一个广泛使用的开放式跨平台实时 3D 图形库,开发于二十多年前。它提供了一个低级API,允许开发人员以统一的方式访问图形硬件。在开发需要硬件加速且需要在不同平台上运行的复杂 2D 或 3D 应用程序时,它是首选平台。它可以在…