物件導向程式設計是一種編碼設計,它使用資料來表示一組指令。它是一種具有物件概念的程式設計典範,同時也是一種程式開發的抽象方針。它由描述狀態的屬性和用來實現物件行為的方法組成,完成了從資料模型到處理模型的結合與統一。
什麼是物件導向程式設計?
物件導向程式設計 (OOP) 是一種編碼設計,它使用資料來表示一組指令。 OOP 設計圍繞著可實例化為物件的專用類別。
與過程式或函數式程式設計不同,OOP 為我們提供了更全面地表達程式碼的空間。雖然先前的範式通常沒有結構,但 OOP 鼓勵使用稱為類別的專用結構。
方法是在類別中執行特定任務的函數。屬性就像描述類別特徵或特性的變數。方法可以獨立運行,也常常基於類別的屬性。最終,兩者共同作用,實現了OOP的概念。
物件導向程式設計的優點
那麼物件導向程式設計如何幫助你寫更好的程式呢?
OOP 降低了程式碼庫的複雜度。
它可以幫助我們清楚地表達我們的程式碼,使其更具可讀性。
用 OOP 寫的程式通常更具可擴充性。
它簡化了程式碼測試和偵錯。
OOP消除了程式碼重複,建立了DRY(不要重複自己)原則。
OOP 程式碼通常更加模組化,鼓勵關注點分離。
類別組合和繼承使程式碼更易於重複使用。
抽象提高了程式碼庫的安全性。
物件導向程式設計的缺點
雖然OOP的優點大於缺點,但缺點也不能忽略:
它可能比函數式程式設計慢。
OOP陡峭的學習曲線很陡。
腳本資料夾和檔案隨著應用程式的擴展而增加。
物件導向的程式結構
OOP 圍繞著嚴格的架構展開。以下是我們將要了解的一些術語:
類別
類別是作為執行類似操作的資料表示的程式碼集合。我們可以將類別視為物件處理程序,因為我們可以使用物件處理程序來實例化物件。
方法
方法定義類別如何完成其任務。一個類別可以包含一個或多個方法。我們可以將方法視為類別在其內部部分擔職責的方式。
例如,單位轉換器類別可能包含將攝氏度轉換為華氏度的方法。它可能包括另一種將克更改為公斤的方法。
屬性
屬性是描述類別的要素或屬性。例如,單位轉換器類別可能包含轉換單位等屬性。我們可以定義作用於這些屬性的方法。
與方法一樣,我們可以從類別實例存取(某些)屬性。
物件
簡單地說,物件就是一個類別的實例。實例化類別時,產生的物件將使用該類別作為其屬性和方法的藍圖。
物件導向程式設計的原則
物件導向程式設計為程式表帶來了一些原則。這些中的每一個都使其領先於傳統程式設計。
抽象化
OOP的抽象概念認為,你不需要知道某些東西是如何運作的。它允許我們用簡單的語言包裝程式碼,而無需擔心程式幕後的複雜性。
例如,我們無需擔心提交操作背後的邏輯、過濾演算法或函數。作為用戶,我們看到和關心的只是發送按鈕。
物件導向的程式設計透過將單一任務呈現為單一呼叫來幫助我們抽象邏輯。例如,雖然單位轉換器類別可能會在後台進行大量計算,但我們可以透過呼叫單一方法來執行其公斤到克轉換器:
class_instance.convert_gram()
#其中class_instance是對象,convert_gram是轉換器類別的方法。
封裝
封裝是物件導向程式設計建立抽象的方式之一。每個物件都是被視為實體的資料集合。物件中的資料包括隱藏在全域空間中的屬性和方法。
通常,封裝允許我們將類別資料私下包裝在物件中。因此,一個物件的內容不會幹擾另一個物件。只有物件的固有方法和屬性才能改變它。
例如,單位轉換器物件中的方法不應在沒有繼承或組合的情況下更改另一個物件的屬性。
封裝允許我們更改物件的內容或結構,不用而無需擔心公共介面。
繼承
繼承允許我們在另一個稱為子類別的類別中重複使用類別(稱為超類別)的內容。當類別繼承超類別時,它會自動取得其屬性和方法。
除了從超類別繼承的屬性外,子類別還可以具有自己的屬性和方法。
例如,如果我們希望類別使用外部模組中的數據,繼承將派上用場。它還確保我們在編寫程式碼時不會重複自己。
因此,建立子類別還可以節省大量時間。我們可以建立一個基底類別並將其擴展到新的子類,借用現有功能,而不是為所有內容建立新類別。
繼承是有用的,但知道何時使用組合是一個基本的程式設計原則。
多態
多態是繼承的結果。它允許您在不同的物件中維護方法或屬性名稱,您可以在其中根據需要使用它們。
此概念可確保可以在不同的類別中動態使用類別方法,並從基底類別繼承它。
例如,通用遊戲物件可以定義移動方法。子類別可以準確定義其特定運動的發生方式。然後,控製程式碼不需要知道單獨的類別是如何移動的,只需知道它們都可以透過通用方法移動。
以上是物件導向程式設計是什麼意思的詳細內容。更多資訊請關注PHP中文網其他相關文章!