面向對象編程語言(C++)複習筆記(1)——面向對象與面向過程

概述:

一般來說計算機語言要處理兩個概念:數據算法

  • 數據是程序使用和處理的信息,也叫屬性
  • 算法是指程序使用的方法,也叫方法

面向過程強調的是程序的算法方面(方法)。而面向對象強調的是程序的數據(屬性)

面向過程就是分析出解決問題所需要的步驟,然後用函數把這些步驟一步一步實現,使用的時候一個一個依次調用就可以了;

面向對象是把構成問題事務分解成各個對象,建立對象的目的不是爲了完成一個步驟,而是爲了描敘某個事物在整個解決問題的步驟中的行爲。

(一)面向過程(POP)

  • 概念:pop(Process-oriented programming)的縮寫,“面向過程”是一種是事件爲中心的編程思想。面向過程就是分析出解決問題所需要的步驟,然後用函數把這些步驟一步一步實現,使用的時候一個一個依次調用就可以了。
  • 面向過程:主要關注點:實現的具體過程,因果關係。
  • 特性:模塊化,流程化
  • 優點:性能比面向對象高,因爲類調用時需要實例化,開銷比較大,比較消耗資源。對於業務邏輯比較簡單的程序,可以達到快速開發,前期投入成本較低。
  • 缺點:採用面向過程的方式開發很難解決非常複雜的業務邏輯,另外面向過程的方式導致軟件元素之間的“耦合度”非常高,只要其中一環出現問題,整個系統受到影響,導致最終的軟件“擴展力”差,另外,由於沒有獨立體的概念,所以無法達到組件複用。

(二)面向對象(OOP)

  • 概念:oop(Object Oriented Programming)的縮寫面向對象:用線性的思維。與面向過程相輔相成。面向對象是把構成問題事務分解成各個對象,建立對象的目的不是爲了完成一個步驟,而是爲了描敘某個事物在整個解決問題的步驟中的行爲。
  • 面向對象:主要關注點是:主要關注對象(獨立體)能完成哪些功能。
  • 特性:封裝,繼承,多態
  • 優點:耦合度低,擴展力強,更容易解決現實世界當中更復雜的業務邏輯。易維護、易複用、易擴展,由於面向對象有封裝、繼承、多態性的特性,可以設計出低耦合的系統,使系統 更加靈活、更加易於維護。
  • 缺點:性能比面向過程低

(三)實例

可以拿生活中的實例來理解面向過程與面向對象,例如五子棋,面向過程的設計思路就是首先分析問題的步驟:1、開始遊戲,2、黑子先走,3、繪製畫面,4、判斷輸贏,5、輪到白子,6、繪製畫面,7、判斷輸贏,8、返回步驟2,9、輸出最後結果。把上面每個步驟用不同的方法來實現。

如果是面向對象的設計思想來解決問題。面向對象的設計則是從另外的思路來解決問題。整個五子棋可以分爲1、黑白雙方,這兩方的行爲是一模一樣的,2、棋盤系統,負責繪製畫面,3、規則系統,負責判定諸如犯規、輸贏等。第一類對象(玩家對象)負責接受用戶輸入,並告知第二類對象(棋盤對象)棋子佈局的變化,棋盤對象接收到了棋子的變化就要負責在屏幕上面顯示出這種變化,同時利用第三類對象(規則系統)來對棋局進行判定。

可以明顯地看出,面向對象是以功能來劃分問題,而不是步驟。同樣是繪製棋局,這樣的行爲在面向過程的設計中分散在了多個步驟中,很可能出現不同的繪製版本,因爲通常設計人員會考慮到實際情況進行各種各樣的簡化。而面向對象的設計中,繪圖只可能在棋盤對象中出現,從而保證了繪圖的統一。

(四)區別與聯繫

面向對象與面向過程具體而言,有如下幾個方面的不同:

1、出發點不同

面向對象方法是用符合常規思維的方式來處理客觀世界的問題,強調把問題域的要領直接映射到對象之間的接口上。而面向過程的方法則強調的則是過程的抽象化與模塊化,它是以過程爲中心構造或處理客觀世界問題的。

2、層次邏輯關係不同

面向對象的方法則是用計算機邏輯來模擬客觀世界中的物理存在的,以對象的集合類作爲處理問題的單位,儘可能地使計算機世界向客觀世界靠攏,以使問題的處理更清晰直接,面向對象方法是用類的層次結構來體現類之間的繼承與發展。面向過程方法處理問題的基本單位是能清晰準確地表達過程的模塊,用模塊的層次結構概括模塊或模塊間的關係與功能,把客觀世界的問題抽象成計算機可以處理的過程。

3、數據處理方式與控制程序方式不同

面向對象方法將數據與對應的代碼封裝成一個整體,原則上其他對象不能直接修改其數據,即對象的修改只能由自身的成員函數完成,控制程序方式上是通過“事件驅動”來激活和運行程序。而面向過程方法是直接通過程序來處理數據,處理完畢後即可顯示處理的結果,在控制方式上是按照設計調用或返回程序,不能自由導航,各模塊之間存在着控制與被控制,調動與被調用的關係。

4、分析設計與編碼轉換方式不同

面向對象方法貫穿於軟件生命週期的分析,設計及編碼中,是一種平滑過程,從分析到設計再到編碼是採用一致性的模型表示,即實現的是一種無縫連接。而面向過程方法強調分析、設計及編碼之間按規則進行轉換貫穿於軟件生命週期的分析、設計及編碼中,實現的是一種有縫的連接。

 

 

參考博客:

https://blog.csdn.net/bieleyang/article/details/78330362
https://blog.csdn.net/dragon3100/article/details/100670020

 

 

 

 

 

 

 


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章