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

?

C++面向對象程序設計教學探討

2014-07-18 00:18:30熊啟軍寧彬屈俊峰曹文平
電腦知識與技術 2014年13期
關鍵詞:面向對象程序設計教學改革

熊啟軍 寧彬 屈俊峰 曹文平

C++面向對象程序設計教學探討

熊啟軍,寧彬,屈俊峰,曹文平

(湖北文理學院 數(shù)學與計算機科學學院 湖北 襄陽 441053)

摘要:《C++面向對象程序設計》課程承擔著培養(yǎng)程序設計能力和面向對象思維能力的作用,而C++語言自身的特點繁多,且通常是學生學習面向對象的第一門語言,使得教學存在很大困難。從課程內容的選擇和組織、教學方法、考核方式、學習方法等角度出發(fā)進行改革和研究,運用于實際教學之中具有顯著提高教學效果的作用。

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

中圖分類號:G642 文獻標識碼:A 文章編號:1009-3044(2014)13-3037-03

Discussion for C++ & Oriented Object Programming

XIONG Qi-jun, NING Bin, QU Jun-feng, CAO Wen-ping

(College of Mathematics & Computer Science HuBei University of Arts and Science, Xiangyang 441053, China)

Abstract: "C++ object-oriented programming" course undertakes training in programming and object-oriented thinking, and many features of the C++ language, and it is often the first course to learn object-oriented languages, so that teaching is very difficult. Reform and research from the selection and organization of course content, teaching methods, exam methods, learning methods, these can improve teaching effectiveness.

Key words: C++ language; Oriented Object; Programming; Teaching Method; Teaching Reform

隨著計算機編程語言的蓬勃產生和發(fā)展、編程語言適用的領域、應用型軟件的巨大需求,程序員必須掌握C++的時代已經(jīng)過去。但是,在學校里,C++仍是計算機及相關專業(yè)的必修課?!禖++面向對象程序設計》既要講述語言本身,又要講述面向對象的知識,還要通過C++來實現(xiàn)面向對象的特征,因而存在內容多、難度大、程序冗長、調試困難等問題,進而教學越來越困難、教學效果越來越差。因此,針對該課程的教學改革勢在必行。

1 課程內容

1.1計算機語言間的關系

在地方院校的計算機類專業(yè)的教學計劃中,一般是先講授過程化的C語言,主要包括基本的語法規(guī)則、算法和程序調試技巧;再講述面向對象的C++語言;最后講述高度集成和封裝的C#或Java語言。顯然,C++語言在其中承擔了承上啟下的角色,承擔了鞏固基礎、培養(yǎng)計算思維、熟練調試技能的角色,承擔了由過程化的程序設計思想向面向對象程序設計思想轉換的角色。每個角色的主要作用雖不相同,但都是主角,都是不可缺少的。

圖1 語言間關系

1.2教學內容間的關系

《C++面向對象程序設計》課程在教學中不僅地位和作用重要,而且其涉及的教學內容廣泛。其教學內容概括起來包括三個部分:一是C++語言的基本語法,二是面向對象的四大特征及基本理論,三是使用C++語言來實現(xiàn)面向對象的特征[1]。對于學習過C語言的來說,第一部分內容只需關注與C語言不同的地方,第二部分是“死板”的理論知識,第三部分既是重點也是難點,也是當前教學改革、研究的重點。

圖2 是《C++面向對象程序設計》中第三部分的主要教學內容及相互關系。

2 教學改革

2.1改革教學內容

由于大學教育的大眾化,對該課程的教學目標、教學內容當然應該“因校而異”。

1)教學目標存在差異

我校對該課程的主要教學目標是以C++語言為工具載體,向同學們講述面向對象的特性及其實現(xiàn),為后續(xù)的面向對象的程序設計語言、對象的分析、面向對象的設計、測試等學習做必要的理論鋪墊。

2) C++語言的特異性

由于C++是一種誕生較早的語言,是一種半面向對象的語言[2],因而存在一些“人為的缺陷”。

個人認為“為了達到使用某種功能的目的,創(chuàng)造了一些關鍵詞、概念、表示方法、理論等”,這種特異性使得學習、使用C++變得困難、容易產生混淆。

譬如:Const修飾一個常指針,使用1個或2個Const的差別(Const的位置不同);使用構造函數(shù)來定義對象,在定義對象的格式上存在巨大差異(使用默認構造函數(shù)定義對象不能帶括號,使用全是缺省值的構造函數(shù)定義對象不能帶括號,使用其它構造函數(shù)定義對象必須帶括號);靜態(tài)數(shù)據(jù)成員必須在類外初始化;常數(shù)據(jù)成員只能通過構造函數(shù)的初始化列表進行初始化;常對象和常函數(shù)的訪問限制;拷貝構造函數(shù)的功能、調用時機及缺陷性(含有指針型的成員變量時);在多重繼承時,為了保留祖先特征的一個副本,避免二義性,提出了虛基類的概念;虛函數(shù)與純虛函數(shù)在函數(shù)首部上的細小差別;運算符重載;友元等。這些死板的規(guī)則大大增加了學習的難度,并且離開了C++,不能照搬到其他語言之上。

面向對象的主要特征包括抽象、封裝、繼承、多態(tài)。雖然不同的面向對象語言在這幾個特征上理論是相同的,但是在實現(xiàn)上存在差異。

譬如:C++是一種半面向對象的程序設計語言,但Java是一種完全面向對象的語言;C++中有friend關鍵詞,標示了友元函數(shù)或友元類,Java中沒有這個關鍵詞,也不會允許外部的函數(shù)訪問另一個類的私有成員;C++中存在命名空間的概念、Java中存在包的概念,二者之間具有一定的相似性,但在實現(xiàn)繼承時,繼承的權限上有很大的不同;C++允許類的多繼承,Java不存在類的多繼承;都具有多態(tài)性,但在多態(tài)性的體現(xiàn)上存在著差距;內存管理上存在差異……。

正因為不同的程序設計語言存在差異,我們在教學時,求同存異,著重抓住共性,堅持“理論夠用,重在實踐”的原則,對于C++的特異性不渲染,不深究。

3) 編程風格存在差別

教師在編寫函數(shù)時,各自的風格不同。譬如:在定義成員函數(shù)的首部時,函數(shù)的參數(shù)可以是普通的值類型、可以是指針類型、可以是引用型、可以是const型,不同的教師或者著書者可能鐘情于某種表達方式、或者這幾種方式的結合體。定義方式不同導致功能不同,而學生不能立即領會其中的差異,給學習、理解增加了難度。因此,在組織教學時,盡可能使用相對固定的、簡潔的參數(shù)形式。

4)教學內容的取舍

各校的層次不同、選用的教材不同、教學目標不同、教學內容當然可以不同。

根據(jù)我校實際,對“C++實現(xiàn)面向對象特征”這部分的教學內容進行了取舍,其中,粗體部分的知識點為重點內容,斜體部分為略講內容。如圖2所示。

對該課程的教學內容進行適當?shù)娜∩幔瑢χR點的講授注意與其它語言的異同性,緊緊把握“重在共性、去粗取精”的原則。

2.2重視算法

絕大多數(shù)程序設計語言,在語法上大同小異,在算法上總是高度一致的。

雖然C++語言在類的抽象、封裝上是面向對象的,但是在成員函數(shù)的實現(xiàn)上仍然是面向過程的。因此,可以將數(shù)據(jù)結構中的部分算法搬到C++來實現(xiàn)、練習,特別是線性結構的知識。譬如:集合的并交差運算、多項式的表示、2個多項式相加等。既用C語言實現(xiàn),又用C++來實現(xiàn),這樣做,既讓學生感受到了面向過程與面向對象的差別,也讓學生領會到了算法的一致性。領悟到語言只是工具,算法才是靈魂。

2.3 教學方法

任何一種教學方法都不是孤立的,總是與其他教學方法配合使用、取長補短,力求發(fā)揮最大的效力、達到最好的教學效果[3]。

1)案例式教學

正由于C++所特有的性質和使用限制,教學中單純的理論說教只能是讓學生枯燥乏味、昏昏入睡,只有通過活生生的實例才能引人入勝,寓教于樂、“寓理于例”之中,因為它既有強烈的示范作用也給了學生思考的空間和時間[4]。通過“理論——案例——演示——總結”的方式來組織教學,起到“照葫蘆畫瓢、照貓畫虎”的效果,真正做到了有理、有例、有結,也符合知識的“記憶、模仿、應用”的認知規(guī)律。

2) 框架式教學

類的定義具有相對固定的框架,體現(xiàn)在兩個方面:

一是成員變量的聲明在前、且是私有的,成員函數(shù)的聲明在后、且是公共的;

二是成員函數(shù)的種類和格式是固定的。成員函數(shù)包括構造函數(shù)、拷貝構造函數(shù)、析構函數(shù)、輸出函數(shù)、其它處理函數(shù)。在定義這些函數(shù)時,遵循一定的次序和原則,譬如:所有的類都必須顯式地擁有缺省參數(shù)的構造函數(shù)、拷貝構造函數(shù)、數(shù)據(jù)成員的get、set函數(shù)、輸出數(shù)據(jù)成員值的函數(shù)等。一個類遵循這樣的框架來組織和定義,在創(chuàng)建對象、使用成員時可以避免一些錯誤,而且是一種良好的編程習慣。

3) 漸進式教學

知識點之間是相互聯(lián)系的,講授時遵循由易到難的次序講授。如講述構造函數(shù)時,從系統(tǒng)提供的默認構造函數(shù)到自定義默認構造函數(shù),到帶參數(shù)的構造函數(shù),到帶默認值的構造函數(shù),到構造函數(shù)的重載、歧義,到帶子對象的構造函數(shù);從函數(shù)模板到類模板;從單繼承到多繼承,從多繼承到虛基類的引出等,存在明顯的漸進關系。

以虛基類的引出為例。在三層結構的繼承中,存在多重繼承,(圖3重復繼承)出現(xiàn)了孫類中存在祖先的2個副本,如何訪問呢?只能通過作用域來區(qū)分(對象名.類名::成員名),但這種訪問格式上總顯得特別別扭、不倫不類,怎么實現(xiàn)只保留一份副本呢?因此,引入了虛基類的概念。這種“提出問題、解決問題”的方式也是一種漸進的思想。

圖3 重復繼承

2.4考核方式

改變單一的考核方式為多樣的考核方式[5][6]。譬如:取消統(tǒng)一的卷面考試,取而代之的是課程設計,按照軟件工程的流程完成一個小型項目,且以答辯驗收的方式來評價學習效果,考核學生的綜合應用能力;取消集中統(tǒng)一的考核,取而代之的是以題庫為基礎的機考,隨到隨考,直到通過為止。

3 學習方法

對于程序設計語言的學習,始終把握“三動”的方法,即動眼、動腦、動手(閱讀、思考、上機實踐)。

C++程序的代碼一般都較長,閱讀時先從主函數(shù)開始,看看定義了哪些對象,使用了哪些函數(shù),再有目的地去閱讀相應的函數(shù)代碼。這樣才能目標明確、抓住重點、理清思路、理解題意。

在課外,看著教材的目錄,回憶課堂上講述的知識點、例子,是否能清晰的再現(xiàn)。否則,趕緊翻開書閱讀、理解、思考。

“三動”學習法中最重要的就是“動手”。上機實踐是檢驗學習效果最準確的方式。這一點是不言而喻的。

4 結束語

總的來說,《C++面向對象程序設計》課程的教學應該首先培養(yǎng)學習興趣、調動學習的主動性;其次是培養(yǎng)計算思維的思想,增強學生的動手能力;最后是教學內容、教學方法和手段的改革。這些教學改革措施是筆者經(jīng)過反復的實踐教學總結得出的,并已經(jīng)在程序設計類課程教學中運用,取得了良好的教學效果。同時,教學改革和研究必須與時俱進,需要廣大師生不斷探索、豐富和實踐。 參考文獻:

[1] 游洪躍.C++面向對象程序設計教程[M].北京:清華大學出版社,2012.

[2] 黃平牧,肖波.面向對象方法和C++程序設計[M].北京:北京郵電大學出版社,2010.

[3] 郭艷燕,任滿杰,賀利堅,張樹粹.C++程序設計課程中多種教學方法的配合使用[J].計算機教育,2012(8):78-80.

[4] 胡楓.《C語言程序設計》的案例式教學的設計[J].青海師范大學學報(自然科學版),2010(4):49-50.

[5] 季耀君.面向對象程序設計與C++教學對策研究[J].西南農業(yè)大學學報(社會科學版),2013(8):168-169.

[6] 孫庚.項目教學法在“C++程序設計”課程教學中的實踐[J].計算機教育,2008(2):52-53.

面向對象的主要特征包括抽象、封裝、繼承、多態(tài)。雖然不同的面向對象語言在這幾個特征上理論是相同的,但是在實現(xiàn)上存在差異。

譬如:C++是一種半面向對象的程序設計語言,但Java是一種完全面向對象的語言;C++中有friend關鍵詞,標示了友元函數(shù)或友元類,Java中沒有這個關鍵詞,也不會允許外部的函數(shù)訪問另一個類的私有成員;C++中存在命名空間的概念、Java中存在包的概念,二者之間具有一定的相似性,但在實現(xiàn)繼承時,繼承的權限上有很大的不同;C++允許類的多繼承,Java不存在類的多繼承;都具有多態(tài)性,但在多態(tài)性的體現(xiàn)上存在著差距;內存管理上存在差異……。

正因為不同的程序設計語言存在差異,我們在教學時,求同存異,著重抓住共性,堅持“理論夠用,重在實踐”的原則,對于C++的特異性不渲染,不深究。

3) 編程風格存在差別

教師在編寫函數(shù)時,各自的風格不同。譬如:在定義成員函數(shù)的首部時,函數(shù)的參數(shù)可以是普通的值類型、可以是指針類型、可以是引用型、可以是const型,不同的教師或者著書者可能鐘情于某種表達方式、或者這幾種方式的結合體。定義方式不同導致功能不同,而學生不能立即領會其中的差異,給學習、理解增加了難度。因此,在組織教學時,盡可能使用相對固定的、簡潔的參數(shù)形式。

4)教學內容的取舍

各校的層次不同、選用的教材不同、教學目標不同、教學內容當然可以不同。

根據(jù)我校實際,對“C++實現(xiàn)面向對象特征”這部分的教學內容進行了取舍,其中,粗體部分的知識點為重點內容,斜體部分為略講內容。如圖2所示。

對該課程的教學內容進行適當?shù)娜∩?,對知識點的講授注意與其它語言的異同性,緊緊把握“重在共性、去粗取精”的原則。

2.2重視算法

絕大多數(shù)程序設計語言,在語法上大同小異,在算法上總是高度一致的。

雖然C++語言在類的抽象、封裝上是面向對象的,但是在成員函數(shù)的實現(xiàn)上仍然是面向過程的。因此,可以將數(shù)據(jù)結構中的部分算法搬到C++來實現(xiàn)、練習,特別是線性結構的知識。譬如:集合的并交差運算、多項式的表示、2個多項式相加等。既用C語言實現(xiàn),又用C++來實現(xiàn),這樣做,既讓學生感受到了面向過程與面向對象的差別,也讓學生領會到了算法的一致性。領悟到語言只是工具,算法才是靈魂。

2.3 教學方法

任何一種教學方法都不是孤立的,總是與其他教學方法配合使用、取長補短,力求發(fā)揮最大的效力、達到最好的教學效果[3]。

1)案例式教學

正由于C++所特有的性質和使用限制,教學中單純的理論說教只能是讓學生枯燥乏味、昏昏入睡,只有通過活生生的實例才能引人入勝,寓教于樂、“寓理于例”之中,因為它既有強烈的示范作用也給了學生思考的空間和時間[4]。通過“理論——案例——演示——總結”的方式來組織教學,起到“照葫蘆畫瓢、照貓畫虎”的效果,真正做到了有理、有例、有結,也符合知識的“記憶、模仿、應用”的認知規(guī)律。

2) 框架式教學

類的定義具有相對固定的框架,體現(xiàn)在兩個方面:

一是成員變量的聲明在前、且是私有的,成員函數(shù)的聲明在后、且是公共的;

二是成員函數(shù)的種類和格式是固定的。成員函數(shù)包括構造函數(shù)、拷貝構造函數(shù)、析構函數(shù)、輸出函數(shù)、其它處理函數(shù)。在定義這些函數(shù)時,遵循一定的次序和原則,譬如:所有的類都必須顯式地擁有缺省參數(shù)的構造函數(shù)、拷貝構造函數(shù)、數(shù)據(jù)成員的get、set函數(shù)、輸出數(shù)據(jù)成員值的函數(shù)等。一個類遵循這樣的框架來組織和定義,在創(chuàng)建對象、使用成員時可以避免一些錯誤,而且是一種良好的編程習慣。

3) 漸進式教學

知識點之間是相互聯(lián)系的,講授時遵循由易到難的次序講授。如講述構造函數(shù)時,從系統(tǒng)提供的默認構造函數(shù)到自定義默認構造函數(shù),到帶參數(shù)的構造函數(shù),到帶默認值的構造函數(shù),到構造函數(shù)的重載、歧義,到帶子對象的構造函數(shù);從函數(shù)模板到類模板;從單繼承到多繼承,從多繼承到虛基類的引出等,存在明顯的漸進關系。

以虛基類的引出為例。在三層結構的繼承中,存在多重繼承,(圖3重復繼承)出現(xiàn)了孫類中存在祖先的2個副本,如何訪問呢?只能通過作用域來區(qū)分(對象名.類名::成員名),但這種訪問格式上總顯得特別別扭、不倫不類,怎么實現(xiàn)只保留一份副本呢?因此,引入了虛基類的概念。這種“提出問題、解決問題”的方式也是一種漸進的思想。

圖3 重復繼承

2.4考核方式

改變單一的考核方式為多樣的考核方式[5][6]。譬如:取消統(tǒng)一的卷面考試,取而代之的是課程設計,按照軟件工程的流程完成一個小型項目,且以答辯驗收的方式來評價學習效果,考核學生的綜合應用能力;取消集中統(tǒng)一的考核,取而代之的是以題庫為基礎的機考,隨到隨考,直到通過為止。

3 學習方法

對于程序設計語言的學習,始終把握“三動”的方法,即動眼、動腦、動手(閱讀、思考、上機實踐)。

C++程序的代碼一般都較長,閱讀時先從主函數(shù)開始,看看定義了哪些對象,使用了哪些函數(shù),再有目的地去閱讀相應的函數(shù)代碼。這樣才能目標明確、抓住重點、理清思路、理解題意。

在課外,看著教材的目錄,回憶課堂上講述的知識點、例子,是否能清晰的再現(xiàn)。否則,趕緊翻開書閱讀、理解、思考。

“三動”學習法中最重要的就是“動手”。上機實踐是檢驗學習效果最準確的方式。這一點是不言而喻的。

4 結束語

總的來說,《C++面向對象程序設計》課程的教學應該首先培養(yǎng)學習興趣、調動學習的主動性;其次是培養(yǎng)計算思維的思想,增強學生的動手能力;最后是教學內容、教學方法和手段的改革。這些教學改革措施是筆者經(jīng)過反復的實踐教學總結得出的,并已經(jīng)在程序設計類課程教學中運用,取得了良好的教學效果。同時,教學改革和研究必須與時俱進,需要廣大師生不斷探索、豐富和實踐。 參考文獻:

[1] 游洪躍.C++面向對象程序設計教程[M].北京:清華大學出版社,2012.

[2] 黃平牧,肖波.面向對象方法和C++程序設計[M].北京:北京郵電大學出版社,2010.

[3] 郭艷燕,任滿杰,賀利堅,張樹粹.C++程序設計課程中多種教學方法的配合使用[J].計算機教育,2012(8):78-80.

[4] 胡楓.《C語言程序設計》的案例式教學的設計[J].青海師范大學學報(自然科學版),2010(4):49-50.

[5] 季耀君.面向對象程序設計與C++教學對策研究[J].西南農業(yè)大學學報(社會科學版),2013(8):168-169.

[6] 孫庚.項目教學法在“C++程序設計”課程教學中的實踐[J].計算機教育,2008(2):52-53.

面向對象的主要特征包括抽象、封裝、繼承、多態(tài)。雖然不同的面向對象語言在這幾個特征上理論是相同的,但是在實現(xiàn)上存在差異。

譬如:C++是一種半面向對象的程序設計語言,但Java是一種完全面向對象的語言;C++中有friend關鍵詞,標示了友元函數(shù)或友元類,Java中沒有這個關鍵詞,也不會允許外部的函數(shù)訪問另一個類的私有成員;C++中存在命名空間的概念、Java中存在包的概念,二者之間具有一定的相似性,但在實現(xiàn)繼承時,繼承的權限上有很大的不同;C++允許類的多繼承,Java不存在類的多繼承;都具有多態(tài)性,但在多態(tài)性的體現(xiàn)上存在著差距;內存管理上存在差異……。

正因為不同的程序設計語言存在差異,我們在教學時,求同存異,著重抓住共性,堅持“理論夠用,重在實踐”的原則,對于C++的特異性不渲染,不深究。

3) 編程風格存在差別

教師在編寫函數(shù)時,各自的風格不同。譬如:在定義成員函數(shù)的首部時,函數(shù)的參數(shù)可以是普通的值類型、可以是指針類型、可以是引用型、可以是const型,不同的教師或者著書者可能鐘情于某種表達方式、或者這幾種方式的結合體。定義方式不同導致功能不同,而學生不能立即領會其中的差異,給學習、理解增加了難度。因此,在組織教學時,盡可能使用相對固定的、簡潔的參數(shù)形式。

4)教學內容的取舍

各校的層次不同、選用的教材不同、教學目標不同、教學內容當然可以不同。

根據(jù)我校實際,對“C++實現(xiàn)面向對象特征”這部分的教學內容進行了取舍,其中,粗體部分的知識點為重點內容,斜體部分為略講內容。如圖2所示。

對該課程的教學內容進行適當?shù)娜∩?,對知識點的講授注意與其它語言的異同性,緊緊把握“重在共性、去粗取精”的原則。

2.2重視算法

絕大多數(shù)程序設計語言,在語法上大同小異,在算法上總是高度一致的。

雖然C++語言在類的抽象、封裝上是面向對象的,但是在成員函數(shù)的實現(xiàn)上仍然是面向過程的。因此,可以將數(shù)據(jù)結構中的部分算法搬到C++來實現(xiàn)、練習,特別是線性結構的知識。譬如:集合的并交差運算、多項式的表示、2個多項式相加等。既用C語言實現(xiàn),又用C++來實現(xiàn),這樣做,既讓學生感受到了面向過程與面向對象的差別,也讓學生領會到了算法的一致性。領悟到語言只是工具,算法才是靈魂。

2.3 教學方法

任何一種教學方法都不是孤立的,總是與其他教學方法配合使用、取長補短,力求發(fā)揮最大的效力、達到最好的教學效果[3]。

1)案例式教學

正由于C++所特有的性質和使用限制,教學中單純的理論說教只能是讓學生枯燥乏味、昏昏入睡,只有通過活生生的實例才能引人入勝,寓教于樂、“寓理于例”之中,因為它既有強烈的示范作用也給了學生思考的空間和時間[4]。通過“理論——案例——演示——總結”的方式來組織教學,起到“照葫蘆畫瓢、照貓畫虎”的效果,真正做到了有理、有例、有結,也符合知識的“記憶、模仿、應用”的認知規(guī)律。

2) 框架式教學

類的定義具有相對固定的框架,體現(xiàn)在兩個方面:

一是成員變量的聲明在前、且是私有的,成員函數(shù)的聲明在后、且是公共的;

二是成員函數(shù)的種類和格式是固定的。成員函數(shù)包括構造函數(shù)、拷貝構造函數(shù)、析構函數(shù)、輸出函數(shù)、其它處理函數(shù)。在定義這些函數(shù)時,遵循一定的次序和原則,譬如:所有的類都必須顯式地擁有缺省參數(shù)的構造函數(shù)、拷貝構造函數(shù)、數(shù)據(jù)成員的get、set函數(shù)、輸出數(shù)據(jù)成員值的函數(shù)等。一個類遵循這樣的框架來組織和定義,在創(chuàng)建對象、使用成員時可以避免一些錯誤,而且是一種良好的編程習慣。

3) 漸進式教學

知識點之間是相互聯(lián)系的,講授時遵循由易到難的次序講授。如講述構造函數(shù)時,從系統(tǒng)提供的默認構造函數(shù)到自定義默認構造函數(shù),到帶參數(shù)的構造函數(shù),到帶默認值的構造函數(shù),到構造函數(shù)的重載、歧義,到帶子對象的構造函數(shù);從函數(shù)模板到類模板;從單繼承到多繼承,從多繼承到虛基類的引出等,存在明顯的漸進關系。

以虛基類的引出為例。在三層結構的繼承中,存在多重繼承,(圖3重復繼承)出現(xiàn)了孫類中存在祖先的2個副本,如何訪問呢?只能通過作用域來區(qū)分(對象名.類名::成員名),但這種訪問格式上總顯得特別別扭、不倫不類,怎么實現(xiàn)只保留一份副本呢?因此,引入了虛基類的概念。這種“提出問題、解決問題”的方式也是一種漸進的思想。

圖3 重復繼承

2.4考核方式

改變單一的考核方式為多樣的考核方式[5][6]。譬如:取消統(tǒng)一的卷面考試,取而代之的是課程設計,按照軟件工程的流程完成一個小型項目,且以答辯驗收的方式來評價學習效果,考核學生的綜合應用能力;取消集中統(tǒng)一的考核,取而代之的是以題庫為基礎的機考,隨到隨考,直到通過為止。

3 學習方法

對于程序設計語言的學習,始終把握“三動”的方法,即動眼、動腦、動手(閱讀、思考、上機實踐)。

C++程序的代碼一般都較長,閱讀時先從主函數(shù)開始,看看定義了哪些對象,使用了哪些函數(shù),再有目的地去閱讀相應的函數(shù)代碼。這樣才能目標明確、抓住重點、理清思路、理解題意。

在課外,看著教材的目錄,回憶課堂上講述的知識點、例子,是否能清晰的再現(xiàn)。否則,趕緊翻開書閱讀、理解、思考。

“三動”學習法中最重要的就是“動手”。上機實踐是檢驗學習效果最準確的方式。這一點是不言而喻的。

4 結束語

總的來說,《C++面向對象程序設計》課程的教學應該首先培養(yǎng)學習興趣、調動學習的主動性;其次是培養(yǎng)計算思維的思想,增強學生的動手能力;最后是教學內容、教學方法和手段的改革。這些教學改革措施是筆者經(jīng)過反復的實踐教學總結得出的,并已經(jīng)在程序設計類課程教學中運用,取得了良好的教學效果。同時,教學改革和研究必須與時俱進,需要廣大師生不斷探索、豐富和實踐。 參考文獻:

[1] 游洪躍.C++面向對象程序設計教程[M].北京:清華大學出版社,2012.

[2] 黃平牧,肖波.面向對象方法和C++程序設計[M].北京:北京郵電大學出版社,2010.

[3] 郭艷燕,任滿杰,賀利堅,張樹粹.C++程序設計課程中多種教學方法的配合使用[J].計算機教育,2012(8):78-80.

[4] 胡楓.《C語言程序設計》的案例式教學的設計[J].青海師范大學學報(自然科學版),2010(4):49-50.

[5] 季耀君.面向對象程序設計與C++教學對策研究[J].西南農業(yè)大學學報(社會科學版),2013(8):168-169.

[6] 孫庚.項目教學法在“C++程序設計”課程教學中的實踐[J].計算機教育,2008(2):52-53.

猜你喜歡
面向對象程序設計教學改革
基于Visual Studio Code的C語言程序設計實踐教學探索
計算機教育(2020年5期)2020-07-24 08:52:56
從細節(jié)入手,談PLC程序設計技巧
電子制作(2019年9期)2019-05-30 09:42:04
面向對象的計算機網(wǎng)絡設計軟件系統(tǒng)的開發(fā)
電子測試(2018年15期)2018-09-26 06:01:34
面向對象的數(shù)據(jù)交換協(xié)議研究與應用
高職高專院校C語言程序設計教學改革探索
基于人才培養(yǎng)的技工學校德育實效性研究
成才之路(2016年25期)2016-10-08 09:51:08
現(xiàn)代信息技術在高職數(shù)學教學改革中的應用研究
科技視界(2016年20期)2016-09-29 12:59:03
以職業(yè)技能競賽為導向的高職單片機實踐教學改革研究
科技視界(2016年20期)2016-09-29 11:20:38
微課時代高等數(shù)學教學改革的實踐與探索
科技視界(2016年20期)2016-09-29 11:16:19
面向對象Web開發(fā)編程語言的的評估方法
吴旗县| 诏安县| 平和县| 利辛县| 萍乡市| 孟州市| 西丰县| 新昌县| 时尚| 云龙县| 崇仁县| 耿马| 安平县| 五常市| 龙海市| 衡阳县| 辉县市| 蒙山县| 石渠县| 东至县| 河北省| 滦南县| 六枝特区| 巴里| 萨嘎县| 商洛市| 谷城县| 景谷| 利津县| 平乡县| 阳朔县| 卢龙县| 廉江市| 页游| 枞阳县| 惠州市| 新巴尔虎左旗| 息烽县| 故城县| 交城县| 桦川县|