公務(wù)員期刊網(wǎng) 論文中心 正文

遞進(jìn)案例在面向?qū)ο蟪绦蛟O(shè)計教學(xué)應(yīng)用

前言:想要寫出一篇引人入勝的文章?我們特意為您整理了遞進(jìn)案例在面向?qū)ο蟪绦蛟O(shè)計教學(xué)應(yīng)用范文,希望能給你帶來靈感和參考,敬請閱讀。

遞進(jìn)案例在面向?qū)ο蟪绦蛟O(shè)計教學(xué)應(yīng)用

摘要:《面向?qū)ο蟪绦蛟O(shè)計》是計算機(jī)專業(yè)的一門重要的基礎(chǔ)課程,較強(qiáng)的理論性與語法的復(fù)雜性給學(xué)生的學(xué)習(xí)帶來困難。分析以往教學(xué)過程中存在的問題及原因,淺談如何設(shè)計、運用遞進(jìn)案例,使得學(xué)生從以教材語法為中心的學(xué)習(xí)重心轉(zhuǎn)移到案例的分析和領(lǐng)會上,到達(dá)學(xué)生主動學(xué)習(xí)、對知識點融會貫通的目的。

關(guān)鍵詞:面向?qū)ο蟪绦蛟O(shè)計;遞進(jìn)案例

0引言

《面向?qū)ο蟪绦蛟O(shè)計》是計算機(jī)專業(yè)的一門重要的基礎(chǔ)課程,是編程語言教學(xué)中的重點也是難點。該課程要求學(xué)生了解面向?qū)ο蟪绦蛟O(shè)計的基本思想、掌握面向?qū)ο缶幊痰募夹g(shù),為大型應(yīng)用軟件設(shè)計與開發(fā)打下良好的理論和實踐基礎(chǔ)。在教學(xué)實踐中,有學(xué)生反映課程很難學(xué),甚至有個別學(xué)生對編程產(chǎn)生畏懼的情緒。筆者結(jié)合實際的教學(xué)工作,分析課程教學(xué)過程中碰到的主要問題和成因,淺談如何引入遞進(jìn)案例方法提高教學(xué)質(zhì)量。

1教學(xué)過程中存在的問題及原因

以往在教學(xué)過程中主要存在的問題及原因如下:(1)學(xué)生對面向?qū)ο蟪绦蛟O(shè)計的學(xué)習(xí)的目標(biāo)不明確,學(xué)習(xí)動力不強(qiáng)。由于學(xué)生相對欠缺項目經(jīng)驗,對面向過程程序設(shè)計在大型軟件開發(fā)過程中遇到的代碼難維護(hù)、難擴(kuò)充等問題意識不足,僅從軟件功能的角度看問題,以為已經(jīng)有面向過程編程的方法已經(jīng)可以寫軟件了,不理解為什么需要學(xué)習(xí)面向?qū)ο蟪绦蛟O(shè)計。(2)教材對面向?qū)ο蟪绦蛟O(shè)計技術(shù)的描述過于側(cè)重語法,缺乏思維引導(dǎo)和結(jié)合應(yīng)用的分析,較少圍繞“為什么面向?qū)ο蟪绦蛟O(shè)計包含了這個技術(shù)點?”“什么情況下需要使用這個技術(shù)點?”“如何使用這個技術(shù)點?”等問題展開討論,導(dǎo)致學(xué)生停留在“知其然而不知其所以然”的階段,即使掌握了面向?qū)ο蟪绦蛟O(shè)計的語法,還是沒領(lǐng)會到面向?qū)ο蟪绦蛟O(shè)計的思想精髓,不懂運用。(3)教材和課后習(xí)題以每一章節(jié)的知識點為目標(biāo)設(shè)計,缺乏系統(tǒng)性與連貫性,缺少對知識綜合運用能力的訓(xùn)練。

2引入遞進(jìn)案例提高教學(xué)質(zhì)量

針對上述問題,筆者在教學(xué)中使用遞進(jìn)案例,根據(jù)教學(xué)目標(biāo)和內(nèi)容需要,采用案例組織學(xué)生進(jìn)行學(xué)習(xí)、研究、鍛煉,把教授和學(xué)習(xí)的重心放在案例的分析和領(lǐng)會上,而不是以教材的理論知識點為中心[1-2]。旨在讓學(xué)生在理解案例所涵蓋的知識點后,通過模仿案例到靈活運用設(shè)計創(chuàng)新,到達(dá)學(xué)習(xí)的目的。本節(jié)討論遞進(jìn)案例設(shè)計和運用過程。(1)案例的編寫首先,案例保持內(nèi)容的連貫性與遞進(jìn)性[3]。案例以編寫某個軟件為目標(biāo),與教材內(nèi)容章節(jié)順序保持一致,在前一次課完成的功能的基礎(chǔ)上,提出豐富軟件功能的新需求,引入新的知識點學(xué)習(xí)。整個過程由簡到繁,循序漸進(jìn),將知識點串聯(lián)起來,引導(dǎo)學(xué)生在學(xué)習(xí)過程中承前啟后、舉一反三。同時,案例的設(shè)計要考慮趣味性[4]、實用性和可操作性。例如,計算機(jī)專業(yè)的學(xué)生通常喜歡游戲,可以以游戲為例子吸引學(xué)生。此外,案例的編寫要詳盡,對于每個知識點,需要寫清楚它的作用、適用場景和相關(guān)代碼,使得學(xué)生在課后能通過閱讀案例深入理解、掌握知識點,并會模仿、應(yīng)用。(2)案例的運用筆者在使用遞進(jìn)案例進(jìn)行教學(xué)的時候,采用“提出需求、拋出問題、分析問題、講授知識點、布置任務(wù)”的路線進(jìn)行講解。首先,在第一次上課的時候向?qū)W生介紹案例的內(nèi)容,說明要實現(xiàn)一個什么樣的軟件,具體要實現(xiàn)哪些功能。然后,給學(xué)生布置課程設(shè)計,讓學(xué)生實現(xiàn)與案例軟件相關(guān)的另一個模塊,要求在后續(xù)的學(xué)習(xí)過程中每次學(xué)到新技術(shù)后,能模仿案例將新技術(shù)點用到課程設(shè)計中。每次課堂按以下步驟展開:①提出需求。結(jié)合新知識點,提出給軟件增加某個功能,要求學(xué)生采用以前學(xué)過的面向過程程序設(shè)計的方法實現(xiàn)。②提出問題。要求學(xué)生思考:在用面向過程程序設(shè)計方法實現(xiàn)該功能的時候,遇到什么困難?提示學(xué)生從代碼管理、代碼可擴(kuò)充性等方面思考。③分析問題。要求學(xué)生分析困難出現(xiàn)的原因,總結(jié)面向過程程序設(shè)計在大型軟件開發(fā)過程中的不足之處,讓學(xué)生領(lǐng)悟到:“在這種應(yīng)用場景下,需要利用面向?qū)ο蟪绦蛟O(shè)計的技術(shù)去解決這個問題。”,激發(fā)學(xué)生的學(xué)習(xí)興趣。④引入新知識點。結(jié)合教材的例子講解知識點的語法。在講解過程中,對于部分難以理解的內(nèi)容,像構(gòu)造函數(shù)、析構(gòu)函數(shù)、拷貝構(gòu)造函數(shù)、動態(tài)內(nèi)存分配等,可以采用動畫形式演示,讓學(xué)生對這些抽象的過程有較具體的理解。然后結(jié)合案例演示知識點的運用將知識點擴(kuò)大為知識面,最后由形象到抽象,揭示概念本質(zhì)。⑤布置任務(wù)。任務(wù)分兩部分內(nèi)容。首先,要求學(xué)生完成教材的習(xí)題,通過語法關(guān)。然后,要求學(xué)生模仿案例,將新知識點運用到課程設(shè)計中。

3一個具體的案例

本節(jié)分享筆者在教學(xué)中使用的遞進(jìn)案例。在我院,《C++面向?qū)ο蟪绦蛟O(shè)計》這門課安排在一年級第二學(xué)期上,作為《C語言程序設(shè)計》的后續(xù)課程。筆者在上《C語言程序設(shè)計》的時候,要求學(xué)生用面向過程程序設(shè)計的方式實現(xiàn)一些小游戲,例如猜數(shù)字游戲、打字游戲等。由于學(xué)生對游戲都比較感興趣,所以收集了不少優(yōu)秀作品。在面向?qū)ο蟪绦蛟O(shè)計課程中,筆者設(shè)計了一個實現(xiàn)“小游戲集錦”的遞進(jìn)案例,要求學(xué)生在學(xué)習(xí)完整套案例后,實現(xiàn)游戲玩家管理的模塊。教材一般按照類的封裝性、繼承性、多態(tài)性的順序組織內(nèi)容,對應(yīng)地,案例的內(nèi)容設(shè)計也基本按照上述順序展開。(1)類和對象的概念。將多個小游戲的代碼分發(fā)給學(xué)生,要求學(xué)生把代碼匯總成一個“小游戲集錦”的程序。讓學(xué)生設(shè)計一個菜單入口,在菜單中選擇游戲,進(jìn)入相應(yīng)的游戲界面。讓學(xué)生體會到,這個貌似幾行代碼能解決的問題,會碰到諸如“全局變量名沖突、數(shù)據(jù)和函數(shù)的關(guān)系不明顯”等的麻煩。接下來,引入類和對象的概念,介紹類的作用,再講解類的語法。在案例中演示如何將每個游戲單獨寫成一個類。要求學(xué)生在掌握了類的語法后,寫一個玩家類。(2)類的封裝性。舉一個“竄改代碼關(guān)鍵變量”的例子,讓學(xué)生理解封裝性的作用。要求學(xué)生在玩家類里實現(xiàn)對玩家數(shù)據(jù)信息的封裝。(3)構(gòu)造函數(shù)、析構(gòu)函數(shù)、拷貝構(gòu)造函數(shù)、靜態(tài)成員等。結(jié)合某個游戲類,對類增加恰當(dāng)?shù)男枨髴?yīng)用,展開對這些知識點的講解。例如,在游戲集錦中,僅要求每個游戲類生成一個對象??捎纱诵枨笠腱o態(tài)成員的知識點進(jìn)行講解,然后演示如何設(shè)計單例模式解決這個問題。(4)類的繼承與派生。要求增加功能:統(tǒng)計每個游戲的進(jìn)入次數(shù)。用戶每進(jìn)入一次游戲,該游戲的進(jìn)入次數(shù)加一。在學(xué)習(xí)類的繼承與派生之前,學(xué)生只能在逐個游戲類里面添加私有變量intcount,并在各個類的游戲入口函數(shù)處增加count++的語句。提問學(xué)生:如果有一百個小游戲,是否需要分別在一百個類里面做重復(fù)的定義count和count++的操作?如果有一個類忘記對count加1會出現(xiàn)什么情況?引入面向?qū)ο蟪绦蛟O(shè)計的另一個重要特點——繼承。在案例中,定義一個游戲基類Game類,Game類包含成員count,再派生出各個小游戲類。要求學(xué)生掌握類的繼承與派生之后,寫一個游戲的游客類。游客類與玩家類的區(qū)別在于,游客類每的對象每次登錄游戲集錦時,分?jǐn)?shù)清零;玩家類的分?jǐn)?shù)不清零。要求思考該如何對游客類和玩家類的代碼進(jìn)行重構(gòu)、設(shè)計。(5)類的多態(tài)性。多態(tài)是面向?qū)ο蟪绦蛟O(shè)計最復(fù)雜也最難詮釋的一個特點。在案例中,要求增加功能:菜單按游戲的熱門程度(進(jìn)入游戲的次數(shù))排序。提問若采用已學(xué)過的知識,這種做法是否方便:定義一個數(shù)組統(tǒng)計各類小游戲的訪問次數(shù),然后對數(shù)組進(jìn)行排序,得到小游戲的菜單列表,再根據(jù)用戶輸入的選擇找到相應(yīng)的游戲入口函數(shù)。引入基類指針指向派生類對象和多態(tài)的知識點,提出可以將Game類設(shè)計成虛基類,采用Game類指針數(shù)組存儲指向各個小游戲的對象的指針,則可以方便地對指針數(shù)組排序,實現(xiàn)按游戲熱門程度排序的功能。要求學(xué)生掌握多態(tài)性的知識點后,寫一個在線玩家(包括游客)的列表,要求將在線玩家和游客按游戲成績排名顯示。

4結(jié)語

《面向?qū)ο蟪绦蛟O(shè)計》是計算機(jī)專業(yè)的一門重要的基礎(chǔ)課程,該課的學(xué)習(xí)質(zhì)量直接影響專業(yè)后續(xù)課程的學(xué)習(xí)。本文探討了教學(xué)過程遇到的一些問題,分析了學(xué)生學(xué)習(xí)困難的原因,討論如何用遞進(jìn)案例教學(xué),通過遞進(jìn)案例讓學(xué)生脫離枯燥的語法學(xué)習(xí),將學(xué)習(xí)重心轉(zhuǎn)移到對知識點的領(lǐng)悟與運用上,提高教學(xué)質(zhì)量。

參考文獻(xiàn):

[1]廖湖聲.面向?qū)ο蟪绦蛟O(shè)計課程的教學(xué)改革探討[J].計算機(jī)教育,2016.3.

[2]王文冰,李輝.以實例貫穿課堂的面向?qū)ο蟪绦蛟O(shè)計課程教學(xué)改革[J].計算機(jī)教育,2011.1

[3]肖志嬌.以游戲為實例進(jìn)行面向?qū)ο蟪绦蛟O(shè)計趣味教學(xué)[J].現(xiàn)代計算機(jī),2011(1):14-16.

[4]王婧.游戲案例在面向?qū)ο蟪绦蛟O(shè)計教學(xué)中的應(yīng)用[J].電腦知識與技術(shù),2016,12(2):124-126.

作者:馬慧 翁佩純 單位:電子科技大學(xué)中山學(xué)院計算機(jī)學(xué)院