一、面向對象編程(object oriented programming)
簡稱:OOP,是一種編程的思想。
OOP把對象當成一個程序的基本單元,一個對象包含了數據和操作數據的函數。
面向對象的出現極大的提高了編程的效率,使其編程的重用性增高
面向對象和麵向過程
有一天你想吃魚香肉絲了,怎麼辦呢?你有兩個選擇
① 自己買材料,肉,魚香肉絲調料,蒜薹,胡蘿蔔等等然後切菜切肉,開炒,盛到盤子裡。
② 去飯店,張開嘴:老闆!來一份魚香肉絲!
面向對象的特性
① 三大特性
封裝
隱藏對象的屬性和實現細節,僅對外提供公共訪問方式,將變化隔離,便於使用,提高複用性和安全性。
繼承
子項繼承父項的某些功能,在程序中表現某種聯繫
多態
一個函數有多種表現形式,調用一個方法有多種形式,但是表現出的方法是不一樣的。
② 五大原則(SOLID,首字母連起來)
單一職責原則SRP(Single Responsibility Principle)
類的功能要單一
開放封閉原則OCP(Open-Close Principle)
對於擴展開放,對於修改封閉
裡式替換原則LSP(the Liskov Substitution Principle LSP)
子類可以替換父類出現在父類能夠出現的任何地方。
依賴倒置原則DIP(the Dependency Inversion Principle DIP)
高層次的模塊不應該依賴於低層次的模塊,他們都應該依賴於抽象。抽象不應該依賴於具體實現,具體實現應該依賴於抽象。
是不是說的很繞,到底怎麼個依賴倒置原則?
假設,高層次的模塊依賴低層次的模塊?
如果“倒置”呢?
接口分離原則ISP(the Interface Segregation Principle ISP)
設計時採用多個與特定客戶類有關的接口比採用一個通用的接口要好。比如說英雄聯盟有排位賽,匹配賽,大亂鬥,把這幾個功能拆分成不同的接口,比在一個接口裡要好的多。
>>>
無論是 Python 還是 Java,程序員天天面向對象,你說這麼多程序員咋還沒有對象?
閱讀更多 Python大星 的文章