面向對象的四大基本特徵和五大基本原則

面向對象主要有四大特性

·        抽象

o    忽略一個主題中與當前目標無關的東西,專注的注意與當前目標有關的方面.(就是把現實世界中的某一類東西,提取出來,用程序代碼表示,抽象出來的一般叫做類或者接口).抽象並不打算了解全部問題,而是選擇其中的一部分,暫時不用部分細節.抽象包括兩個方面,一個數據抽象,而是過程抽象.

o    數據抽象 -->表示世界中一類事物的特徵,就是對象的屬性.比如鳥有翅膀,羽毛等(類的屬性)

o    過程抽象 -->表示世界中一類事物的行爲,就是對象的行爲.比如鳥會飛,會叫(類的方法)

·        封裝

o    封裝就是把過程和數據包圍起來,對數據的訪問只能通過特定的界面.如私有變量,set,get方法獲取

·        繼承

o    一種聯結類的層次模型,並且允許和鼓勵類的重用,提供一種明確表達共性的方法.對象的一個新類可以從現有的類中派生,這個過程稱爲類繼承.新類繼承了原始類的特性,新類稱爲原始類的派生類(子類),原始類稱爲新類的基類(父類).派生類可以從它的父類哪裏繼承方法和實例變量,並且類可以修改或增加新的方法使之更適合特殊的需要.因此可以說,繼承爲了重用父類代碼,同時爲實現多態性作準備.

·        多態

o    多態是指允許不同類的對象對同一消息做出響應.多態性包括參數化多態性和包含多態性.多態性語言具有靈活/抽象/行爲共享/代碼共享的優勢,很好的解決了應用程序函數同名問題.總的來說,方法的重寫,重載與動態鏈接構成多態性.java引入多態的概念原因之一就是彌補類的單繼承帶來的功能不足.

o    動態鏈接 -->對於父類中定義的方法,如果子類中重寫了該方法,那麼父類類型的引用將調用子類中的這個方法,這就是動態鏈接.


注意繼承與重載:子類與父類的關係,重載方法的調用問題

  子類對象可以直接當成父類對象用,但是反過來就不行.比如:人是父類,學生是人的子類,所以學生對象一定具備人對象的屬性,但是人對象就未必具有學生對象的特性.但是子類對象當做父類來用,將失去子類所有特性,只保留與父類同名的屬性和方法,此時可以對父類方法進行重寫.

  一個類中如果定義了重載的方法,則系統在調用方法時,會根據參數的類型自動選擇調用合適的方法

五大基本原則 

·        單一職責原則SRP(Single Responsibility Principle)

o    是指一個類的功能要單一,不能包羅萬象。如同一個人一樣,分配的工作不能太多,否則一天到晚雖然忙忙碌碌的,但效率卻高不起來。

·        開放封閉原則OCP(OpenClose Principle) 

o    一個模塊在擴展性方面應該是開放的而在更改性方面應該是封閉的。比如:一個網絡模塊,原來只服務端功能,而現在要加入客戶端功能,

o    那麼應當在不用修改服務端功能代碼的前提下,就能夠增加客戶端功能的實現代碼,這要求在設計之初,就應當將服務端和客戶端分開,公共部分抽象出來。

·        替換原則(the Liskov Substitution Principle LSP) 

o    子類應當可以替換父類並出現在父類能夠出現的任何地方。比如:公司搞年度晚會,所有員工可以參加抽獎,那麼不管是老員工還是新員工,

o    也不管是總部員工還是外派員工,都應當可以參加抽獎,否則這公司就不和諧了。

·        依賴原則(the Dependency Inversion Principle DIP)

o    具體依賴抽象,上層依賴下層。假設B是較A低的模塊,但B需要使用到A的功能,

o    這個時候,B不應當直接使用A中的具體類:而應當由B定義一抽象接口,並由A來實現這個抽象接口,B只使用這個抽象接口:這樣就達到

o    了依賴倒置的目的,B也解除了對A的依賴,反過來是A依賴於B定義的抽象接口。通過上層模塊難以避免依賴下層模塊,假如B也直接依賴A的實現,那麼就可能造成循環依賴。一個常見的問題就是編譯A模塊時需要直接包含到B模塊的cpp文件,而編譯B時同樣要直接包含到Acpp文件。

·        接口分離原則(the Interface Segregation Principle ISP) 

o    模塊間要通過抽象接口隔離開,而不是通過具體的類強耦合起來

                                              

作者:唐平                                                                                                                     部分信息來源於網絡

時間:2018-5-28

發佈了41 篇原創文章 · 獲贊 74 · 訪問量 16萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章