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

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

一、面向过程

1、基本概念

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

2、优缺点

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

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

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

二、面向对象

1、基本概念

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

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

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

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

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

在这里插入图片描述

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

2、优缺点

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

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

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

三、两者关系

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

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

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

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

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

四、举例说明

1、示例:盖房子

目标:盖房子

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

2、示例:计算时间

目标:让一辆比亚迪以100KM/h行驶在10000公里的路上,求需要多少时间。

面向过程: 时间 = 路程   / 速度          【数学思维】
面向对象:有一车(名字:比亚迪;速度=100KM/h)、跑起来、要有一段路(10000公里)  

3、示例:装大象

目标:装大象

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

在这里插入图片描述

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

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

相关文章

CTK插件框架学习-事件监听(04)

CTK插件框架学习-插件注册调用(03)https://mp.csdn.net/mp_blog/creation/editor/136989802 一、主要流程 发送者注册消息事件接收者订阅消息事件接收者相应消息事件 事件监听比插件接口调用耦合性更弱,事件由框架维护,不需要指定发送方和接收方 二、…

tensflow模型转onnx实践

一、基础知识介绍 1、TensorFlow介绍 TensorFlow™是一个基于数据流编程(dataflow programming)的符号数学系统,被广泛应用于各类机器学习(machine learning)算法的编程实现,其前身是谷歌的神经网络算法库…

WebGIS 之 Openlayer

1.导入第三方依赖 <link rel"stylesheet" href"https://lib.baomitu.com/ol3/4.6.5/ol.css"> <script src"https://lib.baomitu.com/ol3/4.6.5/ol.js"></script>2.初始化地图 初始化地图new ol.Map({}) 参数target:制定初始化…

阻塞队列(BlockingQueue)

何为阻塞队列 当阻塞队列是空时,从队列中获取元素的操作将被阻塞当阻塞队列是满时,往队列中添加元素将会被阻塞试图从空的阻塞队列中获取元素的线程将会被阻塞,直到其他线程往空的队列中插入新的元素试图往满的队列中,添加新的元素的线程也会被阻塞,直到其他线程从队列中移除…

基于SSM的社区疫情防控管理信息系统

目录 背景 技术简介 系统简介 界面预览 背景 随着时代的进步&#xff0c;计算机技术已经全方位地影响了社会的发展。随着居民生活质量的持续上升&#xff0c;人们对社区疫情防控管理信息系统的期望和要求也在同步增长。在社区疫情防控日益受到广泛关注的背景下&#xff0c…

OpenHarmony实战:Makefile方式组织编译的库移植

以yxml库为例&#xff0c;其移植过程如下文所示。 源码获取 从仓库获取yxml源码&#xff0c;其目录结构如下表&#xff1a; 表1 源码目录结构 名称描述yxml/bench/benchmark相关代码yxml/test/测试输入输出文件&#xff0c;及测试脚本yxml/Makefile编译组织文件yxml/.gitat…

Python基础之pandas:字符串操作与透视表

文章目录 一、字符串操作备注&#xff1a;如果想要全部行都能输出&#xff0c;可输入如下代码 1、字符检索2、字符转换3、字符类型判断4、字符调整5、字符对齐与填充6、字符检索7、字符切割8、字符整理 二、透视表1、pd.pivot_table2、多级透视表 一、字符串操作 备注&#xf…

黄锈水过滤器 卫生热水工业循环水色度水处理器厂家工作原理动画

​ 1&#xff1a;黄锈水处理器介绍 黄锈水处理器是一种专门用于处理“黄锈水”的设备&#xff0c;它采用机电一体化设计&#xff0c;安装方便&#xff0c;操作简单&#xff0c;且运行费用极低。这种处理器主要由数码射频发生器、射频换能器、活性过滤体三部分组成&#xff0c;…

2024年第九届亚太智能机器人系统国际会议即将召开!

2024年第九届亚太智能机器人系统国际会议 (ACIRS 2024) 将于2024年7月18-20日在中国大连举办&#xff0c;由大连理工大学主办&#xff0c;高性能精密制造全国重点实验室、辽宁黄海实验室和智能制造龙城实验联合承办。该会议旨在为智能机器人系统等领域的专家学者建立一个广泛有…

实现顺序表(增、删、查、改)

引言&#xff1a;顺序表是数据结构中的一种形式&#xff0c;就是存储数据的一种结构。 这里会用到动态内存开辟&#xff0c;指针和结构体的知识 1.什么是数据结构 数据结构就是组织和存储数据的结构。 数据结构的特性&#xff1a; 物理结构&#xff1a;在内存中存储的数据是否连…

k8s calico由IPIP模式切换为BGP模式

按照官网calico.yaml部署后&#xff0c;默认是IPIP模式 查看route -n &#xff0c; 看到是tunl0口进行转发 怎么切换到BGP模式呢&#xff1f; kubectl edit ippool 将ipipMode由Always修改为Never &#xff0c;修改后保存文件即可。无需做任何操作&#xff0c;自动就切换为BG…

picgo启动失败解决

文章目录 报错信息原因分析解决方案 报错信息 打开Picgo&#xff0c;显示报错 A JavaScript error occurred in the main process Uncaught Exception: Error:ENOENT:no such file or directory,open ‘C:\Users\koko\AppData\Roaming\picgo\data.json\picgo.log’ 原因分析…

绝不忽视!List.add方法揭秘:你绝对需要了解的覆盖现象

文章目录 引言一、背景介绍1.1 事件背景1.2 List.add()方法简介示例影响 二、覆盖现象解决方案1. 每次循环创建新对象2. 使用工厂方法或建造者模式3. 深拷贝4. 不可变对象 三、解决方案1. 使用深拷贝2. 创建新对象3. 避免直接修改原对象 四、 结论 引言 在 Java 编程中&#x…

MyBatis的基本应用

源码地址 01.MyBatis环境搭建 添加MyBatis的坐标 <!--mybatis坐标--><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.9</version></dependency><!--mysql驱动坐…

VSCode调试C++

1、环境准备 1.1、g的安装与使用 1.1.1、安装 方式一&#xff1a;Xcode安装 苹果的开发集成工具是Xcode.app&#xff0c;其中包含一堆命令行工具。 在 App store 可以看到其大小有好几个G&#xff0c;有点大。 方式二&#xff1a;Command Line Tools 安装 Command Line Too…

OpenHarmony实战:小型系统器件驱动移植

本章节讲解如何移植各类器件驱动。 LCD驱动移植 移植LCD驱动的主要工作是编写一个驱动&#xff0c;在驱动中生成模型的实例&#xff0c;并完成注册。 这些LCD的驱动被放置在源码目录//drivers/hdf_core/framework/model/display/driver/panel中。 创建Panel驱动 创建HDF驱动…

高级数据结构与算法习题(6)

一、单选题 1、In the Tic-tac-toe game, a "goodness" function of a position is defined as f(P)=Wcomputer​−Whuman​ where W is the number of potential wins at position P. In the following figure, O represents the computer and X the human. What i…

农业保险利用卫星遥感监测、理赔、农作物风险评估

​农业保险一直是农民和农业生产者面临的重要课题&#xff0c;而卫星遥感技术的不断发展正为农业保险带来全新的解决方案。通过高分辨率的卫星遥感监测&#xff0c;农业保险得以更精准、及时地评估农田状况&#xff0c;为农业经营者提供可靠的风险管理手段。 **1. 灾害监测与风…

2024年第三期丨全国高校大数据与人工智能师资研修班邀请函

2024年第三期 杭州线下班 数据采集与机器学习实战&#xff08;Python&#xff09; 线上班 八大专题 大模型技术与应用实战 数据采集与处理实战&#xff08;Python&八爪鱼&#xff09; 大数据分析与机器学习实战&#xff08;Python&#xff09; 商务数据分析实战&…

29.使线程以固定顺序输出结果

借助wait和notify方法控制线程以固定的顺序执行&#xff1a; /*** 控制输出字符的顺序&#xff0c;必须是固定顺序2,1* 采用wait-notify实现* param args*/public static void main(String[] args) {new Thread(() -> {synchronized (lock) {while (!isPrint2) {try {lock.…