面向過程和物件導向的編程—-話題講座

來源:互聯網
上載者:User

    關於寫《面向過程和物件導向的編程》這個話題我很矛盾,我擔心許多程式員對此話題不太感興趣,可能他們不太懂得面向過程和物件導向編程的巨大差距,以及對編程水平的影響。

       在我整個編程生涯中,有無數的轉變和變化讓我銘記在心。從彙編到C語言,從檔案系統到資料庫,從C語言倒Dbase,從C/S倒B/S,從程式語言倒開發平台等等。但是,讓我感覺最大的、最根本的轉變是從C語言轉學C++。可以說這是一個革命性的轉變。在當時我對C語言的運用已經如日中天,得心應手,感到只要用C語言就能完成所有應用程式的開發。但是,學了C++之後,我才恍然大悟,程式還可以用另外一種思維編寫。這個轉變過程極其痛苦,每個概念的接受都需要和C語言進行對比,都要不停地問這個是為什嗎?整整花了我幾乎半年時間,而且每分每秒讓你在不解,忽然懂了,忽然不懂中度過。我學習一種語言,主要是學習這個語言的構架和基本原理,也就是說要研究這個語言的由來和特點。又經過若干年後,我才真正意識到物件導向編程的重要意義。它絕對是程式員思維方式的變革和升華,它使得程式員可以從具體編程,提升到抽象的結構。使得程式員可以編寫更加通用的類,進而編寫通用的軟體產品。

       人們從小就學習1、2、3、4,頭腦裡排滿了次序!絕大數人都是按照次序思維的。這種次序就是一種過程。例如先做什麼,後做什麼。做得比較好的,表現做事有條理,做事很有邏輯性。做得不好的,則把過程做得歪歪扭扭最後也能達到預期的結果。同樣,絕大多數程式員都是按照面向過程思維方式去編程的。儘管他們用了物件導向的程式設計語言,學了對象、學了類,用了類,但是他們仍然用面向過程的方式編程。

一、面向過程編程 

 面向過程編程體現了程式員的邏輯性,許多程式員的水平就體現在這裡。如何設計語句的次序,如何組織函數、如何設計函數的參數、如何設計過程分支等等都體現了程式員的邏輯能力。例如,我們編寫儲存學生資訊功能:

1) 空值處理

我們首先要判斷學生資訊項是否有空值,如必輸項為空白,則給出提示。例如,學生姓名為空白!

2) 合法性檢查

然後,我們還要對各資訊項的有效性進行判別,如果有無效資訊提示重新輸入。例如,如學生的出生日期不符合日期格式!

3) 產生學生ID

可以給出自然數,也可以給出有意義的編碼!但是ID必須是唯一的!如不唯一則進行相應的處理。

4) 開啟資料庫

建立資料庫連接,擷取資料庫控制代碼。

5) 組織_insert語句

將操作者輸入的學生資訊,拼成一句insert語句!(實現這個功能有很多種方法)

6) 提交資料庫運行

將insert語句提交給資料庫。

7) 操作日記

將以上操作資訊寫入日記。

8) 提示寫入成功

提示“儲存成功!”向操作者提示操作成功!

 這些是我很隨意給出的儲存學生資訊的過程。當然,不同的程式員可能會寫出不同的過程,但是最終的結果是,學生資訊儲存到資料庫中。

   處理的內容越多,不同程式員處理邏輯越是不同。可謂五花八門,而正是這些不同,體現了程式員的水平。

 但是,這種面向過程的編程的程式只能用於具體的系統,卻不能用於其它系統。例如,以上的程式只能用於學生資訊處理常式。

二、物件導向編程

   物件導向編程體現了程式員的抽象能力,其本質是把一個事物或多個事物看作一個抽象的對象。還是舉例,儲存學生資訊功能。

1) 我們可以把儲存學生資訊功能看成一個對象(這裡僅是舉例,不一定合理。)

    注意我們這裡先不要管面向過程中的那些處理流程,僅僅把它當作一個對象,一個空集。

2) 我們為這個對象設計設計屬性

   例如,輸入資訊、資料庫連接串、資料表名、日記表名等!

3) 我們為這個對象設計事件。

處理

4) 我們編寫這個類。

5) 我們在儲存功能的命令按鈕裡調用這個類

  用物件導向編程思想與面向過程編程是不同的,它把學生資訊抽象成輸入資訊,把學生資訊表抽象成資料表。基本上於我們所要編寫的具體學生資訊無關。這種抽象使得編寫的類,有可能用於學生資訊處理、客戶資訊處理、員工資訊處理、人口資訊處理中的資訊儲存功能。。。

我並不是說面向過程不好,因為,絕大多數程式是面向過程的,許多程式員面向過程的邏輯效能力還有待提高,因此,程式員還需要從基礎做起,提高面向過程編程的水平;以我的經驗和體會,能夠把面向過程的程式編好也不是很容易的事!新手首先要學會面向過程編程,有經驗的程式員要提高面向過程的編程的水平。而系統的結構、模組的結構、功能的結構、函數的結構、控制項的結構都應該用物件導向的思維進行設計。但是總體上來說,從面向過程編程到物件導向編程是個思維方式提升的過程,作為程式員應該對此有一個清醒的認識,而這一點正是優秀程式員必需具備的條件之一。當一個程式員能從具體的程式抽象出對象,並能把這個對象用於其它程式,則這個程式員完成了技術水平的蛻變,躋身於優秀程式員行列了。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.