面向对象和面向过程的区别 布满荆棘的人生 2022-05-16 15:52 247阅读 0赞 其实在半年之前就对这个问题抱有疑问,但是迟迟没有学习,但是今天打算认真的把这里学习一下,虽然会花费一些时间,但是收获也会非常大,对今后的计算机学习有一定的帮助。 # 面向过程: # 是一种以过程为中心的编程思想,一般的面向过程最重要的是模块化的思想方法, 面向过程是围绕功能进行的,为每一个功能写一个函数,需要考虑其中的每一个细节,以步骤划分 # 面向对象 # 则像是组装,先确定一个系统是由哪些对象组成,再去分别设计这些对象,将他们像零件一样组装起来形成有完整功能的系统。 面向对象=“对象+类+继承+通信” **对象** 对象是面向对象开发模式的基本成分 每个对象可以用它本身的一组属性和他可以执行一组操作来定义 **类** 类是一组具有相同数据结构和相同操作的对象的集合 **继承** 继承是使用已存在的定义作为基础建立新定义的技术 # **面向对象和面向过程的区别 :** # 面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就ok 面向对象是把构成问题事物分解成各个对象 有人这样比喻: 1、开始游戏,2、黑子先走,3、绘制[画面][Link 1],4、判断输赢,5、轮到白子,6、绘制画面,7、判断输赢,8、返回步骤2,9、输出最后结果。把上面每个步骤用分别的函数来实现,问题就解决了。 而面向对象的设计则是从另外的[思路][Link 2]来解决问题。整个五子棋可以分为 1、黑白双方,这两方的行为是一模一样的,2、棋盘系统,负责绘制画面,3、[规则][Link 3]系统,负责判定诸如犯规、输赢等。第一类对象(玩家对象)负责接受用户输入,并告知第二类对象(棋盘对象)棋子布局的变化,棋盘对象接收到了棋子的i变化就要负责在屏幕上面显示出这种变化,同时利用第三类对象(规则系统)来对棋局进行判定。 # **面向对象的特点:** # <table> 面向对象的特点 <tbody> <tr> <td>封装性</td> <td>把过程和数据包围起来,对数据的访问只能通过已定义的界面,这些对象通过一个受保护的接口访问其他对象</td> </tr> <tr> <td>继承性</td> <td>是一种联结类的层级模型,对象的一个新类可以从现有的类中派生,这个过程称为类继承</td> </tr> <tr> <td>多态性</td> <td>多态性是指允许不同类的对象对同一消息作出响应</td> </tr> <tr> <td>抽象</td> <td>抽象就是忽略一个<u>主题</u>中与当前目标无关的方面</td> </tr> </tbody> </table> # **面向过程和面向对象的优缺点: ** # 在网上有很多他们的对比,但是在看完之后并没有特别清晰,**偶然发现一篇文章里面用一个通俗易懂的故事告诉了我们** : 用面向过程的方法写出来的程序是一份蛋炒饭,而用面向对象写出来的程序是一份盖浇饭。所谓盖浇饭,北京叫盖饭,东北叫烩饭,广东叫碟头饭,就是在一碗白米饭上面浇上一份盖菜,你喜欢什么菜,你就浇上什么菜。我觉得这个比喻还是比较贴切的。 蛋炒饭制作的细节,我不太清楚,因为我没当过厨师,也不会做饭,但最后的一道工序肯定是把米饭和鸡蛋混在一起炒匀。盖浇饭呢,则是把米饭和盖菜分别做好,你如果要一份红烧肉盖饭呢,就给你浇一份红烧肉;如果要一份青椒土豆盖浇饭,就给浇一份青椒土豆丝。 蛋炒饭的好处就是入味均匀,吃起来香。如果恰巧你不爱吃鸡蛋,只爱吃青菜的话,那么唯一的办法就是全部倒掉,重新做一份青菜炒饭了。盖浇饭就没这么多麻烦,你只需要把上面的盖菜拨掉,更换一份盖菜就可以了。盖浇饭的缺点是入味不均,可能没有蛋炒饭那么香。 到底是蛋炒饭好还是盖浇饭好呢?其实这类问题都很难回答,非要比个上下高低的话,就必须设定一个场景,否则只能说是各有所长。如果大家都不是美食家,没那么多讲究,那么从饭馆角度来讲的话,做盖浇饭显然比蛋炒饭更有优势,他可以组合出来任意多的组合,而且不会浪费。 盖浇饭的好处就是”菜”“饭”分离,从而提高了制作盖浇饭的灵活性。饭不满意就换饭,菜不满意换菜。用软件工程的专业术语就是”可维护性“比较好,”饭” 和”菜”的耦合度比较低。蛋炒饭将”蛋”“饭”搅和在一起,想换”蛋”“饭”中任何一种都很困难,耦合度很高,以至于”可维护性”比较差。 这个故事的原文链接:[https://blog.csdn.net/SHZnt/article/details/50382942][https_blog.csdn.net_SHZnt_article_details_50382942] ** 面向过程 ** 优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机、嵌入式开发、Linux/Unix等一般采用面向过程开发,性能是最重要的因素。 缺点:没有面向对象易维护、易复用、易扩展 ** ****面向对象 ** 优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统更加灵活、更加易于维护 缺点:性能比面向过程低 [Link 1]: http://www.so.com/s?q=%E7%94%BB%E9%9D%A2&ie=utf-8&src=internal_wenda_recommend_textn [Link 2]: http://www.so.com/s?q=%E6%80%9D%E8%B7%AF&ie=utf-8&src=internal_wenda_recommend_textn [Link 3]: http://www.so.com/s?q=%E8%A7%84%E5%88%99&ie=utf-8&src=internal_wenda_recommend_textn [https_blog.csdn.net_SHZnt_article_details_50382942]: https://blog.csdn.net/SHZnt/article/details/50382942
还没有评论,来说两句吧...