從C到JAVA,從面向過程到面向對象
概述
C語言是很多大學生接觸到的第一門編程語言,也可以說是一個岔路口——學了C語言,可以去搞硬件,也可以去搞軟件(當然兩者都需要繼續學習)。
如果選擇了向軟件方向發展,那麽學一門面向對象的編程語言就是很有必要的了。又如果選擇了高雅美麗大方得體帥氣可愛健康的JAVA,如何從C過渡到JAVA,從面向過程過渡到面向對象呢?(老師,我扣題了!(°?°)?)
在我看來,學好C,再學其它高級語言就可以少走很多彎路了,因為編程語言在某種程度上都是相通的。所以在這裏我只說一些我覺得JAVA和C不同的地方:
什麽是面向過程
面向過程就是分析出解決問題所需要的步驟,然後用函數把這些步驟一步一步實現,使用的時候一個一個依次調用就可以了(百度百科)。
C語言是典型的面向過程的編程語言。在C語言中,你就是上帝(主函數就是上帝意誌的體現......),你把想做的事“封裝”成一個一個函數模塊,然後在主函數中通過調用不同的函數完成不同的功能,最後達到你想到的效果(得到你想要的輸出)。
如:定義一個 Student 結構體,然後定義一個study函數。在主函數中調用study函數,打印“XXX is studying ! ”語句。
這會給人一種感覺(至少是給我):study這個行為是上帝(主函數)發出的,而student是這個行為的原材料(Σ(?д?;))。在C語言中把可復用的代碼塊寫成一個個函數,這就有點封裝的味道了(事實上就是?)。有人說,面向對象就是結構體裏面包含了函數,好像對也好像不對:面向對象編程確實把數據(屬性)和函數(方法)放到了一塊,但是它還有許許多多面向過程編程沒有的特性。
什麽是面向對象
面向對象就是是把構成問題事務分解成各個對象,建立對象的目的不是為了完成一個步驟,而是為了描敘某個事物在整個解決問題的步驟中的行為(百度百科)。
JAVA也典型的面向對象編程語言之一。在JAVA(或者說面向對象編程語言)中,你還是上帝,但是你是一個“簡政放權”了的上帝。你創建了一個個對象,然後這些對象幹這幹那的。
如:創建一個Student對象,然後這個Student對象在主函數中調用自己study函數,打印“XXX is studying ! ”語句。
這會給人另外一種感覺(至少是給我):主函數還是上帝,但是study行為也不是上帝發出的了,Student也不用被當做原材料了,study這個行為是Student主動發出的。或者有人說,胡說!明明是你(上帝)叫學生去學習的,不然他早就去play了!
......確實,在這裏看起來好像是上帝指使學生去學習一樣,還是給人一種面向過程的感覺。但是這只是一種展示而已,比如說在GUI編程,在WEB編程中等,用戶的行為都是不可預測的(打個比方,你在看視頻時,如果想調大音量和快進,那麽你是先快進再調大音量或者說先調大音量再快進,程序是無法保證的。它是不可能給你一套說明書:要快進必須先調小音量)。所以像面向過程那樣按部就班來設計你的代碼,也是不符合實際的
從C到JAVA,從面向過程到面向對象