zoukankan      html  css  js  c++  java
  • Java基础01 面向对象与面向过程细解

            Java的编程思想是面向对象,面向对象的思想也是从面向过程而发展过来的。

    什么是面向过程

    思想:自顶而下的编程模式

            面向过程是针对某一个问题,分析出要解决问题的步骤,然后用函数实现每一个步骤,依次调用。面向过程注重的是过程中的每一步。

    什么事面向对象

    思想:将事物高度抽象化的编程模式

            面向对象是把构成问题的事务分解成一个个步骤,对每一个步骤进行相应的抽象,形成对象,建立对象的目的不是为了完成一个步骤,而是为了描述某个事物在整个解决的步骤中的行为;通过不同对象之间的调用,组合解决问题。

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

            经典例子:五子棋游戏的设计
            面向过程:开始-黑走-绘制棋盘-判断输赢-白走-绘制棋盘-判断输赢-循环。
            面向对象:创建棋子对象负责演算,创建棋盘对象负责画布,创建规则对象负责判断。
            从上面的例子,我们可以看出,面向过程的编程思想关注的是每一步是怎么实现就可以,而面向对象编程思想行为,不重复造轮子,创建一次处处都可以使用。

    面向对象的特点

            在了解面向对象的特点之前,我们先了解对象,在我们现实生活中其实处处都应用到(所有的设计思想来源于生活);我们平常称的苹果、桃子、狮子、鱼,都是一个个对象,每一个对象都是由属性和方法构成的,属性是用来描述对象的特征的,比如狮子的属性可以有 体型大小、性别、凶猛程度等等;方法是用来描述对象的行为,比如狮子对象的方法可以有 吃东西、睡觉等等。
            类:具有相同属性的对象的统称,是一个抽象的概念。比如“人”就是一个类,而每个人的名字可以看做为一个对象,通俗的说,类就是一个模具,它定义的是它所包含的全体对象的公共特征和功能,对象就是类的实例,就是把一个抽象事物转变成一个具体的事务,比如 “人” 和 “小明”,我们操作是对象而不是类,就像我们生活中叫一个人去做事情,一般会叫“某某某,你去打扫一下房间”,而不会说 “人,你去打扫一下房间”。
            面向对象有三大特性,分别是:封装性、继承性、多态性,这三大特性会在后面的博客文章中展开述说,这里主要讲述面向过程与面向对象的含义和区别。

    面向对象与面向过程的优缺点

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

    通过这个例子,我们做一个总结:

    面向过程

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

    面向对象

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

  • 相关阅读:
    Merge Sorted Array
    Remove Duplicates from Sorted List
    Climbing Stairs
    Plus One
    微信开发 (四) 微信网页授权
    基于注解的实现获取微信openId1
    利用TortoiseGit(小乌龟)将项目上传至GitHub网站
    微信网页授权多次回调code请求
    安装git之后,桌面出现蓝色问号的解决方法
    两个日期之间的日历
  • 原文地址:https://www.cnblogs.com/sophia-show/p/13627689.html
Copyright © 2011-2022 走看看