OOP的核心思想 封裝 、繼承 、 多態
理解:對象由數據和容許的操作組成的封裝體,與客觀實體有直接對應關系。一個對象類定義了一組具有相似性質的對象。而繼承性是具有層次關系的類的屬性和操作進行共享的一種方式。所謂面向對象就是基於對象概念,以對象為中心,以類和繼承為構造機制,來認識、理解、刻畫客觀世界和設計,構造響應的軟件系統。
OOP基本思想:把組件的實現和接口分開,並且讓組件具有多態性
OOP強調對象的抽象、封裝、繼承、多態。我們說的程序設計是由 數據結構+算法 組成的。OOP下的對象是以編程為中心,是面向程序的對象。
對象的產生:①以原型(prototype)對象為基礎產生新的對象 ② 是以類(class)為基礎產生對象
封裝:也就是把客觀事物封裝成抽象類,而且類可以把自己的數據和方法只讓可信的類或對象操作,對不可行的進行信息隱藏。簡單的說,一個類就是封裝了一數據及一些操作這些數據代碼的邏輯實體。再一個對象內部,某些代碼或某些數據可以時私有的,不能被外界訪問
繼承:可以讓一個類型的對象獲得另一個類型對象屬性的方法,他支持按級分類的概念。它可以使用現有類的所有功能,並在無需重新編寫原來類的情況下對這些功能進行擴展。通過繼承創建的新類稱為 派生類 或 子類 ,被繼承的類稱為 基類 、父類、超類。繼承有兩類:實現繼承和接口繼承,實現繼承:直接使用基類的屬性和方法無需額外的編碼能力,接口繼承是僅使用屬性和方法名,必須提供實現的能力
多態:一個類實例的相同方法在不同情形有不同表現形式。同一操作(方法)作用於不同的對象時,可以有不同的解釋,產生不同的執行結果。多態機制使具有不同內部結構的對象可以共享相同的外部接口。這意味着,雖然針對不同對象的具體操作不同,但通過一個公共的類,它們(那些操作)可以通過相同的方式予以調用。
五大基本原則
單一職責原則SRP(Single Respinsiblity principle):是指一個類的功能要單一,不能包羅萬象。
開放封閉原則OCP(Open-close principle):一個模塊在擴展性方面應該是開放的而再更改性方面應該是封閉。比如:一個網絡模塊,原來只服務端功能,而現在要加入客戶端功能,那么應當在不用修改服務端功能代碼的前提下,就能夠增加客戶端功能的實現代碼,這要求在設計之初,就應當將服務端和客戶端分開,公共部分抽象出來。
替換原則(the Liskov Substitution Principle LSP)子類應當可以替換父類並出現在父類出現的地方。
依賴原則 具體依賴抽象,上層依賴下層:假設B是較A低的模塊,但B需要使用到A的功能,這個時候,B不應當直接使用A中的具體類: 而應當由B定義一抽象接口,並由A來實現這個抽象接口,B只使用這個抽象接口:這樣就達到
了依賴倒置的目的,B也解除了對A的依賴,反過來是A依賴於B定義的抽象接口。通過上層模塊難以避免依賴下層模塊,假如B也直接依賴A的實現,那么就可能造成循環依賴。一個常見的問題就是編譯A模塊時需要直接包含到B模塊的cpp文件,而編譯B時同樣要直接包含到A的cpp文件
接口分離原則:模塊之間要通過抽象接口隔離開,而不是通過類強耦合起來