全方位整理Java的面向對象思想

面向對象

面向對象就是一種思想,把任何事物都看作是一個對象,把它們之間的關係抽象成類、繼承。 在軟件開發方面,面向對象是指一種程序設計範型,同時也是一種程序開發的方法。

常見的幾個方面是,面向對象的分析(OOA,Object Oriented Analysis),面向對象的設計(OOD,Object Oriented Design)、以及面向對象的編程實現(OOP,Object Oriented Programming)。

早期的計算機編程都是面向過程的,當需要處理的問題越來越複雜時,面向對象思想就應運而生了。

在計算機語言方面,純面嚮對象語言的像Smalltalk在20世紀70年代出現,隨後出現的C++是混合型,90年代出現了Java以及隨後微軟應對Java發表的C#都是面向對象的語言。

面向對象的三大特性

  • 1、封裝 將代碼及其處理的數據綁定在一起,隱藏對象的屬性和實現細節,僅對外提供公共訪問方式,將變化隔離,便於使用,提高複用性和安全性。 Java 語言的基本封裝單位是類
  • 2、繼承 子類擁有父類的全部特徵和行為,這是類之間的一種關係。提高代碼複用性;繼承是多態的前提。Java 只支持單繼承。
  • 3、多態 父類中定義的屬性和方法被子類繼承後,可以具有不同的屬性或表現方式。多態機制使具有不同內部結構的對象可以共享相同的外部接口。提高了程序的拓展性。

設計標準:高內聚與低耦合

  • 內聚是指事物內部的聯繫緊密程度。在面向對象編程中,就是對象內各元素之間關係緊密程度。高內聚追求的是事物儘量只完成單一功能,以降低事物本身的複雜程度。
  • 耦合是指事物之間的聯繫緊密程度。在面向對象編程中,就是對象與對象之間的關係緊密程度。低耦合追求的是事物儘量保持自身獨立。

面向對象的五大基本原則:

  • 1、單一職責原則SRP(Single Responsibility Principle) 類的功能要單一,僅有一個引起其變化的原因,提高高內聚來減少引起變化的原因。
  • 2、開放封閉原則OCP(Open-Close Principle) 一個軟件實體應當對擴展開放,對修改關閉。即軟件實體應儘量在不修改原有代碼的情況下進行擴展。抽象是關鍵,封裝可變性。
  • 3、裡式替換原則LSP(the Liskov Substitution Principle LSP) 所有引用基類(父類)的地方必須能透明地使用其子類的對象,任何時候都可以用子類型替換掉父類型。這個原則依賴面向對象的繼承特性和多態特性。
  • 4、依賴倒置原則DIP(the Dependency Inversion Principle DIP) 抽象不應該依賴於細節,細節應當依賴於抽象;高層模塊不應該依賴低層模塊,兩者都應該依賴其抽象。換言之,要針對接口編程,而不是針對實現編程。
  • 5、接口分離原則ISP(the Interface Segregation Principle ISP) 使用多個專門的接口,而不使用單一的總接口,即客戶端不應該依賴那些它不需要的接口。

面向對象的一個法則與複用原則

  • 迪米特法則LOD/LKP(Law of Demeter 又名Least Knowledge Principle) 一個軟件實體應當儘可能少地與其他實體發生相互作用。降低類之間的耦合。
  • 合成複用原則CRP(Composite Reuse Principle) 要儘量使用合成和聚合,儘量不要使用繼承。因為繼承複用破壞包裝,子類知道所有父類細節,而且父類變化總是引起子類變化。

面向對象的思維

  1. 先整體,再局部
  2. 先抽象,再具體
  3. 能做什麼,再怎麼做


全方位整理Java的面向對象思想


全方位整理Java的面向對象思想


分享到:


相關文章: