《多態性教學設計》

《多態性教學設計》

多態性是指同一操作作用於不同的類的實例、不同的類將進行不同的解釋、最後產生不同的執行結果。C支持兩種類型的多態性:編譯時的多態性(靜態聯編),運行時的多態性(動態聯編)。

【說明】:此教學設計任務由南京曉莊學院的現代教育技術課程老師yqiong參與教師-維基星光計畫進行wiki教學而發布。此詞條為範例詞條,由周濤選定主題並負責、參與現代教育技術課程的所有同學協作共同完成!

基本信息:

科目:計算機科學與技術教學對象:大學一年級(計算機系)
課時:2教學環境:計算機網路教室

學習者特徵分析:

程式設計教程——用C++語言編程(必修)課程面對的是大一年級的學生,學生整體思維敏捷活躍,肯動腦筋,能積極參與討論、發表自己的觀點,動手能力強,有獨立的思維能力,接授知識能力較強,具有一定的自學能力。在課堂教學中需引導學生自主探究性的學習,讓他們在課堂上能夠善於發現問題,分析問題,解決問題,從而提高學生的信息能力。通過前面幾節的學習,學生對於虛函式的套用有了一定的了解,這給多態性的學習奠定了一定基礎.
《多態性》-學習內容分析:
本節課的教學內容是高等教育出版社,普通高等教育“十一五”國家級規劃教材必修模組——《C語言程式設計教程》中的第8章8.3.1多態性。包括對象類型的多態性、訊息的多態和對象標識的多態。多態性具體體現在運行和編譯兩個方面,在程式運行時的多態性通過繼承和虛函式來體現,而在程式編譯時多態性體現在函式和運算符的重載上。

教學目標分析:

1.知識與技能:
學會使用虛函式編寫程式,體會多態性的作用。
利用上機實踐提高學生的程式編寫能力。
2.過程與方法:
通過任務引導學生經歷分析問題、設計算法、編寫程式、調試程式等用計算機解決問題的過程,讓學生初步學會使用多態性來解決軟體復用問題。
進一步掌握程式調試運行的方法。認識虛函式的便利性,注重編寫的程式的效率。
3.情感態度與價值觀:
程式設計選取的題目都是生活中遇到的例子,加強學生利用本學科解決日常生活中的問題的意識。
通過解決生活中的實際問題,體驗成功的快樂。

教學重點與難點:

1. 重點:

(1)在類體系中訪問一個虛函式時,應使用指向基類類型的指針或對基類類型的引用,以滿足運行時多態性的要求。當然也可以像調用普通成員函式那樣利用對象名來調用一個函式。
(2)在派生類中重新定義虛函式時,必須保證該函式的值和參數與基類中的說明完全一致,否則就屬於重載(參數不同)或是一個錯誤(返回值不同)。
(3)若在派生類中沒有重新定義虛函式,則該類的對象將使用其基類中的虛函式代碼。
(4)虛函式必須是類的一個成員函式,不能是友元,但它可以是另一個類的友元。另外,虛函式不得是一個靜態成員。

2. 難點:

(1)析構函式可以是virtual的虛函式,但構造函式則不得是虛函式。一般地講,若某類中定義有虛函式,則其析構函式也應當說明為虛函式。特別是在析構函式需要完成一些有意義的操作——比如釋放記憶體時,尤其應當如此。
(2)一個類的虛函式僅對派生類中重定義的函式起作用,對其他函式沒有影響。在基類中使用虛函式保證了通過指向基類對象的指針調用基類的一個虛函式時,C++系統對該調用進行動態綁定,而使用普通函式則是靜態綁定

教學策略的選擇與設計:

本節課主要採用了講授法,討論法,練習法,實習作業法,小組相互作用法等。
講授新課內容,以醒目的方式將多態性的使用方法教給學生;讓學生組成小組,以小組的形式探討問題,在探討中發現並解決問題;組織同學去網路教室,利用資源,編寫程式,讓同學們在實踐中隊遇到的問題進行討論,並加以解決;從學生遇到的問題著手,引導學生自己去思考,並且對不懂的地方指出來,加深對該知識點的印象;展示評價環節,讓同學們學習好的程式,補充自己的不足。

教學過程與媒體資源:

創設問題情境,激發學生學習興趣
教師活動:教師提出一個如何利用虛函式解決編程的問題,引發學生思考。
學生活動:學生通過思考想辦法利用已學過的知識來尋找解決該問題的方法。
設計意圖:用貼切學生的實例吸引學生注意力,讓學生想辦法解決,能引起學生學習興趣。
媒體資源:幻燈片。

新課探究—函式重載的注意事項

教師活動:(1)舉例說明編譯程式選擇相應的重載函式版本時函式返回值類型是不起作用的。不能僅靠函式的返回值來區別重載函式,必須從形式參數上區別開來。
例:voidprint(inta);
voidprint(inta,intb);
intprint(floata[]);
這三個函式是重載函式,因為C++編譯程式可以從形式參數上將它們區別開來。
(2)要求學生自己再舉一個例子,誘發學生的思考
學生活動:對老師給出的題目要認真思考,利用所學知識,舉一反三,並且上機實現自己的代碼。
設計意圖:觀察的學習思維,看他們能否利用已有的知識解決還未學過的問題,也能看出他們是否真正掌握了所學的內容。
媒體資源:(1)多媒體教室;(2)教材;(3)電腦。

拓展學習:

教師活動:

(1)舉例說明函式重載的二義性
例:例如:intfunc(doubled);

count<<func(‘A’);

雖未聲明函式原型intfunc(char),但函式調用func(‘A’)並不會產生任何問題,因為編譯程式自動將字元‘A’轉換為double類型,調用函式intfunc(double)。
隱式類型轉換是由C++編譯程式自動完成的,這種類型轉換是引起函式重載二義性的主要原因。在重載函式中使用默認參數也可能造成二義性。
(2)要求學生思考該性質的套用,並上機實踐。
學生活動:認真思考老師的問題,努力解決,進行上機實踐,解決老師布置的任務並且要將每個知識點熟悉的掌握。
設計意圖:讓同學們課後自己查看資料,多了解關於數組方面的知識,深化學習。

教學流程圖:

流程圖1
11

流程圖2
22

教學評價:

1、學生自評表:
知識評價:
(1):我非常熟練的掌握了對數組初始化的方法;
(2):我較好的掌握了對數組的初始化,有的地方還是比較模糊;
(3):我沒有掌握對數組的初始化。
能力評價:
根據自己的感覺,我覺得我可以拿:(“A”,“B”,“C",”D")。
教師評價:
課堂表現評價:
33

備註與反思:

本課時採用集體授課,實習法,小組相互作用法等,讓學生對多態性的套用有一定的了解,並且能利用所學知識去解決課後習題,在編寫——編譯——執行的過程中發現問題,並幫助他們解決,讓他們對學習C語言有濃厚的興趣。
當然,由於各種原因,不可能所有同學都能夠同時理解,對那些不能及時理解的同學,我們必須保持足夠的耐心,幫助他們弄懂,也讓他們覺得C語言並不是那么難理解。

相關詞條

相關搜尋

熱門詞條

聯絡我們