【面向對象】用大白話扯扯那"神奇"的面向對象編程思維(一)------【巷子】


前言:
    每當提到面向對象的時候,初學者肯定都是一臉懵逼的狀態,到底什么是面向對象?會用面向對象后有什么牛逼之處嗎?不會用是不是就會死掉?答案肯定不會死掉,我們可以來簡單的舉一
  個栗子

  1、當你想到熊貓的時候你想到了什么? 答:“國寶”
  2、當你看到“國寶”穿上衣服的時候你想到了什么名字? 答:“功夫熊貓”;
  

  其實你可以理解成面向對象就是一種武功!你可以想象一下會武功和不會武功的人有什么區別?“走路帶風、飛檐走壁、不食人間煙火、讓妹子一看你就走不動路了....”,好咱們先意淫到
  這里,接下來你可以在想一下普通人不會武功能不能在這個社會上生存,答案是肯定可以,接下來咱們回到咱們的編程中,如果你不會面向對象難到就不能寫代碼了嗎?不會的,你還會繼續
做你的碼農!
只是當你會用面向對象寫東西的時候你就會發現你的思維邏輯、你的擼代碼的水平、以及你擼代碼的姿勢都不一樣了。因為你有可能在一點點的走向中級或者高級程序員!!!好了我不裝逼了
下面我們正式開始了解面向對象
首先我們先來了解下我們以前寫代碼的一種思路:面向過程
  
什么是面向過程?
  我們先來舉第一個小"栗子"

         

   當剛進游戲的時候我們肯定會先學習盲僧的Q技能,然后等等級上來以后我們在去學習盲僧的W技能,等到3級以后我們在去學習盲僧的E技能,依次類型,最后等到6級的時候我們肯定會

    學習R技能,因為你迫不及待的想秀一波你的R閃-------其實編程就像咱們玩游戲一樣技能一步一步的來。在編程里面如果我們想要做某一個效果,首先我們必須獲取到相關的對象,然

   后在給這個對象加一些相應的預處理函數......然后在做下一步操作!其實向這樣的一個過程就是面向過程的編寫方式!其實你也可以理解成javascript的同步操作!同步操作?什么是

   同步?老師你在搞什么鬼,面向過程我還在懵逼狀態怎么現在又跑到同步操作了?別急我們一步步來

 

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

  讓我們在來舉一個例子!

    同步:在javascript的編程思想里面你可以這樣理解----》買菜--->洗菜--->切菜--->炒菜!這4步就是一步一步地完成,它的順序很重要,你只能一步步去實現!這樣的一個過程

       其實就是同步,在咱們的編程中順序執行其實就是同步的思維,你也可以理解成當去執行某一件事件的時候就不能再去執行其他事件了

     異步:邊洗腳邊看電視、邊唱歌邊跳舞、邊打LOL邊罵人、邊吃飯邊上廁所(貌似這個栗子有點味道)...其實異步也就是當去執行某一件事情的時候不會影響另一件事情的執行

 

當我們了解了什么是同步和異步后我們在回來看一下什么是面向過程?

  上面我們已經解釋了面向過程跟我們的同步特別類似,所有的事情都是一步步來執行的,無法跳過某一個環節去執行下一個環節,例如你總不能不買菜就去炒菜了吧?在咱們的代碼中也是

  這樣的你必須先獲取一個對象然后在給這個對象加一個事件;這樣的一些過程其實就是面向過程

   

最后我們以專業的角度來解釋下面向過程

  面向過程:以過程為核心,解決問題時,考慮的是每一步該怎么做

 

 

 

面向對象

  什么是面向對象?
    我們先用大白話來解釋一波:面向對象的思想最早不是在編程中出現,而是在管理學中出現的。舉一個栗子:一個公司布置了一個任務,給其中的一個領導者分配了10個人,他用了
    10天時間完成了這份工作,而另一個領導者分配了5個人,用3天時間就完成了這個工作。后者是覺大多數公司最想要的一個人才,因為這個人能夠懂得如何合理的分工,分配任務。
    
  
    而在我們代碼中也是一樣的,同樣一個功能如果一個人去寫那么可能會耗費很長時間,當寫完這個功能的時候,產品狗又讓你去修改某一塊的一個需求的時候你回瞬間崩潰,因為每一
    個程序員都有一個共同的心聲,那就是讓我寫代碼行,但是千萬別讓我去改代碼。但是如果我們要用面向對象的思維去書寫代碼的時候我們就在也不用害怕產品狗讓我們去改某一個需
    求了,因為面向對象的思維就是把一個“大問題分成若干個小問題,並試圖分工協作來完成”,這也是我們今后要學習模塊化的一個思想

    說了這么多概念性的面向對象思想,下面我們來舉一個實際的栗子來了解一下面向對象的思想
 
  
  谷歌的模塊化手機
      

    谷歌的模塊化手機其實跟我們的面向對象編程思維特別類型,這款手機的一個優勢就在於

      如果攝像頭壞了,你只需要換一個攝像頭模塊就可以了

      如果手機聽筒壞了,那么你只需要換一個手機聽筒的模塊就可以了

      如果你想給這個手機安裝一個外接鍵盤,那么只需要安裝一個外接鍵盤的模塊就可以了

      如果你想給這個手機安裝一個定時炸彈,那么你只需要安裝一個定時炸彈的模塊就可以了......

    我們的面向對象編程思想也是如此,我們可以把一個功能中的一些方法當做一個模塊,這樣我們就可以分工協作,同樣也不用擔心某一個環節需要有所變動,如果需要有變動那么我們只

    需要改動相應的模塊即可

 

 下面我們在來舉一個栗子------(請不要嫌我啰嗦,只要你能明白了面向對象的編程思維那么編寫代碼更本就不是問題)

    我們可以想一個問題,在遠古時代有沒有這樣一種人,他的心肝脾肺腎可以用一個器官來代替?可能會有這樣一批人,但是這樣的一批人為什么沒有活到了現在呢?因為他們的弱點非

    常明顯,想要殺死這個人只需要把這個綜合器官干掉就可以了,這也是好多科幻電影里面的場景,一個boos特別厲害,但是到電影快要結尾的時候發現了它某個弱點,然后一個大招把

    他給干死了。

    回到現實當中,現在人的身體其實就可以理解成一個面向對象的編程思維,身體的每一個器官都是一個模塊,都負責相應的事情,如果某一個器官出了問題那么只需要去根治這個器官就

    可以了,而不至於死亡!

 

以上的一些栗子就是面向對象的編程思維,不知道大家能不能理解。下面我們將總結一下面向對象的編程思維

 

 

  面向對象的編程思維:面向對象思維主張的是:團隊---配合---分工---協作,將大問題拆分成諾干個小問題,並試圖用分工協作來完成。這也是我們長說的一句話“高內聚、低耦合”

 

【注】:如需轉載請注明出處,碼字不容易!請理解----如有不同理解,請大神多多指點

傳送門:http://www.cnblogs.com/nanianqiming/p/7711496.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM