JAVA菜鸟学习之旅(面向对象与面向过程的区别总结归纳)

第一次接触面向对象的时候,是学习Python,但由于Python设计定位在面向过程,所以没有面向对象做一个很好的了解。
现在学习Java,主要依据oop的面向对象设计产生,所以对两者区别做一次总结学习。
(小白初学,本文主要借鉴CSDN、博客园等诸多大佬博客,供大家一起学习)
https://www.cnblogs.com/pylearner/p/10903266.html)

一、面向对象的特点

什么是对象(Object),简单来说对象就是现实世界存在的任何事务都可以称之为对象,有着自己独特的个性。
随处可见的一种事物就是对象,对象是事物存在的实体,例如一个人。

面向对象就是构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。

通常将对象划分成两个部分,即静态部分和动态部分。

静态部分被称为“属性”,任何对象都具有自身属性,这些属性不仅是客观存在的,而且是不能被忽略的,例如人的性别;
动态部分则指的是对象的行为,即对象执行的动作,例如:人可以行走。

面向对象 —— 谁来做?

相比较函数,面向对象 是更大的封装,根据职责在一个对象中封装多个方法.
在完成某一个需求前,首先确定 职责 —— 要做的事情(方法)根据 职责 确定不同的 对象,在对象内部封装不同的方法(多个)最后完成的代码,就是顺序地让不同的对象调用不同的方法
特点:注重 对象和职责,不同的对象承担不同的职责更加适合应对复杂的需求变化,是专门应对复杂项目开发,提供的固定套路需要在面向过程基础上,再学习一些面向对象的语法.

二、面向过程的特点

什么是过程,我认为过程就是步骤,是解决问题的按部就班。

面向过程不同于面向对象,面向过程分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。

面相过程 —— 怎么做?

把完成某一个需求的 所有步骤 从头到尾 逐步实现根据开发需求,将某些 功能独立 的代码 封装 成一个又一个 函数最后完成的代码,就是顺序地调用 不同的函数
特点:注重 步骤与过程,不注重职责分工如果需求复杂,代码会变得很复杂开发复杂项目,没有固定的套路,开发难度很大!

三,大佬形象的比喻说法:

用面向过程的方法写出来的程序是一份蛋炒饭,而用面向对象写出来的程序是一份盖浇饭。所谓盖浇饭,北京叫盖饭,东北叫烩饭,广东叫碟头饭,就是在一碗白米饭上面浇上一份盖菜,你喜欢什么菜,你就浇上什么菜。我觉得这个比喻还是比较贴切的。

  蛋炒饭制作的细节,我不太清楚,因为我没当过厨师,也不会做饭,但最后的一道工序肯定是把米饭和鸡蛋混在一起炒匀。盖浇饭呢,则是把米饭和盖菜分别做好,你如果要一份红烧肉盖饭呢,就给你浇一份红烧肉;如果要一份青椒土豆盖浇饭,就给浇一份青椒土豆丝。

  蛋炒饭的好处就是入味均匀,吃起来香。如果恰巧你不爱吃鸡蛋,只爱吃青菜的话,那么唯一的办法就是全部倒掉,重新做一份青菜炒饭了。盖浇饭就没这么多麻烦,你只需要把上面的盖菜拨掉,更换一份盖菜就可以了。盖浇饭的缺点是入味不均,可能没有蛋炒饭那么香。

  到底是蛋炒饭好还是盖浇饭好呢?其实这类问题都很难回答,非要比个上下高低的话,就必须设定一个场景,否则只能说是各有所长。如果大家都不是美食家,没那么多讲究,那么从饭馆角度来讲的话,做盖浇饭显然比蛋炒饭更有优势,他可以组合出来任意多的组合,而且不会浪费。

  盖浇饭的好处就是”菜”“饭”分离,从而提高了制作盖浇饭的灵活性。饭不满意就换饭,菜不满意换菜。用软件工程的专业术语就是”可维护性“比较好,”饭” 和”菜”的耦合度比较低。蛋炒饭将”蛋”“饭”搅和在一起,想换”蛋”“饭”中任何一种都很困难,耦合度很高,以至于”可维护性”比较差。软件工程追求的目标之一就是可维护性,可维护性主要表现在3个方面:可理解性、可测试性和可修改性。面向对象的好处之一就是显著的改善了软件系统的可维护性。

四、总结

面向过程:

优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机、嵌入式开发、 Linux/Unix等一般采用面向过程开发,性能是最重要的因素。
缺点:没有面向对象易维护、易复用、易扩展

面向对象:

优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统 更加灵活、更加易于维护 
缺点:性能比面向过程低

(https://www.cnblogs.com/pylearner/p/10903266.html)
(https://zhuanlan.zhihu.com/p/119315371)

posted @ 2022-03-09 21:12  B1smarck  阅读(70)  评论(0编辑  收藏  举报