認識 OOP

Frontend SELF TW
等級 39 , 課堂 1
開放

2.1 OOP 的基本概念

面向對象的程式設計(OOP)基於一個基本的編程理念:所有的程式元素都被視為對象。對象是數據加上那些能操作這些數據的方法/函數。

我們也可以這樣說:對象有狀態和行為。對象的狀態由其內部變數存儲的資料提供;對象的行為則是其方法的所有操作的總和。

在一個中等規模的程式中,對象可能有幾千個,在一個大型程式中,則可能有數百萬個。為了減少混亂,我們將對象組織為類別,並將類別組織為某種層次結構。

這很有趣!
類別層次結構的概念來自動物界,像是人類是靈長類、靈長類是哺乳動物等等。

每個對象都有一個類別去生成它。從某種角度來看,類別是一個對象的模板,而從另一個角度來看,它自身也是一個有其特性的對象(詳情見下)。

為了更好地理解類別的概念,請參考以下定義:

類別是創建對象的模板或模式,定義了此類型所有對象的屬性和方法。類別讓數據和與之操作的函數組合在一起。

對象是類別的實例。每個對象都有狀態(由屬性定義)和行為(由方法定義)。

封裝是隱藏類別內部實現並提供與對象交互的介面。這有助於保護數據並管理訪問權限。

繼承允許一個類別(子類)繼承另一個類別(父類)的屬性和方法。這有助於重用代碼並簡化其維護。

多態允許對不同類別的對象使用統一的介面。這是通過在子類中重新定義從父類繼承的方法來實現的。

抽象是在選擇性地強調對象的共同特徵並創建代表這些共同特徵的類別。這有助於簡化復雜的系統並提高其可理解性。

如果你理解了至少一半內容,那就很棒了。接下來我們將更詳細探討這些要點。

2.2 抽象

在現實生活中,抽象的一個好例子是公司或組織中的職位描述。職位名稱是一回事,而每個具體職位的責任則是另一回事。

想像一下你在設計未來公司的結構。你可以將秘書的職責「分配」給其他多個職位。你可以把執行董事的職位分解成若干個獨立職位:財務總監、技術總監、營銷總監、人力資源總監。例如,你可以將辦公室經理和招聘官的職位合二為一。

從程序設計的角度來看,抽象是對程式進行合理的對象劃分。通常,任何大型程式都可以用數十種方法表示為交互對象。 抽象能讓你選擇主要特徵並忽略次要的

抽象

抽象就像軍事戰略。一個糟糕的戰略,無論多麼出色的戰術也無法挽回。

2.3 封裝

封裝的目標是通過簡化事物來改善它們的交互質量。

封裝

簡化某件事的最佳方法是隱藏其複雜性。例如,如果我們坐在波音飛機的駕駛艙裡,我們不會立刻知道該如何操作:

波音駕駛艙

另一方面,對於飛機上的乘客來說,一切都顯得更簡單:買票,上飛機,起飛和降落。只需具備「購買機票」和「上飛機」這樣的技能,就可以輕鬆地從一個大陸飛到另一個。所有複雜性,如飛機的飛行準備、起飛、降落和各種不正常狀況,對我們來說都是隱藏的。更不用說衛星導航、自動駕駛儀和機場的調度中心了。這使我們的生活更簡單。

從程序設計的角度來看,封裝是「實現的隱藏」。 我喜歡這樣的定義。我們的類別可能包含數百個方法,並在各種情況下實現非常複雜的行為。但我們可以將所有方法隱藏起來(在其名稱兩側加上「__」),並僅保留少量方法供其他類別使用。 此時,我們程式的其他類別僅能看到這個類別的三個方法,並調用它們。所有的複雜性就像駕駛艙對幸福的乘客一樣隱藏在類別之中。

2.4 繼承

繼承有兩個方面:編程方面和現實生活方面。從編程的角度來看,繼承是一種特殊的類別間關係。 但更有趣的是,繼承在現實生活中意味著什麼。

如果我們需要在現實生活中創造一些東西,我們有兩個選擇:

  1. 從零開始創造所需的東西,耗費大量時間和精力;
  2. 基於已經存在的東西來創造所需的東西。

最優策略看起來像這樣:採用現有的良好解決方案,稍加修改,使其適合自身需求並加以使用

如果我們追溯人類的起源歷史,會發現從生命出現到現在已經過了幾十億年。而如果假設人類是從猿類演化而來的,那麼就只有幾百萬年。 從零開始創造——耗時更長。長得多

在編程中,也有可能基於另一個類別創建一個類別。新類別成為現有類別的子類(繼承類)。 當有一個類別包含我們需要的80%-90%的數據和方法時,這是非常有利的。 我們只需將合適的類別指定為新類別的父類,這樣新類別就自動擁有了父類的所有數據和方法。 真的很方便吧?

2.5 多態

多態是一個程式設計概念,描述了一個介面下隱藏不同實現的情況。如果設法在現實生活中找到類似的話,一個類似的例子是駕駛汽車的過程。

如果一個人可以駕駛卡車,那他也可以駕駛救護車或跑車。 無論汽車是什麼,人都可以駕駛,因為它們都有相同的控制介面:方向盤、踏板和變速桿。 汽車的內部裝置不同,但它們都有相同的控制介面。

回到程式設計,多態允許對不同類別(通常有共同祖先)的對象進行一致的操作——這是一個難以附加估值的特性。 程式越大,其價值越高。

OOP是原則。內在的法則。每一個都在某種程度上限制我們,當程式規模擴大到大時,提供了很大的優勢。 四個OOP原則就像椅子的四條腿。即使只去掉一條,整個系統也會變得不穩定。

留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION