国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

“C++面向對象程序設計”教學改革探索

2013-12-29 00:00:00白霞高飛
電腦知識與技術 2013年2期

摘要:“C++面向對象程序設計”課程是當前計算機以及相關專業(yè)的一門重要的基礎課程。該文結合多年的教學經(jīng)驗,對該課教學中的課程定位、教學內(nèi)容、教學方法以及考核方式等方面總結了一些思路,并進行了有益探索,以期對該課程的教學方法的改進和教學質量的提高有所貢獻。

關鍵詞: C++面向對象程序設計;教學改革

中圖分類號:G642 文獻標識碼:A 文章編號:1009-3044(2013)02-0351-05

1 概述

“C++面向對象程序設計”課程是我校信息與電子學院信息類專業(yè)學生的一門公共基礎課,該課程以“C語言程序設計”為先修課程,以“數(shù)據(jù)結構”為后續(xù)課程。該課程概念多、理論抽象、知識面廣,并且起著承上啟下的重要作用,為了設計好教學過程,增強教學效果,經(jīng)過多年的思考和探索,《C++面向對象程序設計》課程組在明確課程定位、優(yōu)化教學內(nèi)容、改革教學方法和完善考核方式等方面進行了探索,逐步形成了自己的課程特色。

2 課程定位

課程必須準確定位,這個定位指明了整個教學過程中努力的方向。大體而言,C++程序設計的課程定位大體有兩種不同的思路:1)側重于程序設計語法規(guī)范的說明。認為課程的對象是高校各專業(yè)的大學生,并無從事程序設計的實際經(jīng)驗,將來也不一定是C++的專業(yè)開發(fā)人員,因此課程的定位在于了解面向對象程序設計方法,能夠利用C++編寫相對簡單的程序,為以后進一步學習和應用打下基礎。2)側重于用編程解決實際問題的說明:致力于消除大學生畢業(yè)后卻不會編程的普遍現(xiàn)狀,將課程定位牢牢鎖定在編程能力而不是應付機械式的考試上。

這兩種思路是鑒于學生的未來是否以編寫程序為職業(yè)作為出發(fā)點來進行定位,由于本門課程的教學對象是信息類非計算機專業(yè)大二本科生,學生的未來職業(yè)與C++的相關度屬于中等程度,因此,從這個意義上來說,本門課程的基本定位首先是力求平衡。其次,等級考試所引起的盲目應試追求雖然常被詬病,然而應試所帶來的學習驅動力是客觀事實,因此,本門課程的定位兼顧著應對計算機等級考試能力的培養(yǎng),旨在由應試需求驅動學習興趣,從而引導學生走向內(nèi)在驅動,領悟C++面向對象程序設計本身的精彩之處。

3 教學內(nèi)容

本課程以“C語言程序設計”為先修課程,以“數(shù)據(jù)結構”為后續(xù)課程,因此,教學內(nèi)容以“從C到C++”為第一章完成過渡,以泛型程序設計的基礎——“模板”為最后一章留下鋪墊,中間以面向對象程序設計的三大特性:封裝性、繼承性和多態(tài)性為核心。教學內(nèi)容的整體布局如表1所示[1]。

表1 《C++面向對象程序設計》教學內(nèi)容

[\&章節(jié)\&內(nèi)容\&1\&從C到C++\&函數(shù)原形說明;變量的說明;輸入輸出;const說明符;void類型\&2\&類和對象\&類的聲明和對象的定義;類的成員函數(shù);構造函數(shù)和析構函數(shù);動態(tài)存儲\&3\&友元、重載和引用\&友元;函數(shù)重載;運算符重載;引用\&4\&繼承與派生\&派生類的聲明、成員構成和訪問屬性;派生類的構造函數(shù)和析構函數(shù);虛基類\&5\&多態(tài)性與虛函數(shù)\&繼承呼喚多態(tài);虛函數(shù);純虛函數(shù)與抽象類;同名函數(shù)的重載、覆蓋和隱藏\&6\&模板\&函數(shù)模板;類模板\&]

選擇合適的示范程序不但可以鞏固已學知識,而且可以提升學生的課堂興趣。

4.3 滲透適量語言背后的實現(xiàn)原理

大多數(shù)程序設計課程注重的是語言的邏輯,學習語法規(guī)則,對其如何實現(xiàn)問題則完全避之。實踐表明,對語言背后的實現(xiàn)過程進行適當?shù)恼f明是有助于整體的教學效果的,其中,最典型的例子是“引用”。

引用從邏輯上理解是“別名”,使用引用就等于一個變量多了一個關聯(lián)的名字,修改引用值就是修改所引用的變量的值。在這個通常意義上的理解對于后續(xù)學習是有一定局限性的,例如當學習多態(tài)性之時,實現(xiàn)動態(tài)聯(lián)編兩大條件為虛函數(shù)的定義和使用基類指針或者引用調(diào)用虛函數(shù)。如何解釋“指針和引用能起到相同的作用”就成為難題了。因此,在引用的學習之初可以一方面說明它是“別名”,另一方面則從物理實現(xiàn)上進行理解,引用是個隱性的指針。以如下代碼為基礎配合圖2進行說明。

int someInt=19;

int * pInt=&someInt;

int & rInt=someInt;

(a) “別名”理解

(b) “指針”理解

圖2 有關“引用”的說明

從圖2(a)中可見,引用的別名理解是在某塊有名內(nèi)存之上又加了一個新名字而已,而從圖2(b)中則可以理解到引用的本質類似于一個常指針,永遠指向這塊有名內(nèi)存。詳細給出指針和引用的對比。

指針:

可先定義后賦值

可操作兩個實體:指針值、指向的值

訪問指向值需間接訪問,變量前加*

引用:

定義的同時完成賦值

只可操作一個實體:指向的值

訪問指向值無需間接訪問形式,變量前不加*(編譯完成幕后的轉換工作)

一旦有了這樣的知識準備,對于引用在函數(shù)通信中如何能夠有“形似值傳遞(引用傳遞在語法表達上類似于值傳遞)而神似地址傳遞(引用傳遞在功能上類似于地址傳遞)”的效果就非常容易理解,對于后續(xù)章節(jié)中的虛函數(shù)調(diào)用中指針和引用的平等地位則不言而喻。

4.4 解釋語言本身的內(nèi)在需求

程序設計語言的教學過程中大多時間是說明它有什么規(guī)則,并且向學生解釋為什么提供這項規(guī)則的說明,這種對語言本身需求的說明在課程全程中無處不在。例如:類將數(shù)據(jù)和動作捆綁在一起使得數(shù)據(jù)變成聰明的數(shù)據(jù),不同的對象各自悠閑地行動;友元是通往私有數(shù)據(jù)的后門,為密切相關者提供方便;引用是形神兼?zhèn)淅^而在函數(shù)通信中大顯身手;虛基類是解決多繼承引起的二義性問題等等。在此,強調(diào)一下往往被忽視的有關多態(tài)性的需求說明:繼承呼喚多態(tài)[4]。

虛函數(shù)的定義規(guī)則和調(diào)用要求都不難理解,難以理解的是為什么要做這件事。說明這個問題首先要從賦值兼容規(guī)則開始:派生類的對象可以賦值給基類對象;派生類對象的地址可以賦值給基類指針;派生類的對象可以初始化基類的引用。接下來進行同化效應的說明,即基類對象、指針和引用是可以接納派生類對象,然而賦值之后派生類的特征就完全消失了。以如下代碼及運行結果進行說明。

從中可見,gs雖然是GraduateStudent對象,但是托付給了Student之后,便一切都表現(xiàn)為Student。如果沒有新的機制,對類家族中的不同類對象需要提供不同的處理模塊,并且對于每個對象的到來都首先需要進行類型判斷。然而,我們是多么希望一個集合中允許有類家族中的不同類的對象能夠共存,對每個元素的操作具有分辨不同類對象的能力!于是,動態(tài)聯(lián)編使夢想成真。

解釋語言本身的內(nèi)在需求一方面有助于提高學習興趣,學生們不再有莫名其妙的困惑;另一方面,由于了解需求的同時也清楚了該語法規(guī)則的應用場合,有助于實際問題的解決。

5 考核方式

本門課程的成績評定重視學生的平時表現(xiàn),避免一張考卷定乾坤帶來的弊病??傇u成績=期末閉卷筆試(70%)+平時成績(30%),其中平時成績有三個方面,包括課堂提問、網(wǎng)絡教室作業(yè)和上機實驗報告。

5.1 課堂提問

本課程在每個章節(jié)之后都設計一個小的課堂練習環(huán)節(jié),該環(huán)節(jié)的基本作用是復習概念,特別是以判斷題的形式對于容易混淆和忽視的問題加以強調(diào),通過同學們回答問題的情況了解大家對基本知識的掌握程度,對課程進展的節(jié)奏適當調(diào)節(jié)。對回答問題中表現(xiàn)優(yōu)秀的學生給予平時成績的適當加權,激發(fā)學生的積極性。此外,在此環(huán)節(jié)還包括通過題目補充知識點,使得學生在提問的緊張中有放松的間歇,復習中也有新鮮感。

5.2 網(wǎng)絡教室作業(yè)

“北理在線”提供了網(wǎng)絡教學平臺,在該平臺上搭載有教師上課的同步課件、共享學習資源、師生互動板塊和在線測試。課程中的每個章節(jié)均設置一個測試單元,每個單元有選擇題形式的語法練習(題目的設置以全國計算機等級考試題目為參考),也有編程形式的操作練習。選擇題的答題有效期設置為當前周,次數(shù)限制為兩次,分數(shù)取平均分。編程練習的答題有效期設置為兩周,當前周為滿分周,次周為折扣周。設置目的是使同學們在回答問題過程中保持重視的態(tài)度,同時對錯誤和拖沓給予補救的機會。全部的作業(yè)單元成績累加,統(tǒng)一加權納入最后評定。

5.3 上機實驗報告

學生們在平時的編程練習中是單兵作戰(zhàn),并且以測試樣例為唯一的評價標準。在實驗課堂上,一方面給大家一個互相學習和交流的機會;另一方面程序、學生和老師三方同時面對面的交流,學生的困惑得以解決,老師對教學效果有了更加直觀的了解。此外,上機報告中能夠體現(xiàn)出一些在線作業(yè)中所未見的問題,實驗報告中表現(xiàn)優(yōu)秀的學生同樣給予平時成績的適當加權。

5.4 期末筆試

期末考試采用閉卷筆試,題型包括:選擇題、判斷題、填空題和綜合題,綜合題中包括讀程序查錯、讀程序寫出運行結果,以及程序填空。判斷題和填空題主要考核基本的概念知識;選擇題的比例較大,主要考核基本概念的理解和基本規(guī)則的運用,以程序代碼為主,以文字描述為輔;綜合題的題目通常是完整的程序,程序規(guī)模較大,知識點交叉性強。筆試題目總體的原則是知識點的全面,側重于對學生綜合能力的考核,其成績?yōu)樽罱K成績的主體。

6 結論

經(jīng)過不斷的思考,在整個教學過程中做了一系列有益的嘗試,實踐表明這些嘗試能夠提高學生學習C++面向對象程序設計的興趣和效果,課堂的氛圍更加活躍,師生的溝通更加流暢。從評教的結果上看,課程也是得到了越來越多學生的喜愛。

參考文獻:

[1] 高飛,聶青,李蕙芳,薛艷明.C++與數(shù)據(jù)結構[M],北京理工大學出版社,2006,

[2] Greg Perry..Visual C++自學21日通[M]. 張軍寶 譯. 學苑出版社,1994.

[3] Stanley B Lippma. C++ Primer中文版[M]. 李師賢 譯.人民郵電出版社,2006.

[4] 錢能.C++程序設計教程(第二版)[M]. 清華大學出版社,2005.

昌宁县| 贵定县| 西吉县| 凤翔县| 阳谷县| 东丰县| 临邑县| 古蔺县| 中阳县| 龙江县| 社旗县| 紫金县| 鹤庆县| 连云港市| 方城县| 西畴县| 天峨县| 文昌市| 阳信县| 德安县| 驻马店市| 淳安县| 余干县| 孟连| 曲松县| 古蔺县| 康平县| 阜康市| 荆门市| 尼勒克县| 儋州市| 河北区| 宿州市| 固原市| 长乐市| 鄂托克前旗| 梨树县| 南皮县| 邯郸县| 永胜县| 翁源县|