機
器
人
把所有東西變成物件
物件導向(object-oriented programming),就是把大部分程式內的東西都變成以物件的方式呈現。在這個程式中,物件與物件之間互相區別,但又藉由程式碼互相呼應。
與物件導向相對的是函式語言(functional programming)。在這種程式語言中,程式碼與程式碼之間多以函數的方式存在,沒有物件的出現。
在上一章中,我們曾提及所謂的「類別」,在真實的程式語言中,我們會叫它「class」。
class 的使用
這個章節的重點,在於帶領讀者理解物件導向的概念,而非介紹單一個程式語法。此章節的程式語法和 JavaScript 等程式語言相近,但並非任何真實程式語言。請專注於章節中的概念部分,而非語法部分。
上一章中,我們曾經使用了「杯子」作為舉例,而現在我們將沿用這個例子:
類別 杯子{
/* .... */
}
我們將之轉變成真實的程式:
class cup{
}
接著,讓我們建立一個變數稱作 bigCup
,並將其設為一個 cup
物件:
bigCup = cup();
電腦在看到這段程式後,會將其解讀為:
建立一個叫做「bigCup」的變數,並且將其設為一個新的「cup」物件。
之前說過,程式中出現括號,代表的是一個動作。當我們建立了一個類別後,如果我們要建立該類別的物件,我們也可以使用括號。
設定物件的屬性
上一章提到, .
在程式中代表「的」的意思。例如 document.name
就可以被解讀成「document 的 name」。現在,我們來將剛剛的 bigCup
加上屬性 color
:
bigCup.color = "yellow";
如果我們要把 bigCup
的 color
屬性印出來,我們可以說:
print(bigCup.color);
procedure 程序化的
object oriented programming 物件導向程式
method 方法
property 屬性
encapsulation 封裝
redundant 多餘的
inheritance 繼承
polymorphism 多型
一個類別,多個物件
現在,假設從現在開始,我們製作的所有杯子都將變成黃色的,而且此時此刻我們要建立 3 個杯子物件,我們將會得到:
cup1 = cup();
cup2 = cup();
cup3 = cup();
cup1.color = "yellow";
cup2.color = "yellow";
cup3.color = "yellow";
這樣子寫起程式來,真是太麻煩了!其實建立一個類別時,我們就可以先設定好該類別自帶的變數。什麼意思呢?既然我們知道所有的杯子都將會有 color = yellow
這個屬性,那麼我們在建立 cup
的時候,就可以先設定好 color
這個變數,如此:
class cup{
color = "yellow";
}
這麼一來,每當建立一個新的 cup
物件,那個物件就會預設有 color = yellow
這個屬性。
cupA = cup();
print(cupA.color);
上述這段程式,將會印出「yellow」,因為在建立 cup
時,我們已經將它的 color
設為 yellow 啦!
物件導向方便的地方就在此。你可以輕輕鬆鬆建立起很多很多的物件,並用之表達很多很多的東西。若你有架構地將大多數的程式碼變成 class 的形式,不只可以讓程式運行地更有效率,還能讓你的程式看起來更加整潔易懂哦!