• 【面向对象】面向对象编程思维(一)


    复制代码
    前言:
        每当提到面向对象的时候,初学者肯定都是一脸懵逼的状态,到底什么是面向对象?会用面向对象后有什么牛逼之处吗?不会用是不是就会死掉?答案肯定不会死掉,我们可以来简单的举一
      个栗子

      1、当你想到熊猫的时候你想到了什么? 答:“国宝”
      2、当你看到“国宝”穿上衣服的时候你想到了什么名字? 答:“功夫熊猫”;
      

      其实你可以理解成面向对象就是一种武功!你可以想象一下会武功和不会武功的人有什么区别?“走路带风、飞檐走壁、不食人间烟火、让妹子一看你就走不动路了....”,好咱们先意淫到
      这里,接下来你可以在想一下普通人不会武功能不能在这个社会上生存,答案是肯定可以,接下来咱们回到咱们的编程中,如果你不会面向对象难到就不能写代码了吗?不会的,你还会继续
    做你的码农!
    只是当你会用面向对象写东西的时候你就会发现你的思维逻辑、你的撸代码的水平、以及你撸代码的姿势都不一样了。因为你有可能在一点点的走向中级或者高级程序员!!!好了我不装逼了
    下面我们正式开始了解面向对象
    复制代码
    复制代码
    首先我们先来了解下我们以前写代码的一种思路:面向过程
      
    什么是面向过程?
      我们先来举第一个小"栗子"

             

       当刚进游戏的时候我们肯定会先学习盲僧的Q技能,然后等等级上来以后我们在去学习盲僧的W技能,等到3级以后我们在去学习盲僧的E技能,依次类型,最后等到6级的时候我们肯定会

        学习R技能,因为你迫不及待的想秀一波你的R闪-------其实编程就像咱们玩游戏一样技能一步一步的来。在编程里面如果我们想要做某一个效果,首先我们必须获取到相关的对象,然

       后在给这个对象加一些相应的预处理函数......然后在做下一步操作!其实向这样的一个过程就是面向过程的编写方式!其实你也可以理解成javascript的同步操作!同步操作?什么是

       同步?老师你在搞什么鬼,面向过程我还在懵逼状态怎么现在又跑到同步操作了?别急我们一步步来

    什么是javascript中的同步&&异步?

      让我们在来举一个例子!

        同步:在javascript的编程思想里面你可以这样理解----》买菜--->洗菜--->切菜--->炒菜!这4步就是一步一步地完成,它的顺序很重要,你只能一步步去实现!这样的一个过程

           其实就是同步,在咱们的编程中顺序执行其实就是同步的思维,你也可以理解成当去执行某一件事件的时候就不能再去执行其他事件了

         异步:边洗脚边看电视、边唱歌边跳舞、边打LOL边骂人、边吃饭边上厕所(貌似这个栗子有点味道)...其实异步也就是当去执行某一件事情的时候不会影响另一件事情的执行

    当我们了解了什么是同步和异步后我们在回来看一下什么是面向过程?

      上面我们已经解释了面向过程跟我们的同步特别类似,所有的事情都是一步步来执行的,无法跳过某一个环节去执行下一个环节,例如你总不能不买菜就去炒菜了吧?在咱们的代码中也是

      这样的你必须先获取一个对象然后在给这个对象加一个事件;这样的一些过程其实就是面向过程

       

    最后我们以专业的角度来解释下面向过程

      面向过程:以过程为核心,解决问题时,考虑的是每一步该怎么做

     
    复制代码
    复制代码
    面向对象

      什么是面向对象?
        我们先用大白话来解释一波:面向对象的思想最早不是在编程中出现,而是在管理学中出现的。举一个栗子:一个公司布置了一个任务,给其中的一个领导者分配了10个人,他用了
        10天时间完成了这份工作,而另一个领导者分配了5个人,用3天时间就完成了这个工作。后者是觉大多数公司最想要的一个人才,因为这个人能够懂得如何合理的分工,分配任务。
        
      
        而在我们代码中也是一样的,同样一个功能如果一个人去写那么可能会耗费很长时间,当写完这个功能的时候,产品狗又让你去修改某一块的一个需求的时候你回瞬间崩溃,因为每一
        个程序员都有一个共同的心声,那就是让我写代码行,但是千万别让我去改代码。但是如果我们要用面向对象的思维去书写代码的时候我们就在也不用害怕产品狗让我们去改某一个需
        求了,因为面向对象的思维就是把一个“大问题分成若干个小问题,并试图分工协作来完成”,这也是我们今后要学习模块化的一个思想

        说了这么多概念性的面向对象思想,下面我们来举一个实际的栗子来了解一下面向对象的思想
     
      
      谷歌的模块化手机
          

        谷歌的模块化手机其实跟我们的面向对象编程思维特别类型,这款手机的一个优势就在于

          如果摄像头坏了,你只需要换一个摄像头模块就可以了

          如果手机听筒坏了,那么你只需要换一个手机听筒的模块就可以了

          如果你想给这个手机安装一个外接键盘,那么只需要安装一个外接键盘的模块就可以了

          如果你想给这个手机安装一个定时炸弹,那么你只需要安装一个定时炸弹的模块就可以了......

        我们的面向对象编程思想也是如此,我们可以把一个功能中的一些方法当做一个模块,这样我们就可以分工协作,同样也不用担心某一个环节需要有所变动,如果需要有变动那么我们只

        需要改动相应的模块即可

     下面我们在来举一个栗子------(请不要嫌我啰嗦,只要你能明白了面向对象的编程思维那么编写代码更本就不是问题)

        我们可以想一个问题,在远古时代有没有这样一种人,他的心肝脾肺肾可以用一个器官来代替?可能会有这样一批人,但是这样的一批人为什么没有活到了现在呢?因为他们的弱点非

        常明显,想要杀死这个人只需要把这个综合器官干掉就可以了,这也是好多科幻电影里面的场景,一个boos特别厉害,但是到电影快要结尾的时候发现了它某个弱点,然后一个大招把

        他给干死了。

        回到现实当中,现在人的身体其实就可以理解成一个面向对象的编程思维,身体的每一个器官都是一个模块,都负责相应的事情,如果某一个器官出了问题那么只需要去根治这个器官就

        可以了,而不至于死亡!

    以上的一些栗子就是面向对象的编程思维,不知道大家能不能理解。下面我们将总结一下面向对象的编程思维

      面向对象的编程思维:面向对象思维主张的是:团队---配合---分工---协作,将大问题拆分成诺干个小问题,并试图用分工协作来完成。这也是我们长说的一句话“高内聚、低耦合”

    
    
    
     
  • 相关阅读:
    java 面向对象(十八):包装类的使用
    java 面向对象(十七):单元测试方法
    rxjava2学习
    多线程-wait(),notify(),notifyAll()
    多线程-Thread.join()的运用
    66. Plus One
    理解Android View的事件传递机制
    78. Subsets
    程序员学习与成长的方法(转发)
    android查询天气demo,基于mvp+kotlin+rxjava2+retrofit2
  • 原文地址:https://www.cnblogs.com/liuhaov/p/13492531.html
Copyright © 2020-2023  润新知