程序設(shè)計教導方法綜述_第1頁
程序設(shè)計教導方法綜述_第2頁
程序設(shè)計教導方法綜述_第3頁
全文預覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、程序設(shè)計教導方法綜述 作者:楊瑞龍 朱征宇 朱慶生 單位:重慶大學計算機學院在逐步掌握面向?qū)ο蟪绦蛟O(shè)計的基本特性、原則后,大部分學生已經(jīng)能夠使用類進行程序設(shè)計,合理的使用其繼承性、多態(tài)性等性質(zhì)。在使用多個類協(xié)調(diào)完成任務(wù)時,已經(jīng)能夠使用基本的設(shè)計原則。但對于綜合性強的復雜問題,隨著類的數(shù)量、代碼量的增加,對程序整體結(jié)構(gòu)的設(shè)計能力要求較高。而在教學過程中,多為驗證型和設(shè)計型的實驗,大型綜合實驗的鍛煉比較少。教學中,對于如何把這些概念應用到解決具體問題的程序設(shè)計中,并且構(gòu)造良好的程序結(jié)構(gòu),未進行充分的講解。在面對這些復雜問題時,學生一般未考慮到程序整體結(jié)構(gòu)的設(shè)計和優(yōu)化,注意力集中于局部功能特性、結(jié)構(gòu)

2、的優(yōu)化。引入軟件設(shè)計模式的可行性分析軟件設(shè)計模式2-4是一套被反復使用、經(jīng)過分類編目、面向?qū)ο蟮拇a設(shè)計經(jīng)驗的總結(jié)。隨著面向?qū)ο蠹夹g(shù)的發(fā)展和廣泛應用,已成為軟件開發(fā)人員必須掌握的開發(fā)技能和思想。軟件設(shè)計模式反應了面向?qū)ο笤O(shè)計思想在軟件設(shè)計過程中如何重復使用,并以此構(gòu)造出程序的良好結(jié)構(gòu)。每個設(shè)計模式的說明有名稱、意圖、動機、實用性、結(jié)構(gòu)、參與者、協(xié)作、效果、實現(xiàn)方法、代碼示例等2,這些設(shè)計方法可以有效提高代碼的可重用性和可維護性。計算機專業(yè)的學生一般都在學習Java之前學過了C+面向?qū)ο蟪绦蛟O(shè)計課程,基本掌握了面向?qū)ο笤O(shè)計的基本概念和設(shè)計思想。設(shè)計模式所體現(xiàn)的面向?qū)ο笤O(shè)計思想一般會通過一種面向?qū)?/p>

3、象的程序設(shè)計語言所寫的代碼體現(xiàn)出來,且目前已有很多用C+和Java等語言描述設(shè)計模式的相關(guān)書籍,完全可以把設(shè)計模式引入面向?qū)ο蟪绦蛟O(shè)計教學中來,有的學校已專門開設(shè)了設(shè)計模式課程5-6。引入軟件設(shè)計模式的教學方法軟件設(shè)計模式,經(jīng)過分類編目總共有20多種3,5,且不斷發(fā)展。學習設(shè)計模式不是面向?qū)ο蟪绦蛟O(shè)計課程的教學核心,不需要學習和掌握全部設(shè)計模式,而是選擇適當?shù)哪J皆谶m當?shù)臅r候引入課堂教學。這需要遵循一定的教學方法,通過實踐,我們總結(jié)出以下教學方法。1)發(fā)現(xiàn)面向?qū)ο蟪绦蛟O(shè)計語言本身蘊含的設(shè)計模式思想。程序設(shè)計語言本身提供的API類蘊含著非常優(yōu)秀和豐富的面向?qū)ο笤O(shè)計思想,同時也是設(shè)計模式的靈活應用

4、和體現(xiàn)。以Java為例,創(chuàng)建線程時,可以繼承Thread類,覆蓋其run()方法,這個創(chuàng)建線程的方法就使用了模板方法模式。父類Thread定義了線程的主要方法和工作流程,子類實現(xiàn)線程體方法run()就可以了。模板方法設(shè)計模式靈活使用了面向?qū)ο筇匦缘闹匾匦裕悍庋b性、繼承性和多態(tài)性。Java中使用模板方法設(shè)計模式的地方還有很多,如創(chuàng)建Applet時,繼承JApplet類;創(chuàng)建Servlet時繼承HttpServlet等。當然,JavaAPI還體現(xiàn)了其他設(shè)計模式。通過發(fā)現(xiàn)API中的設(shè)計模式,在課堂教學中適時引入設(shè)計模式的概念,讓學生初步接觸和理解設(shè)計模式的思想;通過API的學習和使用,體會其中蘊含

5、的面向?qū)ο笤O(shè)計思想;Java工具包包含了API的源代碼,通過分析其源代碼有助于學生提高面向?qū)ο蟪绦蛟O(shè)計能力。2)啟發(fā)式對比教學。對于一個具體問題,剛學習面向?qū)ο蟪绦蛟O(shè)計的學生習慣用非面向?qū)ο蠹夹g(shù),甚至有些已學習過C+的學生也是如此,設(shè)計出的軟件程序一般是由簡單的變量和功能堆砌而成。沒有體現(xiàn)面向?qū)ο笤O(shè)計思想、可復用程度低、缺乏靈活性,后續(xù)軟件程序變更和功能擴展比較困難。對于這樣的情況,教師可分別用基本的面向?qū)ο笤O(shè)計方法與引入設(shè)計模式后的程序進行對比講解,詳細分析每種方法的設(shè)計過程。在教師的啟發(fā)下,學生比較兩種方法在出發(fā)點、設(shè)計思想和最終結(jié)果的差別,領(lǐng)悟出面向?qū)ο蟪绦蛟O(shè)計的優(yōu)勢以及引入設(shè)計模式后的

6、革新等。例如,學生設(shè)計程序計算不同排序算法的時間時,往往是設(shè)計出彼此沒有關(guān)系的類,忽略了抽取基類的過程,代碼可復用性差。引入設(shè)計模式后,引導學生抽取一個基類,在基類中定義好計算不同排序算法所需時間的執(zhí)行流程和代碼框架,子類只需要覆蓋父類的某一個方法實現(xiàn)具體的排序算法就可以了,提高了代碼的可復用性和擴展性。3)對開源軟件進行設(shè)計模式分析。以Java平臺為例,有很多優(yōu)秀的開源軟件。圍繞真實的開源軟件組織教學,教師指導學生應用所學面向?qū)ο蟪绦蛟O(shè)計知識分析開源軟件的代碼設(shè)計和結(jié)構(gòu)設(shè)計,能夠激發(fā)學生的創(chuàng)造力,培養(yǎng)創(chuàng)新精神,激發(fā)求知欲望,培養(yǎng)開拓進取的自學能力。把開源軟件分析引入教學中,首先要選擇合適的開

7、源軟件項目。目前開源軟件種類繁多、數(shù)量龐大,要選擇那些在教學中實踐性和可操作性比較高、功能相對簡單、設(shè)計精巧的小軟件或軟件框架。Java工具包包含了豐富的例子,并且附有源代碼,在教學中可以作為小軟件進行分析。在軟件框架方面可以選擇Struts等輕型軟件框架。對這些開源軟件重在分析其面向?qū)ο蟪绦蛟O(shè)計思想和優(yōu)秀的程序整體結(jié)構(gòu)。分析過程由教師引導和輔助,學生為主體;教師從知識傳授變?yōu)閱l(fā)和引導,學生主動從開源軟件的分析中獲得啟示,促進學生自主學習。對于面向?qū)ο笤O(shè)計能力掌握得較好的學生,教師可以鼓勵其根據(jù)自己的興趣向開源軟件社區(qū)中貢獻代碼,與國際頂級高手協(xié)作。4)案例任務(wù)驅(qū)動教學。案例任務(wù)驅(qū)動教學主要

8、是引導學生把學習的面向?qū)ο笤O(shè)計知識和思想靈活融入具體實踐項目中去,體會基于面向?qū)ο笏枷氲拇a設(shè)計和結(jié)構(gòu)設(shè)計對軟件穩(wěn)定性、擴展性和可維護性的影響。案例任務(wù)驅(qū)動教學,圍繞真實項目進行教學,學生可以分組協(xié)作完成,教師與學生共同討論、分析和設(shè)計軟件產(chǎn)品。案例項目的分析和設(shè)計要與課堂教學匹配,要針對課堂教學內(nèi)容科學設(shè)計。首先,要選擇難度適宜、規(guī)模較小的軟件項目。要注重軟件項目的實踐性和可操作性,如果是集中實踐,一般限定在12周內(nèi)完成。其次,要合理分解軟件設(shè)計任務(wù),把總目標分解成多個小目標;整體軟件劃分為相對獨立的功能模塊,轉(zhuǎn)化成容易分析和設(shè)計的簡單任務(wù)。任務(wù)的合理分解直接影響到案例任務(wù)目標是否能夠?qū)崿F(xiàn)。

9、案例目標分解后,要對所解決的問題進行抽象、分析上下文環(huán)境;根據(jù)問題類型決定如何靈活應用面向?qū)ο笤O(shè)計特性,并設(shè)計問題的解決方法。在學生設(shè)計的基礎(chǔ)上,教師引導學生將所設(shè)計的內(nèi)容與設(shè)計模式進行比較,找出共性,判斷是否能選用已有模式解決所面臨的設(shè)計問題;或者對選取的設(shè)計模式進行變化、修改等應用到案例中。采取分析、設(shè)計、比較、優(yōu)化等步驟,在此過程中,逐步掌握面向?qū)ο笤O(shè)計的精髓,最后完成案例任務(wù)目標。案例任務(wù)教學中,除了教師引導外,還要注意調(diào)動學生自主學習的積極性。逐步讓學生掌握探索、分析、解決問題的主動權(quán),根據(jù)自身行為的反饋信息形成對客觀問題的認識和解決方法。要注重小組成員之間的協(xié)作學習,通過小組討論,

10、從協(xié)作伙伴的反饋信息中形成對問題的認識和解決方法,構(gòu)建相互學習,共同提高的機制。案例任務(wù)完成后,由教師引導學生進行評價和總結(jié)。5)注重抽象思維和技術(shù)的鍛煉。抽象思維和技術(shù)是人類理解和解決復雜問題最重要的工具之一6-7,也是面向?qū)ο蟪绦蛟O(shè)計中廣泛應用的原則之一。利用抽象技術(shù),通過層次分類方法達到自上而下地對復雜問題逐步求精和模塊化。從抽象角度分析和理解面向?qū)ο笤O(shè)計技術(shù)的主要特性。為了讓學生深刻理解面向?qū)ο蟪绦蛟O(shè)計思想,可以適當引入符號與圖形表示方法。統(tǒng)一建模語言UML是使用面向?qū)ο笏枷雽浖到y(tǒng)進行可視化建模的一種語言,適用于軟件開發(fā)周期的各個階段。UML提供的類圖、對象圖、序列圖可以非常直觀地描述類或者對象之間的協(xié)作關(guān)系。在面向?qū)ο笤O(shè)計教學中,引入部分UML知識,能鍛煉學生用符號進行表達的抽象思維,又能可視化的描述所設(shè)計的程序或者軟件。結(jié)語面向?qū)ο蟪绦蛟O(shè)計技術(shù)是計算機本科專業(yè)的重要教學內(nèi)容之一,為了使學生更好地掌

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論