python-06面向對象-01面向過程和面向對象的區別

1.面向過程介紹

1.1 面向過程(Procedure Oriented)思維

面向過程編程主要關注的內容是“程序的邏輯流程”,是一種“執行者”思維,主要適合編寫小規模的程序。
采用面向過程思想思考問題時,我們首先思考“怎么按照步驟實現?”,首先將問題解決拆解成若干步驟,并將這些步驟對應成方法,一步一步,最終完成。這個適合簡單的任務,不需要過多協作的情況。

1.2 面向過程示例

拿一個我們生活中很常見的例子,比如:如何開小汽車?我們在腦海中會很快想到如下步驟:

  1. 發動車
  2. 掛擋
  3. 踩油門
  4. 走你

這樣我們就實現了一次面向過程的思維。

1.3 面向過程的不足

當我們思考比較復雜的問題,比如“如何造車?”,就會發現列出1、2、3、4這樣的步驟,無從下手,步驟是在太多了,有的有先后關系,有的沒有依賴關系,有一種:老虎吃刺猬-無處下嘴的感覺。

問題點: 面向過程的思考方式,遇到復雜問題,很難處理。

2.面向對象是什么?

2.1 面向對象(Object oriented Programming, OOP)思維

面向對象更加關注的是“軟件中對象之間的關系”,是一種“設計者”思維,這種編程思想主要是針對大型軟件設計而來的。面向對象編程使程序的擴展性更強,可讀性更好,能夠讓程序像搭積木一樣簡單。
面向對象編程將數據和操作數據的方法封裝到對象中,組織代碼和數據的方式更加接近人的思維,從而大大提高編程的效率。
面向對象(Object)思想更加契合人的思維模式。我們首先思考的是“怎么設計這個事物?”比如思考造車,我們就會先思考“車怎么設計?”,而不是“怎么按照步驟造車的問題”。這就是思維方式的轉變。

2.2 面向對象示例

拿我們剛才提到造車的問題,當我們采用面向對象方式思考造車的時候, 我們會先思考發現小汽車是由那些大的部分所組成,列舉如下:

  1. 輪胎
  2. 發動機
  3. 車殼
  4. 座椅
  5. 擋風玻璃

為了完成整個任務,我們采用協作的方式,部分之間單獨進行處理。我們找輪胎廠完成制造輪胎的過程,發動機廠完整制造發動機的步驟;這樣,發現大家可以同時進行車的制造,最終進行組裝,大大提高了效率。但是,具體到輪胎廠的一個流水線操作,仍然是有步驟的,但是需要面向過程的思路去處理。

我們千萬不要把面向過程和面向對象對立起來。他們是相輔相成的。面向對象對象離不開面向過程。

2.3 面向對象的思考方式

遇到復雜問題,先從問題中找名詞(面向過程更多的是找動詞),然后確定這些名詞那些可以作為類,再根據問題需求確定類的屬性和方法,確定類之間的關系。

3.面向過程和面向對象的聯系和區別

  • 都是解決問題的思維方式,都是代碼組織的方式
  • 解決簡單問題可以使用面向過程
  • 解決復雜問題,宏觀上使用面向對象把握,微觀處理上仍然是面向過程。
  • 面向對象可以認為是面向過程的升級

4.從最小單元的角度來看面向過程和對象

面向過程

最小組成單元函數,簡單認為是執行具體功能的代碼塊

面向對象

最小組成單元是對象,對象中包含屬性和方法(對應面向過程的函數)

總結:

從這里就可以看出:面向對象比面向過程的最小單元,包含更多的內容(屬性,也就是數據),所以能做的事情也更多,也就可以認為是面向過程的升級。

5.python中的編程范式

python完全采用面向對象的思想,是真正面向對象的編程語言。完全支持面向對象的基本功能,例如:繼承、多態、封裝等。
python中,一切皆對象。包括常見的數據類型、函數都是對象。而且python支持面向過程、面向對象、函數式編程等多種編程范式

注意:很多說java是面向對象的編程語言,但是請注意,java不是純面向對象的一門語言,為什么這么說?因為java中存在8大基礎數據類型,這些類型都不是對象,就是普通的數值、字符、字符串,所以不完全是面向對象的類和對象。這點請注意。


備注:
更多精彩博客,請訪問:聶發俊的技術博客
對應視頻教程,請訪問:python400
完整markdown筆記,請訪問: python400_learn_github

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容