Java---面向过程与面向对象的区别

🤪本篇本章也是看了几篇博主的描述后 , 自己整理的一份文档 , 如果哪里说的不对 , 各路大佬帮忙指出🥳🥳🥳


 一、区别简述

面向过程👉面向过程(Procedure Oriented):以过程为核心,强调事件的流程、顺序

👉面向对象(Object Oriented):以对象为核心,强调事件的角色、主体

🤣这么看是不是有些懵(大佬请忽略这句话) , 我刚看的时候也是这种感觉 , 太官方了理解不了 , 下面先给大家举一个小栗子🍐


💡就拿小明起床上班这件事来说;🙎🏾‍♂️🛌🏻🚗

⭕️从面向过程的角度看就是:1、起床;2、刷牙洗脸;3、开车上班。

⭕️从面向对象的角度看就是:主人公:小明;拥有的财产:床、牙刷、车;小明可以做什么:从床上站起来、刷牙、开车。


✔️是不是有点画面在脑子里了 , 我们继续

二、面向过程

 传统的面向过程的编程思想总结起来就八个字——自顶向下,逐步细化!实现步骤如下:

🔺将要实现的功能描述为一个从开始到结束按部就班的连续的步骤(过程);

🔺依次逐步完成这些步骤,如果某一步的难度较大,又可以将该步骤再次细化为若干个子步骤,以此类推,一直到结束得到想要的结果;

🔺程序的主体是函数,一个函数就是一个封装起来的模块,可以实现一定的功能,各个子步骤往往就是通过各个函数来完成的,从而实现代码的重用和模块化编程!

🎁接下来在给大家举一个比较详细的例子---学生到校报道注册

🍭🍭🍭面向过程,就是按照我们分析好了的步骤,按部就班的依次执行就行了!所以当我们用面向过程的思想去编程或解决问题时,首先一定要把详细的实现过程弄清楚。一旦过程设计清楚,代码的实现简直轻而易举。

👀看到这里是不是已经对面向过程有了一个基本的了解了呢 , 接下来我们来看面向对象


三、面向对象

        😼所谓的面向对象,就是在编程的时候尽可能的去模拟真实的现实世界,按照现实世界中的逻辑去处理一个问题,分析问题中参与 其中的有哪些实体,这些实体应该有什么属性和方法,我们如何通过调用这些实体的属性和方法去解决问题。现实世界中,任何一个操作或者是业务逻辑的实现都需要一个实体来完成,也就是说,实体就是动作的支配者,没有实体,就肯定没有动作发生!

       🧐现在让我们思考下,上述注册报名的每一个步骤都有哪些动词?提出 提供 缴 收 获得 分配 增加有动词就一定有实现这个动作 的实体!

        🤏所谓的模拟现实世界,就是使计算机的编程语言在解决相关业务逻辑的方式,与真实的业务逻辑的发生保持一致!需要使每一个动作的背后都一个完成这个动作的实体!(比如三层架构中的Dao、Service、Action)因为任何功能的实现都是依赖于一个具体的实体的“动作|操作|行动”,可以看作是一个又一个的实体在发挥其各自的“能力”并在内部进行协调有序的调用过程!

当采用面向对象的思想解决问题时,可分为下面几步:

        ⭕️分析哪些动作是由哪些实体发出的;

        ⭕️定义这些实体,为其增加相应的属性和功能;

        ⭕️实体去执行相应的功能或动作。

        ⭕️采用面向对象的思想,解决上面的报名问题,应该如下:

       🔑 第一步:分析那些动作是由哪些实体发出的

                        🍮学生提出报名

                        🍮学生缴费

                        🍮机构收费

                        🍮教师分配教室

                        🍮班级增加学生信息

                        👉于是,在整个过程中,一共有四个实体:

                                学生、机构、教师、班级!

                        在现实中的一个具体的实体,就是计算机编程中的一个对象!

        🔑 第二步:定义这些实体,为其增加相应的属性和功能

                        🍮属性就是实体在现实世界中的一些特征表现。如:

                        👉人的属性:姓名、性别、身高、三围、体重、电话号码、

                                          家庭住址、籍贯等

                        👉 手机的属性:品牌、价格、颜色、尺寸、待机时间等

                        🧁功能就是能完成的动作,在面向对象的术语中,动作就叫作方法或者函数。如:

                        👉人的动作(功能):吃饭、睡觉、学习、打游戏、走路、跑步、缴费!

                        👉手机的动作(功能):打电话、发短信、拍照、打游戏、视频、看电影等

                        💌下图显示了在上述实例中出现的实体以及相应的属性和 能:

 

        🔑 第三步:让实体去执行相应的功能或动作

                         🍮学生提出报名

                         🍮学生缴费

                         🍮学校收费

                         🍮教师分配教室

                         🍮班级增加学生信息

       ❤️❤️❤️所以说,面向过程主要是针对功能,而面向对象主要是针对能够实现该功能的背后的实体。面向对象实质上就是面向实体,所以当我们使用面向对象进行编程时,一定要建立这样一个观念:万物皆对象!

       面向对象当中又会有面向过程,比如“学校收费这一步”,如果比较复杂,就需要细化出多个步骤,这又有点像面向过程 

      😃好啦,栗子就给大家举到这里了 , 相信看到这里对于面向对象喝过程应该在脑海里有了大体的画面 , 最后给大家坐下总结


四、面向对象和面向过程的比较

       📕在看完上面的内容后会明显的感觉两者之间有着很大的区别。

       👉面向过程简单直接,易于入门理解,模块化程度较低。

       👉面向对象相对于面向过程较为复杂,不易理解,模块化程度较高。

       🌻两者都可以实现代码重用和模块化编程,但是面对对象的模块化更深,数据更封闭,也更安全!因为面向对象的封装性更强!面对对象的思维方式更加贴近于现实生活,更容易解决大型的复杂的业务逻辑从前期开发角度上来看,面对对象远比面向过程要复杂,但是从维护和扩展功能的角度上来看,面对对象远比面向过程要简单!

        💡如何选择面向对象还是面向过程,对于一个有着丰富开发经验的老手来说,这是个得心应手的过程。而对于一个新手而言,其实从两者的对比就可以看出,当我们的业务逻辑比较简单时,使用面向过程能更快的实现。但是当我们的业务逻辑比较复杂时,为了将来的维护和扩展,还是面向对象更为靠谱点。

        ⌚️⌚️⌚️​​​​​​​最后从以下三个维度坐下最后的总结⌚️⌚️⌚️

        (1)从设计思路来看

           ✈️面向过程:程序设计的重点是分析解决问题的步骤,以及完成步骤的流程,是一种结构化自上而下的程序设计方法。

          🚀面向对象:程序设计的重点是把构成问题的事物分解成对象,从局部着手,通过迭代的方式逐步构建出整个程序,是一种以数据为核心,以类设计为主的自下而上的程序设计方法。

        (2)从适用范围来看

         ✈️ 面向过程:由于不涉及实例化对象等操作,程序性能更高,开销更少,因此像切入式等对资源要求较高的系统大多都采用面向过程开发。

         🚀面向对象:由于其抽象、封装、继承、多态的特性,使得系统具有更好的扩展性、维护性、复用性,对于功能复杂且维护成本较高的系统采用面向对象的开发。

        (3)从代码复用来看

        二者都可以实现代码复用,但是面向过程主要是函数,而面向对象主要是


 🎉🎉🎉哪里描述的有问题 , 各路大佬多多指教 , 看懂的话帮忙点点赞吧🤣🤣🤣

  • 8
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,让我来回答你关于Java中的异常的问题。 在Java编程中,异常(Exception)是指程序在运行过程中发生了错误或异常情况,导致程序无法正常执行。Java中的异常可以分为两种类型:受检异常(checked exception)和非受检异常(unchecked exception)。 受检异常需要在方法签名中声明,也就是在方法头部使用throws关键字抛出异常。这种异常通常表示程序运行过程中的正常错误,例如文件不存在、网络连接中断等。开发者必须在代码中捕获并处理这些异常,否则编译器会报错。 非受检异常通常由程序本身的错误引起,例如数组越界、空指针等,无法在编译时检查。这种异常不需要在方法签名中声明,也不需要捕获和处理,如果程序出现这种异常,通常会导致程序崩溃。 Java中的异常处理机制使用try-catch语句块来处理异常。开发者可以在try块中编写可能会抛出异常的代码,然后在catch块中捕获并处理异常。 例如,下面的代码演示了如何使用try-catch块来处理文件不存在的异常: ``` try { FileInputStream file = new FileInputStream("test.txt"); } catch (FileNotFoundException e) { System.out.println("文件不存在!"); e.printStackTrace(); } ``` 在上面的代码中,我们尝试打开一个名为“test.txt”的文件,如果文件不存在,则会抛出FileNotFoundException异常。在catch块中,我们捕获并处理了这个异常,输出了一个提示信息并打印了异常的堆栈跟踪。 希望这个回答能够解决你的疑问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值