程式設計基礎/物件和類
面向物件程式設計 (OOP) 是一種基於“物件”概念的程式設計正規化,物件可能包含資料(以欄位的形式,通常稱為屬性)和程式碼(以過程的形式,通常稱為方法)。物件的特徵是,物件的程式可以訪問(通常修改)與其相關聯的物件的資料欄位(物件具有“this”或“self”的概念)。OOP 語言的多樣性很大,但最流行的語言是基於類的,這意味著物件是類的例項,類通常也決定了它們的型別。[1]
到目前為止,我們一直專注於過程式程式設計。基於結構化程式設計,過程(例程、子例程或函式)包含一系列要執行的計算步驟。任何給定的過程可以在程式執行過程中的任何時間點被呼叫,包括被其他過程或自身呼叫。程序式程式設計的重點是將程式設計任務分解為變數、資料結構和子例程的集合。[2] 小程式和指令碼往往更容易使用簡單的過程式方法開發。
面向物件程式設計將程式設計任務分解為物件,這些物件使用介面公開行為(方法)和資料(成員或屬性)。最主要的區別在於,程序式程式設計使用過程來操作獨立的資料結構,而面向物件程式設計將兩者捆綁在一起,因此“物件”(即類的例項)操作其“自身”的資料結構。[3] 更大型的程式受益於面向物件方法提供的更好的程式碼和資料隔離和重用。
物件和類通常設計為表示現實世界的物件。以門為例,它是一個現實世界的物件。大多數門的功能有限。它們可以開啟和關閉,以及鎖定和解鎖。在程序式程式設計中,我們可能會設計函式來開啟、關閉、鎖定和解鎖門,例如
Procedural Programming - Functions OpenDoor(door) CloseDoor(door) LockDoor(door) UnlockDoor(door)
面向物件程式設計將程式碼和資料結合在一起,因此,我們不是讓單獨的函式作用於門,而是設計擁有可以作用於自身的方法的門。方法代表物件可以做的事情,通常用動詞定義。面向物件的虛擬碼可能看起來像
Object-Oriented Programming - Methods door.Open() door.Close() door.Lock() door.Unlock()
物件也可能具有屬性,即物件是或擁有的東西,通常用名詞或形容詞定義。門屬性可能包括
Object-Oriented Programming - Attributes door.Height door.Width door.Color door.Closed door.Locked
當我們編寫程式碼來定義一個通用門時,我們會建立一個門類。門類將包含門可以執行的所有方法和門可能具有的所有屬性。然後,我們會建立類的例項(物件)來表示特定門,例如房子的前門、後門或房間門,或汽車的左門和右門。
- 屬性
- 定義物件屬性的規範。[4]
- 類
- 用於建立物件的可擴充套件程式程式碼模板,提供狀態的初始值(成員變數)和行為的實現(成員函式或方法)。[5]
- 例項
- 物件的具體發生。[6]
- 方法
- 定義物件過程或行為的規範。[7]
- 物件
- 類的特定例項,其中物件可以是變數、函式和資料結構的組合。[8]
- this, self 或 Me
- 在某些計算機程式語言中用於引用當前執行程式碼所屬的物件、類或其他實體的關鍵字。[9]