面試官:編程的面向對象和麵向過程說出月薪給你10k+

導語

我是大學重點本科,今年剛拿畢業證,大學學的JAVA,出來啥都不會,光顧著和室友擼了。然後又培訓了下。出來還是什麼都不會。面向對象什麼的都不知道。就想問一下各位哥哥姐姐們,還有機會找到工作不。

許多大學生就是在學校的時候不好好學習聽課光顧著談戀愛,打球,玩遊戲把學業都給荒廢了,想起畢業了才荒亂的拿起書本學習,離校混了個文憑,出來上班才發現什麼都不會。

我們說一下面向過程:

面向過程的思維方式是分析綜合。面向對象的思維方式是構造。

所以面向過程的程序設計有挑戰性,技巧性強。

面向過程是具體化的,流程化的。解決一個問題,需要一步一步分析需要怎樣,然後需要怎樣,一步一步實現的。

面向過程就是將編程當成是做一件事,要按步驟完成,每一步就是一個過程。比如作菜,先放油,接著是放菜進去炒,然後放水,最後菜就做好了。所謂過程就是我們解決問題的步驟,一步步的按照流程走,有先後之分。整個設計就好比流水線,思維上比較機械化。

這裡面放油,炒,放水就是三個步驟。

面向過程是對解決問題所需的步驟進行分析,然後使用函數逐步實現這些步驟,使用時逐一調用這些函數。

面試官:編程的面向對象和麵向過程說出月薪給你10k+

面向對象

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

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

面向對象就是將編程當成是一個事物,對外界來說,事物是直接使用的,不用去管他內部的情況。而編程就是設置事物能夠做什麼事。其實有點像是將面向過程給放到事物內部了。仍然舉作菜為例,其實面向過程就好像你是個廚師,要自己炒菜,所以要講究步驟,而面向對象就好像你是個食客,你只要通知廚師作菜,即發一個消息就可以了,至於廚師怎樣作菜,是不用知道的。

面向對象:使用類、封裝、繼承、多態、抽象、消息等概念進行程序設計。採用的是分類的思維模式,先思考需要解決的問題需要哪些類,再對每個類進行單獨思考,最後才對類中的細節進行面向過程的思考。

面向對象和麵向過程的主要區別就是數據是單獨存儲還是與操作存儲在一起。對面向過程而言,數據是獨立的。而在面向對象中,對象本身就提供了存儲數據的空間(類的數據成員),這樣就是函數的參數傳遞簡單多了,而且提供了數據封裝後,數據的訪問也變可靠了。

面向對象主要在於對象抽象有技術性,抽象完了後,任何人都可以做後面的工作了。

二者的區別與聯繫
1.面向對象解決的是熟悉的問題,面向過程解決的是不熟悉的問題
2.面向對象圍繞的是問題域中的對象來設計的,面向過程圍繞的是問題域中需要解決的任務來設計的。

從結構上來說,面向過程的特點是模塊化和流程化,而面向對象的特點是封裝、繼承和多態,這裡面就有本質的區別了。面向過程以功能(函數)作為模塊化的基礎,而面向對象則以類作為功能的組織基礎,而類需要一個“抽象”的過程。

面向對象離不開面向過程,二者相輔相成。

優缺點:

面向過程

優點:複雜的問題流程化,將問題分解簡化 。性能比面向對象高。因為類調用時需要實例化,開銷比較大,比較消耗資源,所以當性能是最重要的考量因素的時候,比如單片機、嵌入式開發、Linux/Unix等一般採用面向過程開發

缺點: 沒有面向對象易維護、易複用、易擴展

面向對象

優點: 對象是一個數據以及相關行為的簡化的集合,面向對象是功能上指向建模對象。易維護、易複用、易擴展,由於面向對象有封裝、繼承、多態性的特性,可以設計出低耦合的系統,使系統更加靈活、更加易於維護

缺點: 複雜度遠高於面向過程,交互是解決問題,無法準確預測結果

性能比面向過程低

總結兩句話:

面向對象是將實物高度抽象化

面向過程是一種自頂向下的編程。

而面向對象是自下先建立抽象模型然後再使用模型。


分享到:


相關文章: