前言:想要寫出一篇引人入勝的文章?我們特意為您整理了遞進(jìn)案例在面向?qū)ο蟪绦蛟O(shè)計(jì)教學(xué)應(yīng)用范文,希望能給你帶來靈感和參考,敬請(qǐng)閱讀。
摘要:《面向?qū)ο蟪绦蛟O(shè)計(jì)》是計(jì)算機(jī)專業(yè)的一門重要的基礎(chǔ)課程,較強(qiáng)的理論性與語(yǔ)法的復(fù)雜性給學(xué)生的學(xué)習(xí)帶來困難。分析以往教學(xué)過程中存在的問題及原因,淺談如何設(shè)計(jì)、運(yùn)用遞進(jìn)案例,使得學(xué)生從以教材語(yǔ)法為中心的學(xué)習(xí)重心轉(zhuǎn)移到案例的分析和領(lǐng)會(huì)上,到達(dá)學(xué)生主動(dòng)學(xué)習(xí)、對(duì)知識(shí)點(diǎn)融會(huì)貫通的目的。
關(guān)鍵詞:面向?qū)ο蟪绦蛟O(shè)計(jì);遞進(jìn)案例
0引言
《面向?qū)ο蟪绦蛟O(shè)計(jì)》是計(jì)算機(jī)專業(yè)的一門重要的基礎(chǔ)課程,是編程語(yǔ)言教學(xué)中的重點(diǎn)也是難點(diǎn)。該課程要求學(xué)生了解面向?qū)ο蟪绦蛟O(shè)計(jì)的基本思想、掌握面向?qū)ο缶幊痰募夹g(shù),為大型應(yīng)用軟件設(shè)計(jì)與開發(fā)打下良好的理論和實(shí)踐基礎(chǔ)。在教學(xué)實(shí)踐中,有學(xué)生反映課程很難學(xué),甚至有個(gè)別學(xué)生對(duì)編程產(chǎn)生畏懼的情緒。筆者結(jié)合實(shí)際的教學(xué)工作,分析課程教學(xué)過程中碰到的主要問題和成因,淺談如何引入遞進(jìn)案例方法提高教學(xué)質(zhì)量。
1教學(xué)過程中存在的問題及原因
以往在教學(xué)過程中主要存在的問題及原因如下:(1)學(xué)生對(duì)面向?qū)ο蟪绦蛟O(shè)計(jì)的學(xué)習(xí)的目標(biāo)不明確,學(xué)習(xí)動(dòng)力不強(qiáng)。由于學(xué)生相對(duì)欠缺項(xiàng)目經(jīng)驗(yàn),對(duì)面向過程程序設(shè)計(jì)在大型軟件開發(fā)過程中遇到的代碼難維護(hù)、難擴(kuò)充等問題意識(shí)不足,僅從軟件功能的角度看問題,以為已經(jīng)有面向過程編程的方法已經(jīng)可以寫軟件了,不理解為什么需要學(xué)習(xí)面向?qū)ο蟪绦蛟O(shè)計(jì)。(2)教材對(duì)面向?qū)ο蟪绦蛟O(shè)計(jì)技術(shù)的描述過于側(cè)重語(yǔ)法,缺乏思維引導(dǎo)和結(jié)合應(yīng)用的分析,較少圍繞“為什么面向?qū)ο蟪绦蛟O(shè)計(jì)包含了這個(gè)技術(shù)點(diǎn)?”“什么情況下需要使用這個(gè)技術(shù)點(diǎn)?”“如何使用這個(gè)技術(shù)點(diǎn)?”等問題展開討論,導(dǎo)致學(xué)生停留在“知其然而不知其所以然”的階段,即使掌握了面向?qū)ο蟪绦蛟O(shè)計(jì)的語(yǔ)法,還是沒領(lǐng)會(huì)到面向?qū)ο蟪绦蛟O(shè)計(jì)的思想精髓,不懂運(yùn)用。(3)教材和課后習(xí)題以每一章節(jié)的知識(shí)點(diǎn)為目標(biāo)設(shè)計(jì),缺乏系統(tǒng)性與連貫性,缺少對(duì)知識(shí)綜合運(yùn)用能力的訓(xùn)練。
2引入遞進(jìn)案例提高教學(xué)質(zhì)量
針對(duì)上述問題,筆者在教學(xué)中使用遞進(jìn)案例,根據(jù)教學(xué)目標(biāo)和內(nèi)容需要,采用案例組織學(xué)生進(jìn)行學(xué)習(xí)、研究、鍛煉,把教授和學(xué)習(xí)的重心放在案例的分析和領(lǐng)會(huì)上,而不是以教材的理論知識(shí)點(diǎn)為中心[1-2]。旨在讓學(xué)生在理解案例所涵蓋的知識(shí)點(diǎn)后,通過模仿案例到靈活運(yùn)用設(shè)計(jì)創(chuàng)新,到達(dá)學(xué)習(xí)的目的。本節(jié)討論遞進(jìn)案例設(shè)計(jì)和運(yùn)用過程。(1)案例的編寫首先,案例保持內(nèi)容的連貫性與遞進(jìn)性[3]。案例以編寫某個(gè)軟件為目標(biāo),與教材內(nèi)容章節(jié)順序保持一致,在前一次課完成的功能的基礎(chǔ)上,提出豐富軟件功能的新需求,引入新的知識(shí)點(diǎn)學(xué)習(xí)。整個(gè)過程由簡(jiǎn)到繁,循序漸進(jìn),將知識(shí)點(diǎn)串聯(lián)起來,引導(dǎo)學(xué)生在學(xué)習(xí)過程中承前啟后、舉一反三。同時(shí),案例的設(shè)計(jì)要考慮趣味性[4]、實(shí)用性和可操作性。例如,計(jì)算機(jī)專業(yè)的學(xué)生通常喜歡游戲,可以以游戲?yàn)槔游龑W(xué)生。此外,案例的編寫要詳盡,對(duì)于每個(gè)知識(shí)點(diǎn),需要寫清楚它的作用、適用場(chǎng)景和相關(guān)代碼,使得學(xué)生在課后能通過閱讀案例深入理解、掌握知識(shí)點(diǎn),并會(huì)模仿、應(yīng)用。(2)案例的運(yùn)用筆者在使用遞進(jìn)案例進(jìn)行教學(xué)的時(shí)候,采用“提出需求、拋出問題、分析問題、講授知識(shí)點(diǎn)、布置任務(wù)”的路線進(jìn)行講解。首先,在第一次上課的時(shí)候向?qū)W生介紹案例的內(nèi)容,說明要實(shí)現(xiàn)一個(gè)什么樣的軟件,具體要實(shí)現(xiàn)哪些功能。然后,給學(xué)生布置課程設(shè)計(jì),讓學(xué)生實(shí)現(xiàn)與案例軟件相關(guān)的另一個(gè)模塊,要求在后續(xù)的學(xué)習(xí)過程中每次學(xué)到新技術(shù)后,能模仿案例將新技術(shù)點(diǎn)用到課程設(shè)計(jì)中。每次課堂按以下步驟展開:①提出需求。結(jié)合新知識(shí)點(diǎn),提出給軟件增加某個(gè)功能,要求學(xué)生采用以前學(xué)過的面向過程程序設(shè)計(jì)的方法實(shí)現(xiàn)。②提出問題。要求學(xué)生思考:在用面向過程程序設(shè)計(jì)方法實(shí)現(xiàn)該功能的時(shí)候,遇到什么困難?提示學(xué)生從代碼管理、代碼可擴(kuò)充性等方面思考。③分析問題。要求學(xué)生分析困難出現(xiàn)的原因,總結(jié)面向過程程序設(shè)計(jì)在大型軟件開發(fā)過程中的不足之處,讓學(xué)生領(lǐng)悟到:“在這種應(yīng)用場(chǎng)景下,需要利用面向?qū)ο蟪绦蛟O(shè)計(jì)的技術(shù)去解決這個(gè)問題?!保ぐl(fā)學(xué)生的學(xué)習(xí)興趣。④引入新知識(shí)點(diǎn)。結(jié)合教材的例子講解知識(shí)點(diǎn)的語(yǔ)法。在講解過程中,對(duì)于部分難以理解的內(nèi)容,像構(gòu)造函數(shù)、析構(gòu)函數(shù)、拷貝構(gòu)造函數(shù)、動(dòng)態(tài)內(nèi)存分配等,可以采用動(dòng)畫形式演示,讓學(xué)生對(duì)這些抽象的過程有較具體的理解。然后結(jié)合案例演示知識(shí)點(diǎn)的運(yùn)用將知識(shí)點(diǎn)擴(kuò)大為知識(shí)面,最后由形象到抽象,揭示概念本質(zhì)。⑤布置任務(wù)。任務(wù)分兩部分內(nèi)容。首先,要求學(xué)生完成教材的習(xí)題,通過語(yǔ)法關(guān)。然后,要求學(xué)生模仿案例,將新知識(shí)點(diǎn)運(yùn)用到課程設(shè)計(jì)中。
3一個(gè)具體的案例
本節(jié)分享筆者在教學(xué)中使用的遞進(jìn)案例。在我院,《C++面向?qū)ο蟪绦蛟O(shè)計(jì)》這門課安排在一年級(jí)第二學(xué)期上,作為《C語(yǔ)言程序設(shè)計(jì)》的后續(xù)課程。筆者在上《C語(yǔ)言程序設(shè)計(jì)》的時(shí)候,要求學(xué)生用面向過程程序設(shè)計(jì)的方式實(shí)現(xiàn)一些小游戲,例如猜數(shù)字游戲、打字游戲等。由于學(xué)生對(duì)游戲都比較感興趣,所以收集了不少優(yōu)秀作品。在面向?qū)ο蟪绦蛟O(shè)計(jì)課程中,筆者設(shè)計(jì)了一個(gè)實(shí)現(xiàn)“小游戲集錦”的遞進(jìn)案例,要求學(xué)生在學(xué)習(xí)完整套案例后,實(shí)現(xiàn)游戲玩家管理的模塊。教材一般按照類的封裝性、繼承性、多態(tài)性的順序組織內(nèi)容,對(duì)應(yīng)地,案例的內(nèi)容設(shè)計(jì)也基本按照上述順序展開。(1)類和對(duì)象的概念。將多個(gè)小游戲的代碼分發(fā)給學(xué)生,要求學(xué)生把代碼匯總成一個(gè)“小游戲集錦”的程序。讓學(xué)生設(shè)計(jì)一個(gè)菜單入口,在菜單中選擇游戲,進(jìn)入相應(yīng)的游戲界面。讓學(xué)生體會(huì)到,這個(gè)貌似幾行代碼能解決的問題,會(huì)碰到諸如“全局變量名沖突、數(shù)據(jù)和函數(shù)的關(guān)系不明顯”等的麻煩。接下來,引入類和對(duì)象的概念,介紹類的作用,再講解類的語(yǔ)法。在案例中演示如何將每個(gè)游戲單獨(dú)寫成一個(gè)類。要求學(xué)生在掌握了類的語(yǔ)法后,寫一個(gè)玩家類。(2)類的封裝性。舉一個(gè)“竄改代碼關(guān)鍵變量”的例子,讓學(xué)生理解封裝性的作用。要求學(xué)生在玩家類里實(shí)現(xiàn)對(duì)玩家數(shù)據(jù)信息的封裝。(3)構(gòu)造函數(shù)、析構(gòu)函數(shù)、拷貝構(gòu)造函數(shù)、靜態(tài)成員等。結(jié)合某個(gè)游戲類,對(duì)類增加恰當(dāng)?shù)男枨髴?yīng)用,展開對(duì)這些知識(shí)點(diǎn)的講解。例如,在游戲集錦中,僅要求每個(gè)游戲類生成一個(gè)對(duì)象??捎纱诵枨笠腱o態(tài)成員的知識(shí)點(diǎn)進(jìn)行講解,然后演示如何設(shè)計(jì)單例模式解決這個(gè)問題。(4)類的繼承與派生。要求增加功能:統(tǒng)計(jì)每個(gè)游戲的進(jìn)入次數(shù)。用戶每進(jìn)入一次游戲,該游戲的進(jìn)入次數(shù)加一。在學(xué)習(xí)類的繼承與派生之前,學(xué)生只能在逐個(gè)游戲類里面添加私有變量intcount,并在各個(gè)類的游戲入口函數(shù)處增加count++的語(yǔ)句。提問學(xué)生:如果有一百個(gè)小游戲,是否需要分別在一百個(gè)類里面做重復(fù)的定義count和count++的操作?如果有一個(gè)類忘記對(duì)count加1會(huì)出現(xiàn)什么情況?引入面向?qū)ο蟪绦蛟O(shè)計(jì)的另一個(gè)重要特點(diǎn)——繼承。在案例中,定義一個(gè)游戲基類Game類,Game類包含成員count,再派生出各個(gè)小游戲類。要求學(xué)生掌握類的繼承與派生之后,寫一個(gè)游戲的游客類。游客類與玩家類的區(qū)別在于,游客類每的對(duì)象每次登錄游戲集錦時(shí),分?jǐn)?shù)清零;玩家類的分?jǐn)?shù)不清零。要求思考該如何對(duì)游客類和玩家類的代碼進(jìn)行重構(gòu)、設(shè)計(jì)。(5)類的多態(tài)性。多態(tài)是面向?qū)ο蟪绦蛟O(shè)計(jì)最復(fù)雜也最難詮釋的一個(gè)特點(diǎn)。在案例中,要求增加功能:菜單按游戲的熱門程度(進(jìn)入游戲的次數(shù))排序。提問若采用已學(xué)過的知識(shí),這種做法是否方便:定義一個(gè)數(shù)組統(tǒng)計(jì)各類小游戲的訪問次數(shù),然后對(duì)數(shù)組進(jìn)行排序,得到小游戲的菜單列表,再根據(jù)用戶輸入的選擇找到相應(yīng)的游戲入口函數(shù)。引入基類指針指向派生類對(duì)象和多態(tài)的知識(shí)點(diǎn),提出可以將Game類設(shè)計(jì)成虛基類,采用Game類指針數(shù)組存儲(chǔ)指向各個(gè)小游戲的對(duì)象的指針,則可以方便地對(duì)指針數(shù)組排序,實(shí)現(xiàn)按游戲熱門程度排序的功能。要求學(xué)生掌握多態(tài)性的知識(shí)點(diǎn)后,寫一個(gè)在線玩家(包括游客)的列表,要求將在線玩家和游客按游戲成績(jī)排名顯示。
4結(jié)語(yǔ)
《面向?qū)ο蟪绦蛟O(shè)計(jì)》是計(jì)算機(jī)專業(yè)的一門重要的基礎(chǔ)課程,該課的學(xué)習(xí)質(zhì)量直接影響專業(yè)后續(xù)課程的學(xué)習(xí)。本文探討了教學(xué)過程遇到的一些問題,分析了學(xué)生學(xué)習(xí)困難的原因,討論如何用遞進(jìn)案例教學(xué),通過遞進(jìn)案例讓學(xué)生脫離枯燥的語(yǔ)法學(xué)習(xí),將學(xué)習(xí)重心轉(zhuǎn)移到對(duì)知識(shí)點(diǎn)的領(lǐng)悟與運(yùn)用上,提高教學(xué)質(zhì)量。
參考文獻(xiàn):
[1]廖湖聲.面向?qū)ο蟪绦蛟O(shè)計(jì)課程的教學(xué)改革探討[J].計(jì)算機(jī)教育,2016.3.
[2]王文冰,李輝.以實(shí)例貫穿課堂的面向?qū)ο蟪绦蛟O(shè)計(jì)課程教學(xué)改革[J].計(jì)算機(jī)教育,2011.1
[3]肖志嬌.以游戲?yàn)閷?shí)例進(jìn)行面向?qū)ο蟪绦蛟O(shè)計(jì)趣味教學(xué)[J].現(xiàn)代計(jì)算機(jī),2011(1):14-16.
[4]王婧.游戲案例在面向?qū)ο蟪绦蛟O(shè)計(jì)教學(xué)中的應(yīng)用[J].電腦知識(shí)與技術(shù),2016,12(2):124-126.
作者:馬慧 翁佩純 單位:電子科技大學(xué)中山學(xué)院計(jì)算機(jī)學(xué)院