前言:
每當提到面向對象的時候,初學者確定都是一臉懵逼的狀態,到底什麼是面向對象?會用面向對象後有什麼牛逼之處嗎?不會用是否是就會死掉?答案確定不會死掉,咱們能夠來簡單的舉一
個栗子
一、當你想到熊貓的時候你想到了什麼? 答:「國寶」
二、當你看到「國寶」穿上衣服的時候你想到了什麼名字? 答:「功夫熊貓」;
其實你能夠理解成面向對象就是一種武功!你能夠想象一下會武功和不會武功的人有什麼區別?「走路帶風、飛檐走壁、不吃煙火食、讓妹子一看你就走不動路了....」,好我們先意淫到
這裏,接下來你能夠在想一下普通人不會武功能不能在這個社會上生存,答案是確定能夠,接下來我們回到我們的編程中,若是你不會面向對象難到就不能寫代碼了嗎?不會的,你還會繼續
作你的碼農!
只是當你會用面向對象寫東西的時候你就會發現你的思惟邏輯、你的擼代碼的水平、以及你擼代碼的姿式都不同了。由於你有可能在一點點的走向中級或者高級程序員!!!好了我不裝逼了
下面咱們正式開始瞭解面向對象
首先咱們先來了解下咱們之前寫代碼的一種思路:面向過程
什麼是面向過程?
咱們先來舉第一個小"栗子"
當剛進遊戲的時候咱們確定會先學習盲僧的Q技能,而後等等級上來之後咱們在去學習盲僧的W技能,等到3級之後咱們在去學習盲僧的E技能,依次類型,最後等到6級的時候咱們確定會javascript
學習R技能,由於你火燒眉毛的想秀一波你的R閃-------其實編程就像我們玩遊戲同樣技能一步一步的來。在編程裏面若是咱們想要作某一個效果,首先咱們必須獲取到相關的對象,然html
後在給這個對象加一些相應的預處理函數......而後在作下一步操做!其實向這樣的一個過程就是面向過程的編寫方式!其實你也能夠理解成javascript的同步操做!同步操做?什麼是java
同步?老師你在搞什麼鬼,面向過程我還在懵逼狀態怎麼如今又跑到同步操做了?別急咱們一步步來程序員
什麼是javascript中的同步&&異步?編程
讓咱們在來舉一個例子!異步
同步:在javascript的編程思想裏面你能夠這樣理解----》買菜--->洗菜--->切菜--->炒菜!這4步就是一步一步地完成,它的順序很重要,你只能一步步去實現!這樣的一個過程模塊化
其實就是同步,在我們的編程中順序執行其實就是同步的思惟,你也能夠理解成當去執行某一件事件的時候就不能再去執行其餘事件了函數
異步:邊洗腳邊看電視、邊唱歌邊跳舞、邊打LOL邊罵人、邊吃飯邊上廁所(貌似這個栗子有點味道)...其實異步也就是當去執行某一件事情的時候不會影響另外一件事情的執行學習
當咱們瞭解了什麼是同步和異步後咱們在回來看一下什麼是面向過程?spa
上面咱們已經解釋了面向過程跟咱們的同步特別相似,全部的事情都是一步步來執行的,沒法跳過某一個環節去執行下一個環節,例如你總不能不買菜就去炒菜了吧?在我們的代碼中也是
這樣的你必須先獲取一個對象而後在給這個對象加一個事件;這樣的一些過程其實就是面向過程
最後咱們以專業的角度來解釋下面向過程
面向過程:以過程爲核心,解決問題時,考慮的是每一步該怎麼作
面向對象
什麼是面向對象?
咱們先用大白話來解釋一波:面向對象的思想最先不是在編程中出現,而是在管理學中出現的。舉一個栗子:一個公司佈置了一個任務,給其中的一個領導者分配了10我的,他用了
10天時間完成了這份工做,而另外一個領導者分配了5我的,用3天時間就完成了這個工做。後者是覺大多數公司最想要的一我的才,由於這我的可以懂得如何合理的分工,分配任務。
而在咱們代碼中也是同樣的,一樣一個功能若是一我的去寫那麼可能會耗費很長時間,當寫完這個功能的時候,產品狗又讓你去修改某一塊的一個需求的時候你回瞬間崩潰,由於每一
個程序員都有一個共同的心聲,那就是讓我寫代碼行,可是千萬別讓我去改代碼。可是若是咱們要用面向對象的思惟去書寫代碼的時候咱們就在也不用懼怕產品狗讓咱們去改某一個需
求了,由於面向對象的思惟就是把一個「大問題分紅若干個小問題,並試圖分工協做來完成」,這也是咱們從此要學習模塊化的一個思想
說了這麼多概念性的面向對象思想,下面咱們來舉一個實際的栗子來了解一下面向對象的思想
谷歌的模塊化手機
谷歌的模塊化手機其實跟咱們的面向對象編程思惟特別類型,這款手機的一個優點就在於
若是攝像頭壞了,你只須要換一個攝像頭模塊就能夠了
若是手機聽筒壞了,那麼你只須要換一個手機聽筒的模塊就能夠了
若是你想給這個手機安裝一個外接鍵盤,那麼只須要安裝一個外接鍵盤的模塊就能夠了
若是你想給這個手機安裝一個定時炸彈,那麼你只須要安裝一個定時炸彈的模塊就能夠了......
咱們的面向對象編程思想也是如此,咱們能夠把一個功能中的一些方法當作一個模塊,這樣咱們就能夠分工協做,一樣也不用擔憂某一個環節須要有所變更,若是須要有變更那麼咱們只
須要改動相應的模塊便可
下面咱們在來舉一個栗子------(請不要嫌我囉嗦,只要你能明白了面向對象的編程思惟那麼編寫代碼更本就不是問題)
咱們能夠想一個問題,在遠古時代有沒有這樣一種人,他的心肝脾肺腎能夠用一個器官來代替?可能會有這樣一批人,可是這樣的一批人爲何沒有活到了如今呢?由於他們的弱點非
常明顯,想要殺死這我的只須要把這個綜合器官幹掉就能夠了,這也是好多科幻電影裏面的場景,一個boos特別厲害,可是到電影快要結尾的時候發現了它某個弱點,而後一個大招把
他給乾死了。
回到現實當中,如今人的身體其實就能夠理解成一個面向對象的編程思惟,身體的每個器官都是一個模塊,都負責相應的事情,若是某一個器官出了問題那麼只須要去根治這個器官就
能夠了,而不至於死亡!
以上的一些栗子就是面向對象的編程思惟,不知道你們能不能理解。下面咱們將總結一下面向對象的編程思惟
面向對象的編程思惟:面向對象思惟主張的是:團隊---配合---分工---協做,將大問題拆分紅諾幹個小問題,並試圖用分工協做來完成。這也是咱們長說的一句話「高內聚、低耦合」
【注】:如需轉載請註明出處,碼字不容易!請理解----若有不一樣理解,請大神多多指點傳送門:http://www.cnblogs.com/nanianqiming/p/7711496.html