java是面向对象还是面向过程_Java面向对象编程和面向过程编程的区别[通俗易懂]

java是面向对象还是面向过程_Java面向对象编程和面向过程编程的区别[通俗易懂]Java面向对象编程和面向过程编程的区别本章节目标:了解面向对象,知道类和对象的区别,会进行类的定义。知识框架:Java面向对象编程和面向过程编程的区别“面向过程”(ProcedureOriented)是一种以过程为中心的编程思想,简称OP。“面向过程”也可称之为“面向记录”编程思想,就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。所以面向过…

大家好,又见面了,我是你们的朋友全栈君。

Java面向对象编程和面向过程编程的区别

本章节目标:

了解面向对象,知道类和对象的区别,会进行类的定义。

知识框架:

a1928467624207ae26d45869358f1138.png

Java面向对象编程和面向过程编程的区别

“面向过程”(Procedure Oriented)是一种以过程为中心的编程思想,简称OP。“面向过程”也可称之为“面向记录”编程思想,就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。所以面向过程的编程方式关注点不在“事物”上,而是做这件事分几步,先做什么,后做什么。例如:早晨起来:起床、穿衣、洗漱、上班,只要按照这个步骤来,就能实现“一天”的功能,整个这个过程中关注的是一步一步怎么做,并没有关注“人”这个事物。再例如:开门、调整座椅、系好安全带、踩离合、启动、挂档、给油,只要按照这个步骤来,车就走了,显然关注点还是在步骤上,只要实现每一步就行,整个过程并没有关注“汽车”这个事物。

“面向对象”(Object Oriented)是一种以对象为中心的编程思想,简称OO。随着计算机技术的不断提高,计算机被用于解决越来越复杂的问题。一切事物皆对象,通过面向对象的方式,将现实世界的事物抽象成对象。通过面向对象的方法,更利于用人理解的方式对复杂系统进行分析、设计与编程。同时,面向对象能有效提高编程的效率,通过封装技术,可以像搭积木的一样快速开发出一个全新的系统。面向对象将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性、灵活性和扩展性。

使用面向对象编程思想开发系统,在现代开发中会将面向对象贯穿整个过程,一般包括:OOA/OOD/OOP:

● OOA:面向对象分析(Object-Oriented Analysis)

● OOD:面向对象设计(Object-Oriented Design)

● OOP:面向对象编程(Object-Oriented Programming)

面向过程和面向对象有什么关系呢?面向过程其实是最为实际的一种思考方式,就算是面向对象的方法也是含有面向过程的思想。可以说面向过程是一种基础的方法。它考虑的是实际地实现。一般的面向过程是从上往下步步求精。面向对象主要是把事物给对象化,对象包括属性与行为。当程序规模不是很大时,面向过程的方法还会体现出一种优势。因为程序的流程很清楚,按着模块与函数的方法可以很好的组织。但对于复杂而庞大的系统来说,面向过程显得就很无力了。

为了帮助大家理解面向过程和面向对象,我们再来设想一个场景,假如说编写一段程序,模拟一个人抽烟的场景,采用面向过程的方式是这样的:买烟->买打火机->找能够抽烟的场合->点燃香烟->开抽,只要按照这个流程一步一步来,就可以实现抽烟场景,采用面向对象的方式关注点就不一样了,我们会想这个场景都有什么事物参与,每个事物应该有什么行为,然后将这些事物组合在一起,来描述这个场景,例如:一个会抽烟的人(对象)+香烟(对象)+打火机(对象)+允许抽烟的场所(对象),将以上4个对象组合在一起,就实现了抽烟场景,其中采用面向对象的方式开发具有很强的扩展力,例如:人这个对象是可以更换的,打火机也是可以更换的,香烟的品牌也是可以更换的,包括抽烟的场合也是可以更换的。如果采用面向过程方式开发,一步依赖另一步,任何一步都不能变化,变化其中一步则整个软件都会受到影响。

网上发现了一篇文章,说了一下OP与OO的不同,并且打了一个比喻,通俗易懂。有人这么形容OP和OO的不同:用面向过程的方法写出来的程序是一份蛋炒饭,而用面向对象写出来的程序是一份盖浇饭。所谓盖浇饭,北京叫盖饭,东北叫烩饭,广东叫碟头饭,就是在一碗白米饭上面浇上一份盖菜,你喜欢什么菜,你就浇上什么菜。我觉得这个比喻还是比较贴切的。蛋炒饭制作的细节,我不太清楚,因为我没当过厨师,也不会做饭,但最后的一道工序肯定是把米饭和鸡蛋混在一起炒匀。盖浇饭呢,则是把米饭和盖菜分别做好,你如果要一份红烧肉盖饭呢,就给你浇一份红烧肉;如果要一份青椒土豆盖浇饭,就给浇一份青椒土豆丝。蛋炒饭的好处就是入味均匀,吃起来香。如果恰巧你不爱吃鸡蛋,只爱吃青菜的话,那么唯一的办法就是全部倒掉,重新做一份青菜炒饭了。盖浇饭就没这么多麻烦,你只需要把上面的盖菜拨掉,更换一份盖菜就可以了。盖浇饭的缺点是入味不均,可能没有蛋炒饭那么香。到底是蛋炒饭好还是盖浇饭好呢?其实这类问题都很难回答,非要比个上下高低的话,就必须设定一个场景,否则只能说是各有所长。如果大家都不是美食家,没那么多讲究,那么从饭馆角度来讲的话,做盖浇饭显然比蛋炒饭更有优势,他可以组合出来任意多的组合,而且不会浪费。盖浇饭的好处就是”菜””饭”分离,从而提高了制作盖浇饭的灵活性。饭不满意就换饭,菜不满意换菜。用软件工程的专业术语就是”可维护性”比较好,”饭” 和”菜”的耦合度比较低。蛋炒饭将”蛋””饭”搅和在一起,想换”蛋””饭”中任何一种都很困难,耦合度很高,以至于”可维护性”比较差。软件工程追求的目标之一就是可维护性,可维护性主要表现在3个方面:可理解性、可测试性和可修改性。面向对象的好处之一就是显著的改善了软件系统的可维护性。

对于编程语言来说,基于C语言的编程是面向过程的,C++只能说一半面向过程一半面向对象,java语言就是一门完全面向对象的编程语言。有C++基础的同学,学习java应该很快,因为java底层是C++语言实现的。当然,除了java语言之外,还有很多都是完全面向对象的编程语言,例如:C#、Python等。

对于面向过程和面向对象的理解,目前阶段来说还是很难的,毕竟大家现在还停留在只会定义变量,写个if语句阶段,慢慢来吧,我们需要不断的学习后面的内容,然后再加深对面向对象的理解。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/157091.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 关于keil注册机的问题[通俗易懂]

    关于keil注册机的问题[通俗易懂]今天用keil时,因为程序太大(超过2k),所以出现了,不能生成hex文件的问题,下载了一个注册机后还是不行,最终找到了解决方法。WIN7系统使用注册机一定要使用xp兼容模式,以管理员身份运行。此外,win7下安装keil的路径不能出现中文,只能全部使用英文,不然还会有问题。右键点快捷方式或者执行程序→属性→兼容性→选项卡→以兼容模式运行打钩→选择兼容的WINDOWS版本(SP3)→以管理

  • pcie和minipcie区别_minipcie接口定义

    pcie和minipcie区别_minipcie接口定义1,产品介绍:MCIeCAN系列miniPCIe接口CAN卡,具有1~2路CAN通道和一路PCIExpressmini接口,插到工控机或单板电脑的PCIExpressmini卡槽上,快速扩展出1~2路CAN通道。CAN接口电气隔离高达2500VDC,具有优秀的EMC性能,可靠性测试项目:ESD接触放电8KV、浪涌±1KV、脉冲群±2KV,工业级,通过CE-EMC和FCC认证。,2,配套功能配套测试软件LCANTest使用,接收、发送、查看、分析、记录、回放CAN报文;配套丰富驱动;配套包含库函数、

  • mybatis返回值为map类型时怎么处理_构造函数不能有返回类型

    mybatis返回值为map类型时怎么处理_构造函数不能有返回类型最有用到mybatis返回一个map结果集,然后就针对性的在网上找了一些相关大牛的总结:1.mybatis返回map结果集-红尘中人·杨哥-博客园2.MyBatis返回Map|码农网然后经过自己的测试终于可以应用实际业务中1、如果你确定返回的数据只有一条,你可以这样整xml中:<selectid=”searchncomedateByInvestID”resultMap=”java.util.HashMap”>selectt1.invest.

  • 串口db9接口定义_db9串口定义及颜色

    串口db9接口定义_db9串口定义及颜色这个接头都是以公头为准,所有接头还是以公头去记.RS-232端(DB9公头/针型)引脚定义2:RXD3:TXD5:GND1/4/6:内部相链接7/8:内部相链接1.RS-232端(D

  • tp路由+伪静态+去掉index.php

    tp路由+伪静态+去掉index.php

  • pycharm2021.4.2激活码(破解版激活)

    pycharm2021.4.2激活码(破解版激活),https://javaforall.cn/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号