LinuxC編程的學習已經告一段落,這段開始學C++。C++是面向對象編程,C語言是面向過程編程。所以學習C++的第一件事就是要弄明白什麼是面向過程編程,什麼是面向對象編程。算法
以前學習的C語言是面向過程編程,回想一下C語言編程的過程。主函數,定義變量,調用函數而後實現。面向過程編程是一種很是具體,要面面俱到的的編程方式。而面向對象是以對象爲單位來進行編程,比較像正常人的思惟。編程
下面咱們舉個例子,好比開車、加速、減速、剎車。模塊化
用面向過程來講就是你要先有一個車,而後這四個分別是4件事,也就是說你要寫4個函數,分別是開車、加速、減速、剎車,這分別是四個事件,若是使用的話要調用4個函數。函數
可是對於面向對象的編程來講,咱們關心的是車這個類,而不是開車、加速、減速和剎車這四個過程。這4個過程是車這個類的一部分,只是其中的一種行爲,並且對於行爲的順序沒有強制要求。學習
兩種思想的對比:對象
面向過程是具體的東西,並且面向過程是面向對象的基礎。面向對象能夠說是面向過程的抽象,好比汽車有開車,加減速和剎車,關於汽車的操做有好多,每個都須要一個具體的過程來實現,把這些過程抽象的總結起來就能夠造成一個類,這個類包括的汽車全部的東西,全部的操做。事件
總結來講就是,面向過程是一種基礎的方法,它考慮的是實際的實現,通常狀況下,面向過程是自頂向下逐步求精,其最重要的是模塊化的思想方法。所以在模塊化編程的時候纔會有「低耦合,高內聚」的思想來提升效率。面向對象的方法主要是把事物給對象化,包括其屬性和行爲。當程序較小的時候,面向過程就會體現出一種優點,其程序流程十分清楚。可是,面向對象編程更貼近實際生活的思想。面向對象編程
面向過程和麪向對象的本質理解效率
面向過程是具體化的,流程化的。解決一個問題,須要一步一步分析須要怎樣,而後須要怎樣,一步一步實現的。面向對象是模型化的,抽象出一個類,這是一個封閉的環境,在這個環境中有數據有解決問題的方法,你若是須要什麼功能直接使用就能夠了,至因而怎麼實現的,你不用知道。基礎
從代碼層面來看,面向對象和麪向過程的主要區別就是數據是單獨存儲仍是與操做存儲在一塊兒。在類的裏邊,實現具體的功能仍是須要流程化、具體化的代碼去實現的,在類裏仍是須要具體的算法來實現的。總結來講面向對象的底層仍是面向過程,面向過程抽象成類,而後封裝,方便使用就是面向對象。