03.06 怎麼理解“面向對象”和“面向過程”?

赤焰劍舞




首先,我們先從編程語言的角度,看看這兩者之間的區別。

面向過程最典型的編程語言就是C語言,面向對象的語言則有C++、java、C#等。

C語言中,基本的數據類型就是變量、數組、結構體、函數,當我們在使用這些數據類型編程時,主要考慮的就是如何把需要處理的數據放在合適的數據類型中,並按照事情發生的先後順序依次調用函數,完成業務邏輯的處理。

而面向對象的語言中,最重要的概念就是類,類的實例化結果就是對象。這類語言在設計過程中,參考了很多現實生活中的處理模型,如汽車是一個很抽象的物體,但是如果說奔馳汽車、寶馬汽車就很具體了,這些汽車又有高配低配之分,汽車可以行駛等。

汽車的這些模型,分別對應面向對象中的基類、派生類、屬性和方法等概念。由此可見,在使用面向對象編程時,對數據的合理封裝是其主要核心工作。

最後,總結一下,面向過程編程的核心技術是數據結構與算法;面向對象編程的核心技術是23種設計模式。大家一定要熟練掌握!


Gfilsxin


編程界有兩大思想:面向對象、面向過程,相信大家都很熟悉。常見的面向過程的編程語言有C,面向對象的語言有:C++、Java、C#、PHP、Python等。大多數雖說知道這兩者的概念,但要讓我們說出個所以然來,又不知從何說起。

面向過程(POP)

面向過程就是指分析出解決問題的步聚,通過函數一步步的去實現,並按順序去調用。整個事件都是過程驅動的,比如:開始 -》輸入數據 -》處理數據 -》循環 -》任務完成。因此也被稱為“結構化編程”。

1、優點:

性能上稍強於面向對象(沒有創建對象的開銷),一般注重性能開銷的系統基本會用POP模式開發,比如:單片機、嵌入式開發、Linux開發等。

2、缺點:

代碼片段過多、不易維護和擴展、不易複用。

面向對象(OOP)

我們將構成問題的事物理解成多個“對象”,無需關心對象內部是如何實現的,只要瞭解對象在整個問題處理中所做的行為即可。OOP有三大基本特性:繼承、封裝、多態。

1、優點:

易維護和擴展、易複用,採用面向對象思想可以設計出低耦合的系統,同時也增加了系統的靈活性。

2、缺點:

調用需要創建對象,增加系統開銷。

二者關係

嚴格意義上來說面向對象和麵向過程只是一種編程思想,這兩者也是相輔相成的關係。我們一般在宏觀(全局)上以面向對象的思想來組織及表現事物間的複雜關係,但在微觀(局部)上還是以面向過程形式完成具體功能。簡單來說,即使我們採用的是面向對象的編程思想來編程,依舊也存在面向過程的思想(比如類中方法的實現)。


以上就是我的觀點,對於這個問題大家是怎麼看待的呢?歡迎在下方評論區交流 ~ 我是科技領域創作者,十年互聯網從業經驗,歡迎關注我瞭解更多科技知識!

網絡圈


面向過程,就是把一件事分成最小的可被計算機實現的步驟,這步驟就可以用函數表達,一個個函數執行完了,事也就做完了,即使不是計算機專業的,很多領域都有這種思路的體現。

面向對象,思維廣度更大一些,要額外分析事背後的人或物,包括虛擬的人或物,這些就是對象,步驟或者說函數,一定是這些對象去做的。這種做法用好了是會降低複雜度的,某些問題會有非常高雅的實現。問題在於對象的抽取沒有明確的規則,只有原則,這就需要十幾年的設計磨鍊才能達到最佳實踐的水平。


夢虛竹林


面向過程可以用拖地類比理解

每個步驟都列出來當作一個動作,1,打溼拖把,2,拖地,3,拖完洗乾淨三個過程

而面向對象怎麼理解,事情是拖地,怎麼解決,抽象成一個拖地機器人,裡面封裝了拖地功能,甚至封裝打蠟功能,機器人開關就好比是接口,按下開關發一條掃地指令給對象,對象就可以調用內部的屬性和方法幹活了.

一個簡單的類比,面向過程是所有步驟都定義出來,面向對象是把步驟封裝在對象裡,生成一個對象,就可調用內部的功能,也可調用其他對象,希望對你有幫助.


蘇格拉底學堂


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


分享到:


相關文章: