陳松 劉君 劉洋
【摘要】教材建設是高校課程建設的重中之重,本文根據(jù)研究生VC++課程教材的現(xiàn)狀,結合編寫《C++程序設計進階教程—從C到VC++》教材的實踐,探討了研究生VC++課程進階教材建設中的若干問題。
【關鍵詞】研究生VC++課程 進階教學 教材建設
【中圖分類號】G643.2 【文獻標識碼】A 【文章編號】2095-3089(2019)10-0030-02
VC++課程是重慶交通大學近年來,面向全校非計算機專業(yè)碩士研究生開放的課程,一直保持著較高的選課率。該課程旨在培養(yǎng)學生掌握VC++語言的基本語法規(guī)則,養(yǎng)成規(guī)范的編程習慣,具備一定的的軟件開發(fā)能力,為下一步在工程項目中的應用打下良好的基礎。
一、教材建設的必要性
現(xiàn)在,全國各大高校VC++的課程開設得非常普及,出版了許多教材,但是這些計算機語言教材一部分是面向計算機專業(yè)的學生,而面向非計算機專業(yè)學生的另一部分教材,卻主要是針對等級考試編寫的。作為非計算機專業(yè)的研究生,他們不作計算機方向的理論研究,也不參加計算機等級考試,而是直接面對實際應用,參加各自導師的項目。這類教材缺非常少,近年來隨著各高校對研究生招生規(guī)模的擴大,這個問題顯得突出起來。
在任何課程的教學實踐活動中,教材始終是一個不可或缺的第一要素,教材是體現(xiàn)教學內容和要求的載體,是保障教學質量的重中之重。一本適合的教材,不但可以啟發(fā)同學們的思維,便于同學們的自學,也方便老師的教學。多年來的教學實踐,使我們深深的體會到,一套適用的教材,是確保一門課程教學質量的關鍵。
重慶交通大學歷來十分重視教材的建設,我們在研究消化了國內外多部專著、教材的基礎上,結合非計算機專業(yè)研究生的教學實踐特點,自編講義進行了這門課程的講授,隨后在不斷總結經驗,改進課程內容和教學方法的基礎上,編寫了《C++程序設計進階教程—從C到VC++》教材。并由清華大學出版社出版,作為正式的成熟教材使用。
二、進階教材建設的特點
這本教材作為非計算機專業(yè)研究生的教學用書。和其它有關的VC++教材相比,有如下的一些特點:
1.本書總體以Windows平臺的VC++編程為目標,采用進階教學的方法,全書共分為三個部分,內容從C到C++再到VC++,C部分講述了C語言編程的基本概念和方法;C++部分在C語言的基礎上,圍繞類和對象兩個核心,以封裝、繼承和多態(tài)為主線展開學習;VC++部分重點講述MFC的運行機制,對MFC的核心結構文檔視圖做了詳細的分析。全書在內容的編排上,在C語言編程和C++基礎部分,去掉或者弱化掉和Windows編程關系不大的部分,使得本課程盡早的進入到Windows平臺。
2.第一部分C語言編程:是全書的基礎,介紹C語言涉及的基本概念,C語言編程的基本方法,這一部分的內容包括:C語言概述、C語言的基本元素、C程序的構成、構造類型與指針、文件;目前,市面上提供的絕大部分 C 語言程序設計教材都偏重于語法規(guī)則的介紹,教材的大部分篇幅都在反復介紹各種C語句的正確或錯誤的用法,耗費了學習過程中的大部分精力,而真正使用 C 語言的編程能力沒有得到培養(yǎng)。針對這些問題,《C++程序設計進階教程—從C到VC++》教材在這部分,充分考慮了 C 語言結構化程序設計的特點,在章節(jié)的安排上,沒有像一般的教材那樣,將函數(shù)、指針、結構體等單獨作為獨立的一章,而是按照C 語言的結構構架,放入相應的部分,同時去掉或者弱化那些針對等級考試的多而雜的語法規(guī)則介紹。從而使學生將重點放在程序設計思路和編程技能的培養(yǎng)上來。
3.第二部分C++基礎:在C語言的基礎上,增加了類和對象這兩大核心概念,圍繞著封裝、繼承和多態(tài)展開C++的學習。這部分的內容包括:封裝、繼承、多態(tài)、輸入輸出流。
這部分的難點是讓學生理解類和對象這兩大核心概念,本教材在引入這兩大核心概念上,針對非計算機專業(yè)的學生,特別注意避免過于專業(yè)化的描述,力求做到通俗易懂。下面是本教材具體引入類和對象的語言組織:
傳統(tǒng)的面向過程的程序設計,如C程序,是圍繞功能進行的。用一個函數(shù)來實現(xiàn)一個功能。所有的數(shù)據(jù)都是公用的,一個函數(shù)可以使用任意一組數(shù)據(jù),而一組數(shù)據(jù)又能被多個函數(shù)所使用。因此程序設計者必須考慮每一個細節(jié),什么時候對什么數(shù)據(jù)進行操作。當程序規(guī)模膨脹、數(shù)據(jù)量增大、操作種類很多時,程序設計者往往感到難以應付。就如大部隊的司令直接指揮每一個士兵作戰(zhàn)一樣,一會兒讓一連的某士兵到A高地架機關槍,一會又讓八團的某士兵去B陣地前打坦克,這顯然是非常勞累和不現(xiàn)實的。
為了解決這些問題,必須采用面向對象程序設計的新思路。它面對的不再是一個個函數(shù)和一組組數(shù)據(jù),而是一個個對象。那么什么是對象呢?世界上任何一個事物都可以看成是一個對象,如單位是一個對象,汽車是一個對象,同樣,每個人也可以看成是一個對象。
實際上,用專業(yè)的術語來說,對象就是把相關的數(shù)據(jù)和操作放在一起,形成的一個整體。只要給它一個命令或通知,它就能按規(guī)定去完成相應的任務,對外界來說,它就像一個“黑匣子”,這就是所謂的“封裝”性,及把數(shù)據(jù)和操作代碼封裝在一個被稱為“對象”的東西里面。
現(xiàn)在,大部隊的司令不再直接指揮每一個士兵作戰(zhàn)了,給一連這個對象下命令,一連這個對象用屬于自己的士兵和裝備去完成任務,給八團這個對象下命令,八團這個對象也用屬于自己的士兵和裝備去完成它的任務。
每個對象都屬于某個類型,在C++中,對象的類型被稱為“類”(class),類代表了某一批對象的共性和特征,可以說類是對象的抽象。如張三、王五屬于人這個類,一連、八團屬于單位這個類。這樣,程序設計者就不用去研究每個單獨的對象,而去研究類,搞清楚了某種類的特點,就搞清楚了屬于這種類的一批對象的特點。
以上,從現(xiàn)實世界的角度介紹了“類”和“對象”這兩個重要的基本概念,那么如果單純從計算機的角度來看,應該如何具體描述它們呢?
通過前面章節(jié)的學習大家知道,對一個單獨的數(shù)據(jù),系統(tǒng)用一個獨立的變量來描述它,如一個整數(shù),系統(tǒng)用int AA,來描述它。當程序員向AA里加同樣類型的數(shù)據(jù)時,系統(tǒng)用數(shù)組來描述它,如10個整數(shù),系統(tǒng)用int AA [10]來描述它。當程序員向AA里加不同類型的數(shù)據(jù)時,用數(shù)組不行了,就得用結構體來描述它,例如,再向AA里加一個字符串表示姓名時,系統(tǒng)用struct AA {int [10]; char *name}來描述它,這里面可以裝10個整數(shù)和一個字符串。那么現(xiàn)在,程序員能不能向AA里加一個函數(shù)呢?
完全可以,這樣AA就變成了大名鼎鼎的“類”了,稱為AA類,所以換句話說,把函數(shù)加到結構體里面,就變成了“類”。那么另一個大名鼎鼎的“對象”又是什么呢?它就是類的變量,就像整型變量、結構體變量一樣。只因為類里有了函數(shù),它帶來了質的變化,使類不再像以前的數(shù)組和結構體那樣,只具有存儲 功能,它還具有了操作的功能,為了突出這個質的變化,C++特地給類的變量取了一個新名字叫“對象”,如此而已。
4.第三部分VC++入門:首先重點講述MFC面向對象的特點,MFC程序的運行機制,接下來,以對話框和菜單為例,講解我們平時首先看到的Windows程序的那些可視化界面元素的工作原理。然后,對MFC應用程序的核心文檔視圖結構做了詳細的分析。最后,介紹了Windows設備無關性的特點,以及實現(xiàn)繪圖和文本輸出的方法。這部分的內容包括:Windows編程基礎、界面元素、文檔和視圖、圖形和文本。
Windows編程是一種完全不同于傳統(tǒng)的DOS(控制臺)方式的程序設計方法,傳統(tǒng)的程序設計方法是面向過程的,程序直接控制事件和過程的順序,按照不可改變的模式進行工作。Windows編程是一種事件驅動的程序設計模式。Windows程序提供給用戶許多可視的界面元素,如按鈕、菜單等,用戶操作這些可視的界面元素,將會產生特定的事件,而事件會發(fā)出消息,然后接受消息的對象調用預設的消息處理函數(shù)來完成相應的操作,因此,Windows的應用程序是沒有固定流程的。所以本教材在章節(jié)的組織上,首先介紹Windows程序的運行機制,緊接著引入Windows程序的界面元素。然后詳細的分析了文檔與視圖之間的基于消息的信息交換,最后是Windows編程的輸出方法,使得學生能夠快速的進入到Windows平臺的實際編程。
三、結束語
C到C++再到VC++是一個龐大復雜的體系,學生在學習的時候,不要試圖面面俱到,開始階段哪怕走的是一條羊腸小道,只要能通過這片沼澤到達對岸就是勝利,不要試圖把基礎打得很寬,希望修一條寬敞大路通過去,使今后開發(fā)項目寫代碼時能左右逢源,但是,這樣做多半會半途而廢的。本教程在這些方面作了許多應對,如只向學生推薦寫代碼用到的常用方法,而不像等級考試教材那樣詳細列舉各種可能等等。
現(xiàn)在市面上介紹C++的教材非常多,但針對研究生基礎課的教材卻很少,尤其是研究生的基礎課有一個非常大的特點,面向全體研究生的基礎課,其學生來自不同的專業(yè),一部分學生完全沒學過編程,一部分學生已經學過C語言,還有一部分學生已經開始涉及C++編程了。針對這種特殊性,本教程在編寫時作了很充分的考慮,內容的安排從C到C++再到VC++,每個學生可根據(jù)自身的實際情況,選擇在不同的點加入,最后一起到達終點完成課程的學習。
參考文獻:
[1]黃璐,于紅,李向軍,李然.C 語言程序設計課程教材建設研究. 吉林省教育學院學報,2013(03)
[2]楊樹林,胡潔萍.簡談軟件技術類課程教材建設.計算機教育,2011(10)
[3]劉鋼,程克明.淺論數(shù)據(jù)庫教材建設中內容的擷取.計算機時代,2005(11)