為了更好的理解什麼是物件導向,物件導向和面向過程有什麼區別,我舉乙個生活中的小例子來對比一下兩者的區別:開車去超市。
面向過程:
面向過程的話可以理解為我們現在要開一輛平平無奇的車去超市。我們得掛檔 > 鬆手剎 > 點火 > 一頓猛如虎的操作之後到達目的地。
物件導向:
物件導向的話就可以理解為我們的車是無人駕駛汽車,我們告訴車我們要去超市,然後車自己一頓操作把我們帶去了超市。
從上面的小例子中我們可以看出,在物件導向的情況下我們甚至不需要知道超市在哪也不需要知道怎麼開車,我們只需要告訴車我們要去超市即可。此時,我們可以將這輛可以將這個無人駕駛汽車理解成乙個物件;而在面向過程的情況下我們不僅需要知道怎麼開車,還需要知道去超市的路怎麼走,然後我們還要自己開車!
面向過程的時候,我們主要的操作都是在開車,我們要在路上控制車速,注意紅燈和路上的標誌。而物件導向的時候,我們唯一的操作就是在告訴車,去超市。這就是區別:物件導向的時候主要突出的就是我們對那個物件的操作,面向過程的時候突出的則是我們在達到目的的過程中的一些列操作。
如何實現物件導向?那我們需要先了解一下類。類的話,我們暫時先將其理解設計圖。就如我們之前提到的無人駕駛汽車,類就是這個無人駕駛汽車的設計圖,而帶我們去超市的那台無人駕駛汽車就是物件。有了設計圖我們就可以創造出事先設計好的物件。
枯燥的說是沒有用的,所以不如我們用**簡單模擬一下當下熱門的《王者榮耀》的實現,首先,我們定義乙個類來設計乙個小兵。王者榮耀中最重要的存在,嗯,誰不服?
class soldier
}
好的,通過上面的**我們設計好了乙個小兵,這裡將小兵設計成了乙個有 hp 值和攻擊力和乙個bebeaten
(挨打)方法的小兵,然後現在我們建立乙個小兵,然後設定一下小兵的血量和攻擊力。
// 建立乙個小兵物件
soldier soldier = new soldier();
soldier.hp = 500;
soldier.attack = 40;
ok,我們現在建立了乙個小兵,它擁有500的血量和40的攻擊力。嗯,是不是有點上道了?接下來我們試試攻擊一下它:
// 好的,現在假設我們是乙個攻擊力200的亞瑟,我們去a一下這個小兵
soldier.bebeaten(200);
現在如果檢視這個小兵的hp的話他就只剩下300的hp了。這就是簡單的乙個物件導向的小案例。
那麼問題來了,《王者榮耀》裡不止一種小兵,它有近戰的,遠端的,炮車和超級兵。難道每個型別的小兵我們都要重新設計一次?當然不用,下面我們就來了解一下物件導向的特性之一:繼承。
什麼是繼承?先來個繼承的定義,繼承就是子類繼承父類的特徵和行為,使得子類物件(例項)具有父類的例項域和方法,或子類從父類繼承方法,使得子類具有父類相同的行為。
這真是十分之枯燥乏味,所以我覺得我們還是一邊繼續完善我們的小模擬,一邊來理解什麼是繼承比較好。現在我們結合一下先前設計好的小兵,我們會繼續沿用上面的**
class mastersoldier extends soldier
上面,我們建立了乙個用來設計法師小兵的類,它繼承了我們之前設計的小兵的那乙個類,我們可以看到,它並沒有什麼字段(成員變數)或者是什麼方法,但是實際上,它擁有了soldier類所有的字段和方法。
mastersoldier mastersoldier = new mastersoldier();
mastersoldier.hp = 400;
mastersoldier.attack = 60;
mastersoldier.bebeaten(200);
嗯,十分生動形象的理解了繼承嘛,現在我們在回頭去看那一句繼承的定義是不是就理解了它的意思? 如何理解物件導向和面向過程
執行者思維 面向過程其實就是一種一步步完成某一件事情的思考方式 適和小規模程式,可以完成簡單的東西 只要一步步,乙個個實現完成就好了,通過過程完成任務是 執行者 思維。遇到問題首先想的的是在,第一步該幹嘛 第二步該幹嘛 第三步該幹嘛 第四步該幹嘛 如何開車 第一 啟動車 第二 掛擋 第三 踩油門 第...
php物件導向理解(一)
物件導向的理解 物件導向的概念 物件導向程式設計是一種計算機程式設計架構,oop的一條基本原則是電腦程式是由單個能夠起到子程式作用的單元或物件組合而成,oop達到了軟體工程的三個目標 重用性 靈活性和擴充套件性。為了實現整體運算,每個物件都能夠接收資訊 處理資料和向其它物件傳送資訊。物件導向一直是軟...
php物件導向理解 一
常用的繼承過程,以及對public private protected修飾符的理解 父類 person父類 class person 共有例項方法,可以被類的裡面和外面訪問,並且可以子類繼承重寫 public function personinfo 私有例項方法,可以被類的裡面訪問,但不能被類的外面...