物件導向是什麼?
 課程目錄
 編輯章節
 EDU-MD
 Google 教室
 加至書籤

把所有東西變成物件

物件導向(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";

如果我們要把 bigCupcolor 屬性印出來,我們可以說:

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 的形式,不只可以讓程式運行地更有效率,還能讓你的程式看起來更加整潔易懂哦!

 均一平台
 台達磨課師
 酷課雲
 可汗學院
無相關資源
 收起側邊目錄
 
前往目錄頁面