機
器
人
物件是什麼?
生活中的物件
「物件」,顧名思義就是一個物體。讓我們想想,當我們想要描述一個物體的時候,我們會怎麼描述?我們可以描述那個物體的長、寬、高、顏色、重量、形狀等。以上這些用來描述一個物體的東西,稱為該物體的「屬性」(property)。
除了物體的屬性之外,我們還會想到一個問題:「我們該如何使用這個物體?」例如,杯子可以用來裝水、喝水、砸碎等。我們稱這些功能「方法」(method)。
程式中的物件
假設你今天要告訴你朋友一棟大樓的高度,你會說「杯子的高度是 30 」。在程式中,這也是相同的概念,把這句話在程式中寫出來,就會變成:
杯子.高度 = 30;
其中,「.」就代表「的」。那麼我們要怎麼執行物件的那些方法呢?假設我們用剛剛的例子,要砸破一個杯子,那我們要怎麼表達呢?
杯子.砸破();
如此,我們可以很清楚的看出「砸破」是「杯子」這個物件的方法,因為我們知道「()」代表動詞,也就是「砸破」是一個動作。
類別
想想看,如果我們今天要製造 100 個杯子,各自有不同的屬性,但都只有相同的功能。那難道我們要把 100 個杯子的每個程式都寫出來嗎?這樣就太麻煩了。為了解決這個問題,以前的電腦工程師發明了一種東西——類別(class)。
這個章節的重點,在於帶領讀者理解物件導向的概念,而非介紹單一個程式語法。此章節的程式語法和 JavaScript 等程式語言相近,但並非任何真實程式語言。請專注於章節中的概念部分,而非語法部分。
類別的使用
每一個杯子,因為有不同的屬性,因此個個都是不同的物件,但是儘管如此,它們都是同一種類別,稱作杯子。現在我們就來告訴電腦產生一個叫做「杯子」的類別,並且告訴電腦杯子的屬性與方法:
類別 杯子{
長;
寬;
高;
顏色;
重量;
形狀;
裝水();
喝水();
砸碎();
}
這麼一來,每次我們需要用到杯子這種東西時,我們就可以不用定義「裝水」、「砸碎」等這些重複的功能,只要告訴電腦他們特別的地方就好了。現在讓我們來做三個杯子吧!
杯子 大水壺;
杯子 馬克杯;
杯子 紙杯;
這樣,我們就成功地讓電腦做出三個杯子了,是不是很簡單呢?
類別與物件
看了這麼多,所以到底類別跟物件的差別是什麼呢?以剛剛的例子來看,「杯子」就是類別;而「大水壺」、「馬克杯」、「紙杯」則是物件。用最簡單的方法來記憶:類別是物件的種類,物件是一個個獨立的物體。
class 類別
object 物件
property 屬性
method 方法