2010年1月20日

類別與物件的基本概念

物件導向的程式設計(OOP),是近年來日趨流行的程式設計架構,常常被用來作為設計大型軟體專案的解決方案,尤其是多人合作的項目。它的基本原則是將電腦程式的功能由單個能夠起作用的單元或物件通過組合來實現。為了實現整體運算,每個物件都能夠接收資訊、處理資料和向其他物件發送資訊。PHP並不是一個真正的物件導向的語言,PHP是一個混合型語言,你可以使用OOP,也可以使用傳統的程序導向程式設計。

類別(Class)的定義是:變數和作用於這些變數的函式的集合。我們可以把類別理解成為是對事物高度概括、歸納出來的抽象概念。如"人"是一個抽象的概念,"人"具備性別、姓名、國籍、民族、身高、血型、膚色等各種各樣的特徵,這些特徵,可以稱之為屬性(Attribute),"人"會有各種各樣的行為和動作,如吃飯、說話、工作、休息,這些行為和動作叫做方法(Method)。定義了各種屬性和方法的"人"就是一個"類別"。類別是具有相同屬性和服務的一組物件的集合,它為屬於該類別的所有物件提供了統一的抽象描述。在物件導向的程式設計語言中,類別是一個獨立的程式單位,它有一個類別名稱,並擁有屬性說明和方法說明兩個主要部分。

如果將"人"的性別、姓名、身高等特徵細化,給出具體的數值、名稱,並描述出這個人吃飯、說話的樣子,那麼一個活生生的個例就出現了;同理,當給一個類別的屬性賦予具體的值時,就生成了基於這個類別的一個實體,這個實體就叫做物件(Object)。物件是系統中用來描述客觀事物的一個實體,它是構成系統的一個基本單位。物件是類別的實體,所以類別中定義的屬性和方法均可被物件沿用。

在PHP之中,類別的創建通過關鍵字class來定義。所有的屬性和方法都被封閉在class所引導的大括弧中,在宣告變數時,須使用三個限定詞(public、private、protected)之一進行修飾,來定義變數的存取權限。當宣告屬性時,我們並不需要指明資料型態,變數可能是整數、字串或者是另一個物件,這需要根據實際情況來決定。類別的方法都是以函式的形式存在的,因此和普通函式一樣,通過function關鍵來定義。定義類別的方法時,也可以定義參數,如果宣告了這個方法有參數,則在呼叫此方法時必須傳遞參數給它,如果沒有傳遞參數,或者參數數量不足,都會導致程式出錯。如果傳遞的參數數量多於方法所定義的參數數量,PHP就會忽略多餘的參數。

如果想使用類別提供的功能,就需要把類別產生實體為物件。定義好一個類別之後,就可以使用關鍵字new來創建一個基於該類別的物件實體了,該實體也是一個變數,需要在物件名稱前加$。一個類別可以產生出多個物件,每個物件都是獨立的,每個物件之間是沒有聯繫的,只能說明它們都是這個類別的物件,每個物件都有自己單獨的屬性值。只要是類別裡面擁有成員屬性和成員方法,產生出來的物件中就會包含這些屬性和方法,當需要存取這些屬性變數時,用"->"運算子來引用它們。當呼叫這個物件的方法時也同樣。

沒有留言:

張貼留言