Basic OOP 基礎物件導向

前言

物件導向(Object-Oriented Programming, OOP)是一種程式設計範式,強調使用包含數據(屬性)和方法(功能)的物件來設計和構建應用程序。提高軟體的重用性、靈活性和擴充性。

而對於物件導向,最基礎需要知道以下:

一個抽象
兩個目的
三個特性
五個原則

一個抽象

抽象 (Abstraction)

在OOP的背景下,抽象是指隱藏複雜的實作細節,僅展示物件的必要特性的能力。這簡化了與物件的互動,使編程更直觀、更高效。

例如想要使用交通工具的物件,只需要知道交通工具提供的介面,而不需要知道具體的交通工具是什麼,以及其實作細節

兩個目的

低耦合 (Low Coupling)

低耦合是指程式中不同的類別或模組之間應該有盡可能少的依賴關係。這使得一個類別或模組的變更不太可能影響到其他的類別或模組,從而使得程式更容易維護和擴展。

高內聚(High Cohesion)

高內聚是指一個類別或模組應該只專注於完成一項特定的任務或一組緊密相關的任務。這使得程式更有組織,更易於理解和維護。

三個特性

繼承 (Inheritance)

繼承允許新創建的類別(子類別)繼承一個或多個現有類別(父類別)的屬性和方法。這促進了程式碼重用和擴展性。

封裝 (Encapsulation)

封裝是將數據(屬性)和行為(方法)綁定到單個單位(類別)中,並限制對該單位內部的直接訪問。這有助於保護數據和隱藏實現細節。

多型 (Polymorphism)

多型允許對不同類別的物件使用共同的接口。這意味著可以在不同類別的物件上執行同一操作,而每個類別可以以不同的方式響應相同的操作。

五個原則 (SOLID)

S - 單一職責原則(Single Responsibility Principle):

一個類別應該只有一個改變的理由,這意味著一個類別應該只做一件事

O - 開放封閉原則(Open/Closed Principle):

軟體實體(類別、模組、函數等)應該對擴展開放,對修改封閉。這意味著應該能夠在不修改現有代碼的情況下擴展其功能。

L - 里氏替換原則(Liskov Substitution Principle):

子類別應該能夠替換其父類別而不影響程序的正常運行

I - 接口隔離原則(Interface Segregation Principle):

不應強迫客戶依賴於它們不使用的接口。換句話說,更小和更具體的接口優於大而通用的接口

D - 依賴反轉原則(Dependency Inversion Principle):

高層模組不應該依賴低層模組,兩者都應該依賴於抽象;抽象不應該依賴於細節,細節應該依賴於抽象。這有助於減少類別之間的直接依賴,從而提高系統的靈活性和可重用性。

Design Pattern概述

設計模式是一組作為最佳實踐的解決方案,用來解決特定類型的重複出現的設計問題。這些模式不是現成的程式碼,而是可以在許多不同情況下使用的模板。它們提高了代碼的可重用性、靈活性和維護性。

設計模式通常分為三大類:

  1. 創建型模式(Creational Patterns)
    這些模式與物件創建機制有關,幫助創建物件的方式使得系統獨立於物件的創建和組合方式。
  2. 結構型模式(Structural Patterns)
    這些模式與物件的組合有關,通常用於形成大的物件結構
  3. 行為型模式(Behavioral Patterns)
    這些模式關注物件間的通訊和責任分配