zoukankan      html  css  js  c++  java
  • 面向过程和面向对象编程的优缺点

    【1】面向过程和面向对象的比较

    网上发现了一篇文章,说了一下OP与OO的不同,并且打了一个比喻,通俗易懂。

    有人这么形容OP和OO的不同:用面向过程的方法写出来的程序是一份蛋炒饭,而用面向对象写出来的程序是一份盖浇饭。

    所谓盖浇饭,北京叫盖饭,东北叫烩饭,广东叫碟头饭,就是在一碗白米饭上面浇上一份盖菜,你喜欢什么菜,你就浇上什么菜。我觉得这个比喻还是比较贴切的。

      

    蛋炒饭制作的细节,我不太清楚,因为我没当过厨师,也不会做饭,但最后的一道工序肯定是把米饭和鸡蛋混在一起炒匀。

    盖浇饭呢,则是把米饭和盖菜分别做好,你如果要一份红烧肉盖饭呢,就给你浇一份红烧肉;如果要一份青椒土豆盖浇饭,就给浇一份青椒土豆丝。

      

    蛋炒饭的好处就是入味均匀,吃起来香。如果恰巧你不爱吃鸡蛋,只爱吃青菜的话,那么唯一的办法就是全部倒掉,重新做一份青菜炒饭了。

    盖浇饭就没这么多麻烦,你只需要把上面的盖菜拨掉,更换一份盖菜就可以了。盖浇饭的缺点是入味不均,可能没有蛋炒饭那么香。

      

    到底是蛋炒饭好还是盖浇饭好呢?其实这类问题都很难回答,非要比个上下高低的话,就必须设定一个场景,否则只能说是各有所长。

    如果大家都不是美食家,没那么多讲究,那么从饭馆角度来讲的话,做盖浇饭显然比蛋炒饭更有优势,他可以组合出来任意多的组合,而且不会浪费。

      

    盖浇饭的好处就是“菜”“饭”分离,从而提高了制作盖浇饭的灵活性。饭不满意就换饭,菜不满意换菜。

    用软件工程的专业术语就是“可维护性”比较好,“饭”和“菜”的耦合度比较低。

    蛋炒饭将“蛋”“饭”搅和在一起,想换“蛋”“饭”中任何一种都很困难,耦合度很高,以至于“可维护性”比较差。

    软件工程追求的目标之一就是可维护性,可维护性主要表现在3个方面:可理解性、可测试性和可修改性。面向对象的好处之一就是显著的改善了软件系统的可维护性。

    【2】面向对象开发的优点

    1、易维护。采用面向对象思想设计的结构,可读性高,由于继承的存在,即使改变需求,那么维护也只是在局部模块,所以维护起来是非常方便和较低成本的。

    2、质量高。在设计时,可重用现有的,在以前的项目的领域中已被测试过的类使系统满足业务需求并具有较高的质量。

    3、效率高。在软件开发时,根据设计的需要对现实世界的事物进行抽象,产生类。使用这样的方法解决问题,接近于日常生活和自然的思考方式,势必提高软件开发的效率和质量。

    4、易扩展。由于继承、封装、多态的特性,自然设计出高内聚、低耦合的系统结构,使得系统更灵活、更容易扩展,而且成本较低。

    【3】面向对象的特点

    1、利用特定软件直接从对象客体的描述到软件结构的转换。

    2、解决了传统结构化方法中客观世界描述工具与软件结构的不一致性。

    3、减少了从系统分析、设计到软件模块结构之间的多次转换映射的繁杂过程。

    【4】C++语言的优点

    1、是一种全新的系统分析设计方法(对象、类、结构属性、方法)。

    2、适用于各类信息系统的开发。

    3、实现了对客观世界描述到软件结构的直接转换 ,大大减少后续软件开发量。

    4、开发工作的重用性、继承性高,降低重复工作量。

    5、缩短了开发周期。

    【5】C++语言的缺点

    1、需要一定的软件支持环境。

    2、不太适宜大型的MIS开发,若缺乏整体系统设计划分,易造成系统结构不合理、各部分关系失调等问题。

    3、只能在现有业务基础上进行分类整理,不能从科学管理角度进行理顺和优化。

    4、初学者不易接受、难学。

    Good  Good  Study, Day  Day  Up.

    顺序  选择  循环  总结

  • 相关阅读:
    办公开发环境(外接显示屏,wifi热点)
    awk, sed, xargs, bash
    regular expression, grep (python, linux)
    Linux环境常用命令
    Approximate timing for various operations on a typical PC
    numpy初用
    shell代码模板
    virtualenv(for python)
    《Oracle RAC性能优化》
    【Oracle 集群】ORACLE DATABASE 11G RAC 知识图文详细教程之缓存融合技术和主要后台进程(转)
  • 原文地址:https://www.cnblogs.com/Braveliu/p/6561807.html
Copyright © 2011-2022 走看看