天天看點

面向過程與面向對象的比較詳解

簡介

面向過程和面向對象是兩種截然不同的思維方式。面向過程的程式設計産生在前,面向對象的程式設計産生災後,是以面向對象的程式設計一定繼承前者的一些優點,并摒棄前者存在的一些缺點,這兩在發展和演變過程中,也互相借鑒,互相融合,來吸收對方的優點,是以并不能斷言誰好誰不好,隻有更加合适的利用。

面向過程

什麼是面向過程的程式設計:

面向過程的程式設計中最常用的分析方法是“功能分解”。也就是将使用者的需求先分解成子產品,然後把子產品分解成一個一個的函數,直到分解成一條條程式語句為止。

面向過程設計把重點放在解決問題的功能子產品劃分上,将資料和操作這些資料的函數分開,資料處于次要地位,而過程即子產品劃分是關心的焦點。

了解:

面向過程程式設計更加關注的是“程式的邏輯流程”,是一種“執行者”思維,适合編寫小規模的程式,面向過程适合簡單、不需要協作的事務。(強調于程式過程)

舉例:

面向過程成産汽車,需要關注的點太多了,細化到每一個零件上,所需要的資訊量太大,但是一但實作流水線,就能快速的完成組裝,效率極高,花都工廠一小時可生産60輛汽車。但是流水線的問題也很明顯,如果一個零件組裝出問題,一條線就不能繼續生産,一條線不能生産則,一個工廠中的房間不能生産。

優點:

  1. 程式順序執行,流程清晰明了。
  2. 性能比面向對象高

缺點

  1. 主要制程式承擔了太多的文物,各個子產品都需要主要制程式進行控制和排程,主要和子產品之間的承擔任務不均衡;
  2. 如果資料結構發生變化,相關的函數必須跟着變化;
  3. 總體設計時要分析的問題量大、面廣、複雜;
  4. 課題組成之間的借口資訊多、協調難、效率低;
  5. 可複用性差;

面向對象

什麼是面向對象的程式設計:

是一種程式設計範型,同時也是一種程式開發的方法。對象指的是類的執行個體。它将對象作為程式的基本單元,将程式和資料封裝其中,以提高軟體的重用性、靈活性和擴充性。

了解:

面向對象更加關注的是“軟體中對象(資料和功能捆綁在一起)之間的關系”,是一種“設計者”思維,适合編寫大規模的程式。(強調于對象)

舉例:

面向對象生産汽車,關注的點是如何将各個零件組合起來,如汽車一般是由發動機、底盤、車身、電器裝置四個基本部分組成。是以一個工廠會有四個生産工廠中的房間即沖壓、焊裝、塗裝、總裝、不同工廠中的房間各自工作又互相關聯,但最後還是要将零件組裝起來。

優點:

  1. 面向對象程式設計将資料和操作資料相關的方式封裝到對象中,組織代碼和資料的方式更加接近人的思維,進而大大提高了程式設計的效率。
  2. 更好的可重用性
  3. 更好的可擴充性
  4. 更好的可管理性

缺點:

  1. 性能比面向過程低

總結:

面向對象可以幫我們從宏觀上把握,從整體上分析整個系統。但是具體到實作部分的圍觀操作,仍然需要面向過程的思想去處理,是以不要将面向過程和面向對象對立起來,他們是相輔相成的,面向對象離不開面向過程。簡單問題可以使用面向過程,複雜問題使用面向對象把握,使用面向過程處理。

PS:下一篇将關于面向對象的特點以及類