面向过程VS面向对象 C || JAVA

面向过程 VS 面向对象 面向过程(Process Oriented)这个词是在面向对象(Object Oriented)出现之后为与之相对而提出的。其实它在以前基本被叫做“结构化编程”。        早期的程序设计,大量使用共享变量(全局变量)和GOTO语句一类的东西,后来有人证明所有有意义的程序流程都可以使用三种基本流程(顺序、选择、重复)来实现,并提出“GOTO有害说”,从此人们进行编程的方式发生重大变化,每 阅读详情

1. 概念

什么是面向过程?

【概念】在使用过程编程时,如果要完成某个任务,我们首先会想到,机器会怎么做,通过机器执行时的“副作用”,比如我们通常在调用一个函数,通过它的返回值来进行下一步操作,其实这就是利用函数的“副作用编程”。我们更加强调细节编程,面向副作用编程。

什么是面向对象?

【概念】而在面向对象的世界里,一切都是对象,编程实现的其实就是消息之间发送消息,进行交互。而且,它会将底层实现封装起来,让你看不到底层实现,也就是“透明性”。比起它也被认为是编程发展的必然阶段,剔除复杂性,强调简单实现,人人皆可编程。

2. 面向对象编程的特性

  1. 类和对象
  2. 方法(也可以称作“消息”)
  3. 封装
  4. 继承与多态

3. 面向过程VS面向对象

【对比】可以说在我们的普遍认知里,C比JAVA难就可以看出,为什么JAVA发展的速度惊人,本质可以说是源于面向对象机制的简单,容易上手。可以说,许多面向过程语言(比如C)就是因为它更加面向底层,使得我们可以用简单的几句表达完成直接操纵数据的目的。比如,如果你想要买一本书,如果你是直接去书店买,那你可以挑选适合你的,而且直接拿到手,你交互的只是书店店员,得到的也是干净的Book。但是,如果是面向对象,你的过程可能是这样的 某宝/某东—>淘宝客服—>发货人—>快递员—>加了层层包装的书。但是,你看到的只是你轻轻一点,书就到你手里了。这就是面向对象的优点:通过封装机制,达到简单易操作。而你根本不需要关注它到底怎么实现的。但是就时间效率来说,肯定是底层实现>封装实现。

附:
【面向过程语言的难点】*在一些偏底层的语言中,通常它提供的基础数据类型是有限的。如果要完成一个复杂的业务流程,必须通过基本数据类型的不断组合达到实现业务的结果。换言之,所有你需要的都需要自己去实现,比如C/C++的指针机制,它被许多人认为是最难的编程体验。那么,为什么它难呢?其实这也不难理解,就是因为它偏底层,太”抽象”,这里的“抽象”,指的是我们在没有一定的底层知识是很难理解,机器到底是怎么做的?(比如数据在内存的存储方式)

4. 面向对象编程语言的选择 (JAVA OR C++?)

关于这两门编程语言,我的理解是,如果你自信有强大的逻辑,喜欢底层也喜欢做业务逻辑,我的建议是:C++。
而如果你只是编程新手,或者不太喜欢底层,平时做的也都是一些网页后台等,恭喜你,java完全可以胜任你的日常工作。

在知乎下看到一个关于JAVA和C++的一个趣味解释:

C++是面向内存编程,Java是面向数据结构编程。C++里,内存是裸露的,可以拿到地址,随意徜徉,增了删了,没人拦你,等到跑的时候再崩给你看。Java里,能操作的都是设计好的数据结构,array有长度,String不可变,每一个都是安全的,在内存和程序员之间,隔着JVM,像是包住了边边角角的房间,随便小孩折腾,不会受伤。Java程序员是孩子,嚷嚷要这个那个,玩完了就丢,JVM是家长,买买买,还要负责收拾。有的孩子熊点,屋子很乱,收拾起来费劲,但房子还在。C++程序员是神,操纵着江河湖海,日月星辰,但能力越大,责任越大,万一新来的神比较愣,手一滑,宇宙就退出了。新手写C++,像是抱着一捆指针,在浩瀚的内存中裸奔。跑着跑着,有的针掉了,不知踪影,内存就泄露了;跑着跑着,突然被人逮住,按在地上打的error纷飞,内存就越界了;终于到了,舒了口气,把针插在脚下,念出咒语,“delete”系统就崩溃了。
作者:ze ran
链接:https://www.zhihu.com/question/51284083/answer/125338745
来源:知乎

【ZYNQ驱动双AD9361实战】(一)从官方参考设计到自定义移植 本文详细介绍了如何将ADI官方的单AD9361参考设计移植到ZYNQ平台以驱动双AD9361射频板卡。内容涵盖从环境搭建、官方工程架构解析,到硬件HDL工程修改(包括顶层设计、引脚分配及TCL脚本适配)以及Linux设备树软件配置的全流程实战指南,帮助开发者实现自定义双通道射频收发系统。 阅读详情

相关推荐

告别谷歌翻译失效!手把手教你用Immersive Translate插件实现双语网页阅读(附Chrome/Edge/Firefox保姆级配置)

本文详细介绍了如何使用Immersive Translate插件实现双语网页阅读,解决谷歌翻译失效的问题。通过Chrome、Edge和Firefox的保姆级配置指南,帮助用户轻松安装和使用这款支持双语对照、智能识别网页内容的翻译插件,提升外文资料阅读效率。

weixin_28683689的博客 488

C++/Java面向对象,C的面向过程

  面向对象方法,OO方法所具有的模块化、信息封装与隐蔽、抽象性、继承性、多样性等独特之处,这些优异特性为研制大型软件、提高软件可靠性、可重用性、可扩充性和可维护性提供了有效的手段和途径。Java主要特征:封装性,继承性,多态性.   所谓面向对象就是基于对象概念,以对象为中心,以类和继承为构造机制,来认识、理解、刻画客观世界和设计、构建相应的软件系统。 -- Java面向对象知识总结- htt...

ShareUs的专栏 2368

Halcon 3D点云处理实战:从PLY文件读取到曲面匹配的完整流程(附避坑指南)

本文详细介绍了Halcon在3D点云处理中的完整流程,从PLY文件读取到曲面匹配,特别强调了3D算子的应用技巧和避坑指南。通过实战案例和参数优化建议,帮助开发者高效处理工业视觉检测中的复杂点云数据,提升匹配精度和性能。

weixin_42535720的博客 279

从C到JAVA,从面向过程到面向对象

概述 C语言是很多大学生接触到的第一门编程语言,也可以说是一个岔路口——学了C语言,可以去搞硬件,也可以去搞软件(当然两者都需要继续学习,不是说C语言是万能的)。 如果选择了向软件方向发展,那么学一门面向对象的编程语言就是很有必要的了。又如果选择了高雅美丽大方得体帅气可爱健康的JAVA,如何从C过渡到JAVA,从面向过程过渡到面向对象呢?(老师,我扣题了!(°∀°)ノ) 在我看来,学好C...

bangujiao8042的博客 272

Python计算时间差的方法

使用datetime模块是Python内置的方法,使用timedelta对象可以更精确地计算时间差,而使用dateutil库则提供了更为灵活和方便的操作方式。我们可以使用datetime模块中的datetime类来表示一个具体的日期和时间,并进行相应的运算。在Python中,我们经常需要计算日期和时间之间的差异,例如计算两个日期之间的天数、小时数、分钟数等。Python提供了多种方法来计算时间差,下面我们将介绍其中的几种常用方法,并附上相应的源代码。在上面的代码中,我们使用了dateutil库中的。

学习使你进步。 2086

【VS Code插件开发】通用功能(二)

本篇主要从command(命令)、menus(菜单)、快捷键三个方面讲解,都归于通用功能。

编码世界 1万+

复盘:下面的这两个随机数组“a”和“b”:请问数组c=a+b的维度是多少

1)b(列向量)复制3次,以便它可以和A的每一列相加,所以:c.shape = (2, 3) 3)笔试求AC,可以不考虑空间复杂度,但是面试既要考虑时间复杂度最优,也要考虑空间复杂度最优。

weixin_46838716的博客 738

【转录调控网络】代谢组学与其他组学的联合分析经典模式简介

多组学联合分析经典模式转录组学&代谢组学联合分析 转录组学&代谢组学联合分析 转录组是获得生物体内基因表达的重要方法,代谢组是生物体表型的基础和直接体现者。 转录组测序可以得到大量差异表达基因和调控代谢通路,但由于基因与表型之间很难之间关联,导致关键的信号通路难以确定,因此往往达不到预期的研究目的。代谢产物是生物体在内外调控下基因转录的最终结果,是生物体表型的物质基础。 在系统生物学研究时代,生物过程复杂多变,基因调控网络复杂。针对特定的生理、病理等表型进行研究,利用转录组的数据获得大量差异

小哲的博客 6195

(Java、C++、C#等)面向对象编程与(C等)面向过程编程的区别

概念 百度百科关于面向过程 以及面向对象的解释:面向过程(Procedure Oriented)是一种以过程为中心的编程思想。面向过程也可称之为面向记录编程思想,他们不支持丰富的面向对象特性(比如继承、多态),并且它们不允许混合持久化状态和域逻辑。面向对象程序设计(Object Oriented Programming)作为一种新方法,其本质是以建立模型体现出来的抽象思维过程和面向对象的方法。模型...

upc_Yuan的博客 1119

JumpServer未授权访问漏洞 CVE-2023-42442

JumpServer 是全球首款完全开源的堡垒机, 使用GNU GPL v2.0 开源协议, 是符合4A 的专业运维审计系统。 JumpServer 使用Python / Django 进行开发。2021年1月15日,阿里云应急响应中心监控到开源堡垒机JumpServer发布更新,修复了一处远程命令执行漏洞。由于 JumpServer 某些接口未做授权限制,攻击者可构造恶意请求获取到日志文件获取敏感信息,或者执行相关API操作控制其中所有机器。

holyxp的博客 1426

Python反爬实战|动态渲染+高可用IP代理集群,稳定爬取京东/淘宝10万+商品数据

做Python电商爬虫的同学,应该都对京东、淘宝的反爬机制深有体会——这两个平台的反爬体系,堪称国内网站的天花板,远比普通资讯、政务网站的反爬严格十倍不止。用requests库请求商品列表,返回的永远是只有骨架的空HTML,商品标题、价格、销量全是前端JS异步加载,抓包分析接口发现参数全是加密的signtoken,解密成本无限高;用selenium开无头浏览器爬取,刚爬3-5页就触发风控,页面直接返回403,IP被封禁,甚至连Cookie都直接失效;

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1587

面向过程C语言和面向对象Java

面向过程:c语言 当开发一个功能时,看中的是中间的过程,每一个过程中的每一个步骤都需要自己去做 面向对象:Java 当开发一个功能时,不看重具体的过程 public class Demo01 { public static void main(String[] args) { // TODO Auto-generated method stub int[] a={10,12,7...

qq_42435859的博客 1513

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

面向对象 vs 面向过程

是一门面向过程的语言,数据和操作是分离的,程序通过函数调用来组织逻辑。虽然函数可以复用,但代码的扩展性和维护性较差。每个函数独立工作,缺少类和对象的封装能力。

Yhame的博客 1170

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

01、面向对象 vs 面向过程 vs 函数式

如:FileConstants、MysqlConstants 等,FileUtils、StringUtils 等。相应的 VO(View Object)、BO(Business Object)、Entity。Controller 类、Service 类、Repository 类中。一个类,无论是否需要,为所有属性都提供了 get / set 方法。两个语法概念,不支持面向对象编程的特性(如:封装、继承、多态),为核心,把问题分解成一个个步骤,对每个步骤进行相应的抽象,形成。

butingdejiaobu的专栏 1039

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

面向对象VS面向过程

本质区别:面向过程以 “步骤(函数)” 为核心,分离数据与行为,适合简单问题;面向对象以 “实体(对象)” 为核心,封装数据与行为,适合复杂系统。共存原因:问题的复杂度和类型不同,需要不同的抽象方式 —— 简单问题用面向过程更高效,复杂问题用 OOP 更易维护,二者互补而非替代。理解这一点,就能在实际开发中根据场景选择合适的范式,而非教条地 “非此即彼”。

AlbenXie的博客 2260

面向对象 VS 面向过程编程

1.1  面向对象的编程有:java,c++  1.2  面向过程编程语言:C和VB 2.1  什么是面向对象编程?  答: 面向"对象"编程, 很重要的一点就是其中必须要意识到,对象,对象,一切万物皆为对象, 比如说具体的一个人,它也是一个对象, 这个对象有哪些特征呢?又有哪 些行为呢?  对于特征: 身高,高还是矮,有多高 体重,轻不是重,有多重, and so on;  【在Ja

来者即是客,请坐~ 929

Java基础·第1篇:面向对象 vs 面向过程——Java和C语言到底有什么区别?

本文旨在帮助初学者理清面向对象(OOP)和面向过程(POP)这两个核心概念。内容涵盖了两者的定义、核心逻辑(线性执行 vs 对象交互)、优缺点以及典型应用场景。通过 C 语言与 Java 的代码实例对比,阐述了从“关注步骤”到“关注属性与行为”的思维转变,是理解编程底层逻辑的优质入门指南。

kali7671的博客 379

面向对象 vs 面向过程:编程世界观的对决,Java开发者必知的思维转换

面向过程像流水线工人专注每个操作步骤适合简单确定的任务面向对象像城市规划师设计各种角色和交互适合复杂灵活的系统人脑更擅长对象思维(我们天生用名词思考)软件复杂度需要管理(封装、继承、多态三大武器)现实世界本就是对象的(万物皆对象)对于业务系统,先用对象建模;对于算法实现,可过程化处理现在,你不仅知道了区别,更掌握了何时使用哪种思维。这就是成为高级Java开发者的关键一步!

全栈开发工程师 860

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

先来看生活中的一个例子。想必每个人都下过五子棋吧?在下棋的整个过程中可以有两种不同的思路来实现:1、按步骤来看:(1)、开始游戏,(2)、黑子先走,(3)、绘制画面,(4)、判断输赢,(5)、轮到白子,(6)、绘制画面,(7)、判断输赢,(8)、返回步骤(2),(9)输出最后结果 2、按组成模块来看:(1)、黑白双方模块,(2)、棋盘模块,(3)、规则模块以上两种完全不同的设计思路,正好对应于编程...

weixin_39796152的博客 217

Java基础(七): 面向过程与面向对象、类与对象、成员变量与局部变量、值传递与引用传递、方法重载与方法重写

从执行者到设计者:一文掌握Java面向对象的核心思想与基础概念差异,彻底突破POP与OOP的思维鸿沟!

从基础到源码解析的学习记录 1989

面向对象VS面向过程:编程思想大揭秘

面向对象与面向过程是两种不同的编程范式。面向对象通过封装、继承和多态降低程序耦合度,提高灵活性和可重用性,但性能较低;面向过程以步骤为中心,性能更高但维护性较差。二者的核心区别在于:面向对象将问题分解为对象及其行为(空间逻辑),而面向过程关注实现步骤(时间逻辑)。以五子棋为例,面向过程按游戏步骤实现功能,面向对象则划分为玩家、棋盘和规则系统等对象协作完成。面向对象具有封装性、继承性和多态性三大特性,适用于需要灵活扩展的场景,而面向过程更适合性能优先的底层开发。

莫踌躇 1737

深入浅出--面向过程编程与面向对象编程

面向过程与面向对象 面向过程和面向对象到底是什么?又有什么区别?这是个编程界老生常谈的问题了;不理解的人觉得很可怕,理解的人又觉得很简单,包括写这篇文章之前我还觉得这是一个只可意会不可言传的概念,但读了众多资料之后,觉得有些比喻及示例确实能让一个几乎小白的人也能理解。 因为是“浅谈”,所以特别专业、工程上的东西就不说了,我们只来理解一下这两样东西到底是什么?浅层次上有什么区别?以及通过几个小比喻、小示例来深入浅出理解一下;不过首先我们需要清楚的是:无论是面向对象还是面向过程,它都只是一种编程思想。 一、概念

洪博hopes的博客 1648

面向对象(OOP) vs 面向过程(POP):一文彻底理解编程思想的核心差异

概念面向过程(POP)面向对象(OOP)编程思想以过程(函数)为核心,强调“做什么、怎么做”以对象(类)为核心,通过对象交互完成任务,程序结构是类和对象组成的模块化结构,代码可以通过继承、组合、多态等方式复用,强调“谁来做、具有什么行为”核心关注点流程控制、功能拆解封装、继承、多态举个例子做饭:准备 → 切菜 → 烧水 → 下锅做饭:让厨师对象去调用“炒菜”、“煮饭”等方法例如:编年体是以时间推移为核心,纪传体是以主人公的故事为核心。graph LR。

m0_73748193的博客 765

总结C语言、Python、Java三者的一些区别

1 .C是一种面向过程的语言,python和java面向对象 2 .C语言是编译语言,而Python和Java是解释型语言, 编译语言在运行的时候通过预处理、编译器编译等转化成机器语言(一种低级语言),生成可执行文件,运行的效率高,速度快;而解释型语言则是在程序每次运行的时候一句一句把程序运行,所以效率相比较偏低运行慢。相比较而言,C语言更加适合去写追求运行效率的和底层运行有关的东西 3 .常用I...

qq_44832147的博客 2万+
上一篇: RedHat系列(包括Centos)的软件安装机制--RPM
下一篇: 信息安全从业指南
Coder_Stephen
博客等级 码龄9年 16粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值