學程式的人應該都有聽過這個,不過對初學者來說,這算是一種滿抽象的…一種"概念"。沒錯,這並不是一種程式語言,而是一種方法。最初來說,將事件or問題對應到某物件並模型化的手法,稱為物件導向(Object-Oriented); 用物件模型來分析並處理的做法,稱為物件導向分析(OOA - Object Oriented Analysis)。當這套方法用在程式上,就變成物件導向程式設計(OOP - Object Oriented Programming)了。
要談物件導向,就從物件開始吧。
什麼是物件?其實應該要問,"什麼不是物件"?
世界上幾乎任何東西都可以當成物件,簡單來說,實體-->樹木,人類,花草,手機,電視…等等,而較複雜的像-->學問,心理,想法…等等,上述這些都可以是物件。OK,有了物件之後,我們可以把這個物件身上所擁有的特質、行為來做分析。以樹來說,有樹幹,樹葉,樹根,會行光合作用…等等。然而要做物件導向分析,我們就需要"有用的資訊"。如,今天要做的是"樹木對於水土保持的作用",我們需要的是樹的種類,樹根的長度,年齡之類的東西,而像是會行光合作用的資訊我們就用不到,便可以捨去。這種操作方法稱為"抽象化"(abstraction)。有了這個方法,我們便可以將複雜的東西用簡單的概念來做解釋,算是滿重要的第一步。
以上便是一個物件的基本型態,有屬性(Attribute)以及方法(Method)。
以車子來看,屬性就如同上述,可以是顏色,引擎,變速箱,輪胎;方法,就是做出一台車的做法嚕~
而屬性的表示方法為-->參考別的物件來表達自己的屬性;如顏色-->參考烤漆。而此屬性對別的物件所參照的地方,稱為實體變數。如顏色1-->紅色;顏色2-->藍色。
當我們要做出好幾台車子的時候,應該不會每次都要重新設計吧?這時候通常都會做出一個模版,再套用一些不一樣的元素,就可以生產出不一樣的車款了。以工程師來說,可以稱為"公版"吧~這類的公版,其實也算是一個物件,不過他是用來當成大方向的模具,我們稱為"類別"(Class)。
類別會提供該類別物件所共用的變數及方法,差別就在於物件所提供的變數來決定。
如"Focus"這個類別提供了四個輪胎,一個引擎,一個變速箱。Focus ST則是手排變速箱,汽油引擎,馬吉斯輪胎;Focus TDCI則是自排變速箱,柴油引擎,米其林輪胎。
當我們利用了類別建立了一個物件的動作,稱為"實體化"(Instantiation),而生出來的物件就稱為實體化物件嚕。一般而言方法會在類別裡就做好,實體不需要分別定義方法。
大約就像上圖這樣吧。
上面所談的其實就是最最基本的東西,若想要了解的更詳細,就需要找老師or看書啦。最好是原文書喔。