面向對象編程與面向過程編程的區別與聯繫

轉載自  https://www.cnblogs.com/Mr--Yang/p/6886447.html  

LinuxC編程的學習已經告一段落,這段開始學C++。C++是面向對象編程,C語言是面向過程編程。因此學習C++的第一件事就是要弄明白什麼是面向過程編程,什麼是面向對象編程。

之前學習的C語言是面向過程編程,回想一下C語言編程的過程。主函數,定義變量,調用函數然後實現。面向過程編程是一種非常具體,要面面俱到的的編程方式。而面向對象是以對象爲單位來進行編程,比較像正常人的思維。

下面我們舉個例子,比如開車、加速、減速、剎車。

用面向過程來說就是你要先有一個車,然後這四個分別是4件事,也就是說你要寫4個函數,分別是開車、加速、減速、剎車,這分別是四個事件,如果使用的話要調用4個函數。

但是對於面向對象的編程來說,我們關心的是車這個類,而不是開車、加速、減速和剎車這四個過程。這4個過程是車這個類的一部分,只是其中的一種行爲,而且對於行爲的順序沒有強制要求。

兩種思想的對比:

面向過程是具體的東西,而且面向過程是面向對象的基礎。面向對象可以說是面向過程的抽象,比如汽車有開車,加減速和剎車,關於汽車的操作有好多,每一個都需要一個具體的過程來實現,把這些過程抽象的總結起來就可以形成一個類,這個類包括的汽車所有的東西,所有的操作。

總結來說就是,面向過程是一種基礎的方法,它考慮的是實際的實現,一般情況下,面向過程是自頂向下逐步求精,其最重要的是模塊化的思想方法。因此在模塊化編程的時候纔會有“低耦合,高內聚”的思想來提高效率。面向對象的方法主要是把事物給對象化,包括其屬性和行爲。當程序較小的時候,面向過程就會體現出一種優勢,其程序流程十分清楚。但是,面向對象編程更貼近實際生活的思想。

面向過程和麪向對象的本質理解

面向過程是具體化的,流程化的。解決一個問題,需要一步一步分析需要怎樣,然後需要怎樣,一步一步實現的。面向對象是模型化的,抽象出一個類,這是一個封閉的環境,在這個環境中有數據有解決問題的方法,你如果需要什麼功能直接使用就可以了,至於是怎麼實現的,你不用知道。

從代碼層面來看,面向對象和麪向過程的主要區別就是數據是單獨存儲還是與操作存儲在一起。在類的裏邊,實現具體的功能還是需要流程化、具體化的代碼去實現的,在類裏還是需要具體的算法來實現的。總結來說面向對象的底層還是面向過程,面向過程抽象成類,然後封裝,方便使用就是面向對象。

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