『無為則無心』Python面向對象 — 45、面向對象編程
- 2022 年 2 月 21 日
- 筆記
- 高級測試必會技能 - Python基礎
1、面向對象編程的概念
- Python從設計之初就已經是一門面向對象的語言,正因為如此,我們肯定聽過Python中一切皆對象的說法。
- 面向對象編程(
Object-oriented Programming
,簡稱 OOP),是一種程式設計思想。 - 面向對象編程把對象作為程式的基本單元,一個對象包含了數據(屬性)和操作數據的函數。
- 在面向對象的設計思想中,將程式視為多個對象共同協作的結果。程式被劃分為多個子模組,再由多個對象完成各自模組最終實現程式的功能。
- 面向對象編程,是一種封裝程式碼的思想。
- 面向對象編程是在面向過程編程的基礎上發展來的,它比面向過程編程具有更強的靈活性和擴展性。
2、面向對象編程和面向過程編程的區別
(1)面向過程編程
面向過程的程式設計把函數作為程式的基本單元。程式設計時,編寫一組一組的函數,然後一步一步按照順序的執行各個函數,即一組函數的順序執行。為了簡化程式設計,面向過程把函數繼續切分為子函數,即把大塊函數通過切割成小塊函數來降低系統的複雜度。
面向過程編程,核心是”過程”,關注的是解決問題的步驟,即先做什麼再做什麼。面向過程的編程就像一個流水線,是一種機械式的思維。若程式一開始是要著手解決一個大問題,面向過程的編程思維會把一個大問題分解為很多個小問題,這些小問題還可以繼續分解,直到小問題足夠簡單可以在一個小步驟中解決。
- 優點:
- 極大的降低了寫程式的複雜度,只需要順著執行的步驟,堆疊程式碼即可。
- 複雜問題流程化,進而簡單化。
- 缺點:
- 一套流水線或者流程就是來解決一個問題,如果其中一個方法修改了,那其他組件也要跟著作相應的修改。
- 也就是出現問題,牽一髮而動全身。
(2)面向對象編程
而面向對象的程式設計把對象作為程式的基本單元,程式設計時,設計許多的對象(類創建而成),每個對象都有能力解決一些相應的問題。而我們面向對象編程是基於面向過程編程的,類是將功能(小步驟)進行了封裝,只要找到了具體的類,創建出對象,就可以調用其中的具體功能。
面向對象是用來解決問題的一種思維模式,在以後開發中,先找對象,調用對象中的具體功能。如果真的沒有能夠完成需求的對象,這時就自己定義類,並將所需的功能定義到對象中,方便以後使用。
- 優點:
- 面向對象是一種更符合人們思考習慣的思想。
- 面向過程中更多的體現的是執行者,面向對象中更多的體現是指揮者,指揮對象做事情。
- 面向對象將複雜的問題簡單化。
- 由於面向對象有封裝、繼承、多態性的特性,使系統更加靈活、易維護、易復用、易擴展,可以設計出低耦合的系統。
- 缺點:
- 性能比面向過程低。
- 所謂有得必有失,但在如今硬體瘋狂發展,系統又越來越複雜的情況下,權衡利弊,我們選擇面向對象編程。
3、舉例理解面向對象
面向對象是一種抽象化的編程思想,很多程式語言中都有的一種思想。
1)需求
例如:洗衣服
思考:幾種途徑可以完成洗衣服?
答: 手洗 和 機洗。
2)面向過程洗衣服
手洗就相當於面向過程洗衣服:
- 找盆
- 放水
- 加洗衣粉
- 浸泡
- 搓洗
- 擰乾水
- 倒水
- 晾曬
- 收起疊好
在經歷這麼多步驟後,你終於把衣服完了,但是自己已經精疲力盡。
3)面向對象洗衣服
機洗就相當於面向對象洗衣服。
這個洗衣機就是對象,衣服放進洗衣機中:
- 開啟洗衣機(類創建創建對象)
- 洗衣服(調用對象中的方法)
- 洗衣機–加水
- 洗衣機–加洗衣粉
- 洗衣機–浸泡
- 洗衣機–搓洗
- 洗衣機–脫水
- 洗衣機–排水
- 洗衣機–烘乾
- 關閉洗衣機(程式執行結束收起衣服)
你坐在窗邊看著夕陽,感嘆生活真是太美好了!
4)總結:
思考:對比兩種洗衣服途徑,哪種方式更簡單?
答:機洗更簡單。
機洗只需要找到一台洗衣機,加入簡單操作就可以完成洗衣服的工作,而不需要關心洗衣機內部發生了什麼事情。
面向對象就是將編程當成是一個事物,對外界來說,事物是直接使用的,不用去管他內部的情況。而編程就是設置事物能夠做什麼事。
4、Python的面向對象編程
面向對象編程是利用類和對象來創建各種模型,來實現對真實世界的描述。
使用面向對象編程的原因:
- 一方面是因為它可以使程式的維護和擴展變得更簡單,並且可以大大提高程式開發效率 。
- 另外,基於面向對象的程式可以使它人更加容易理解你的程式碼邏輯,從而使團隊開發變得更從容。
5、面向對象的幾大核心特性
Class
類:一個類指相同事物相同特徵提取,把相同的屬性方法提煉出來定義在類中。Object
對象:一個對象是類的實例,對象是具體的,類是抽象。- 封裝:對外部世界隱藏對象的工作細節。
- 繼承:一個子類繼承基類的欄位和方法。
- 多態:對不同類的對象使用同樣的操作。