天天看點

什麼是OOP(Object Oriented Programming)面向對象程式設計

1、認識面向對象首先要認識面向過程

面向過程程式設計,舉個例子

比如有一天你要吃回鍋肉,你會先去準備食材,然後一步一步把這道菜做出來,這就是面向過程。

還有一種方式你依然可以得到這道菜,你可以去飯店直接點這道菜,這道菜就成為了一個抽象的概念,你不需要知道這道菜是怎麼來的,你就已經擁有了這道菜。這就是面向對象。

面向過程是具體化的,流程化的,解決一個問題,你需要一步一步的分析,一步一步的實作。

面向對象是模型化的,你隻需抽象出一個類,這是一個封閉的盒子,在這裡你擁有資料也擁有解決問題的方法。需要什麼功能直接使用就可以了,不必去一步一步的實作,

至于這個功能是如何實作的,我們不需要知道,我們隻需要使用即可。

其實本質上看,面向對象的内層還是面向過程的,把過程封裝抽象,讓内部過程不可見,隻留下外部接口,那麼這就是面向對象。

2、面向對象的三大特性

1、封裝

隐藏對象的屬性和實作細節,僅對外提供公共通路方式,将變化隔離,便于使用,提高複用性和安全性。

2、繼承

提高代碼複用性;繼承是多态的前提。

3、多态

父類或接口定義的引用變量可以指向子類或具體實作類的執行個體對象。提高了程式的拓展性。

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)

  高層次的子產品不應該依賴于低層次的子產品,他們都應該依賴于抽象。抽象不應該依賴于具體實作,具體實作應該依賴于抽象。就是你出國要說你是中國人,而不能說你是哪個村子的。

  比如說中國人是抽象的,下面有具體的xx省,xx市,xx縣。你要依賴的是抽象的中國人,而不是你是xx村的。

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

  設計時采用多個與特定客戶類有關的接口比采用一個通用的接口要好。就比如一個手機擁有打電話,看視訊,玩遊戲等功能,把這幾個功能拆分成不同的接口,比在一個接口裡要好的多。

參考連結:https://www.jianshu.com/p/7a5b0043b035