當前位置:文書都 >

知識文庫 >實用文檔 >

遞進案例在面向對象程序設計教學應用論文

遞進案例在面向對象程序設計教學應用論文

遞進案例在面向對象程序設計教學應用論文

遞進案例在面向對象程序設計教學應用論文

摘要:《面向對象程序設計》是計算機專業的一門重要的基礎課程,較強的理論性與語法的複雜性給學生的學習帶來困難。分析以往教學過程中存在的問題及原因,淺談如何設計、運用遞進案例,使得學生從以教材語法為中心的學習重心轉移到案例的分析和領會上,到達學生主動學習、對知識點融會貫通的目的。

關鍵詞:面向對象程序設計;遞進案例

0引言

《面向對象程序設計》是計算機專業的一門重要的基礎課程,是程式語言教學中的重點也是難點。該課程要求學生了解面向對象程序設計的基本思想、掌握面向對象編程的技術,為大型應用軟件設計與開發打下良好的理論和實踐基礎。在教學實踐中,有學生反映課程很難學,甚至有個別學生對編程產生畏懼的情緒。筆者結合實際的教學工作,分析課程教學過程中碰到的主要問題和成因,淺談如何引入遞進案例方法提高教學質量。

1教學過程中存在的問題及原因

以往在教學過程中主要存在的問題及原因如下:(1)學生對面向對象程序設計的學習的目標不明確,學習動力不強。由於學生相對欠缺項目經驗,對面向過程程序設計在大型軟件開發過程中遇到的代碼難維護、難擴充等問題意識不足,僅從軟件功能的角度看問題,以為已經有面向過程編程的方法已經可以寫軟件了,不理解為什麼需要學習面向對象程序設計。(2)教材對面向對象程序設計技術的描述過於側重語法,缺乏思維引導和結合應用的'分析,較少圍繞“為什麼面向對象程序設計包含了這個技術點?”“什麼情況下需要使用這個技術點?”“如何使用這個技術點?”等問題展開討論,導致學生停留在“知其然而不知其所以然”的階段,即使掌握了面向對象程序設計的語法,還是沒領會到面向對象程序設計的思想精髓,不懂運用。(3)教材和課後習題以每一章節的知識點為目標設計,缺乏系統性與連貫性,缺少對知識綜合運用能力的訓練。

2引入遞進案例提高教學質量

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

3一個具體的案例

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

4結語

《面向對象程序設計》是計算機專業的一門重要的基礎課程,該課的學習質量直接影響專業後續課程的學習。本文探討了教學過程遇到的一些問題,分析了學生學習困難的原因,討論如何用遞進案例教學,通過遞進案例讓學生脱離枯燥的語法學習,將學習重心轉移到對知識點的領悟與運用上,提高教學質量。

參考文獻:

[1]廖湖聲.面向對象程序設計課程的教學改革探討[J].計算機教育,2016.3.

[2]王文冰,李輝.以實例貫穿課堂的面向對象程序設計課程教學改革[J].計算機教育,2011.1

[3]肖志嬌.以遊戲為實例進行面向對象程序設計趣味教學[J].現代計算機,2011(1):14-16.

[4]王婧.遊戲案例在面向對象程序設計教學中的應用[J].電腦知識與技術,2016,12(2):124-126.

  • 文章版權屬於文章作者所有,轉載請註明 https://wenshudu.com/zhishiwenku/shiyongwendang/p9gwd0.html
專題