文章編號:1672-5913(2008)08-0056-02
摘要:本文討論了軟件設計模式課程教學中的幾個問題,介紹了經(jīng)典的PBL教學法及其不足,對其教學過程設計進行了改進并給出了一個教學案例,另外本文還就應用PBL教學法的注意事項進行了討論。
關鍵詞:PBL;軟件設計模式;計算機教學;面向?qū)ο螅唤虒W方法
中圖分類號:G642
獻標識碼:B
“軟件設計模式”是一門理論性和實踐性都非常強的課程,內(nèi)容抽象難懂,目前的大部分教材僅僅在一般意義上給出了各種模式的定義、結構、代碼框架,授課時容易出現(xiàn)內(nèi)容空泛、言之無物的情形,學生感覺這門課程比較困難。如何根據(jù)學生的特點,選用合適的教材,采用適當?shù)慕虒W方法是提高軟件設計模式教學效果所必須要解決的問題。本科學生的特點我們很難改變,教材問題可以通過授課教師的主觀努力,以講義和補充材料的方式加以解決,而本文則主要討論軟件設計模式的教學方法問題,即在軟件設計模式課程的教學中如何使用PBL教學方法來提高教學效果。
1PBL及改進的教學過程設計
PBL(Problem-based Learning)是一種行之有效的“做中學”教學方法,最初是由Barrows在加拿大McMaster大學提出來的一種教學策略和課程設計思想,符合以學生為中心的自我引導學習的建構主義學習理論。有效的PBL可以提高學生下面這幾方面的能力和素質(zhì):解決問題的技能;思維能力;團隊合作能力,包括賞識和包容異類學習同伴的精神;組織利用時間的技能;獲取和評價信息的能力;傳播信息的技能;計算機運用能力等。
在教學中引進PBL教學法后我們發(fā)現(xiàn)該方法的不足之處,主要問題是:時間消耗量大,學生學習的效率不高;在班級規(guī)模較大時,教師對教學的組織和教學過程的控制也存在很大的困難;以小組為單位,容易造成學生能力發(fā)展不均衡,出現(xiàn)小組內(nèi)某些學生成為主導,另一些學生則濫竽充數(shù)的情況。為此我們對PBL方法作了一些修改,教學過程設計如下:
(1) 提出一個與本次課程要學習的設計模式相關的設計問題。這一步非常關鍵,提出的設計問題必須與學生已有的基礎較接近,規(guī)模適中,是學生可能完成的任務。這樣可以激發(fā)學生的學習興趣。
(2) 講授與該設計模式相關的面向?qū)ο蟮脑O計原則。對這些原則的講授可以貫穿在該門課程的整個教學過程中,適當?shù)闹貜秃蛷娬{(diào)可以加深學生的印象,促使學生在其今后的設計中自覺運用設計原則,即使不套用設計模式,也能產(chǎn)生良好的設計方案。
(3) 給學生留出時間,讓學生設計前面問題的解決方案。要求每個學生自己進行設計,但允許和同學討論。
(4) 抽取并公布學生的設計方案,組織同學討論其優(yōu)劣,對比與事先提出的設計目標的差距并分析原因。
(5) 以相應設計模式的思路,對學生的方案進行改進,并給出其簡單實現(xiàn)。
(6) 從上述實例中提煉出要講授的設計模式,總結其意圖、結構、角色、示意性代碼,分析其可能的變化。
(7) 布置一個類似的設計問題作為課偶作業(yè),要求學生給出完整的設計和實現(xiàn)。
我校“軟件設計模式”課程只有32個學時,在這么短的學時內(nèi)讓學生完整深入地掌握23個設計模式是不現(xiàn)實的。
我們在制定教學大綱時充分考慮到了這個問題,選取了其中一部分作為課堂教學的內(nèi)容,選取的準則是:①是常用模式;②在模式分類中具有代表性。其余的設計模式則留給學生課后自學。
2一個基于PBL的設計模式教學案例
Strategy Pattern(策略模式)是一種常用的重要的設計模式,下面以該設計模式的教學為例,說明PBL教學方法的應用。
(1) 提出問題。某公司銷售打印機時有一定的折扣讓利給顧客,但折扣計算的方法有很多種,如不打折、每臺減扣固定的金額、按售價的5%打折等。現(xiàn)在要為該公司開發(fā)銷售系統(tǒng),實現(xiàn)打印機銷售時的折扣計算,要能夠靈活地選用折扣計算方法,并且可以很容易地增加或修改折扣計算方法,而不至于對整個系統(tǒng)的維護造成困難。
(2) 相關設計原則的講授。本設計模式主要涉及三個面向?qū)ο蟮脑O計原則:針對接口編程,而不是針對實現(xiàn)編程;優(yōu)先選用對象組合,而不是類繼承的軟件復用方式;分離變化,并對變化進行單獨封裝以使得今后對軟件的維護局部化。在講授這三個原則時,各舉簡單的例子加以說明。
(3) 讓學生解決第一步提出的問題,給出設計方案。設計時盡量運用前面講授的三個設計原則。要求每個學生自己動手,但鼓勵討論。
(4) 抽取學生的設計方案,并比照第一步提出的設計目標進行分析討論。由于時間關系,不可能對每個學生的方案進行討論,一般鼓勵學生主動提交,主動提交的學生一般認為自己的設計方案較好,此外也可以選一個不理想的設計方案進行討論。
學生的設計方案五花八門,圖1是其中的一種。

圖1 學生的一個設計方案
該設計方案部分運用了講授的設計原則,如PrinterSaler使用抽象類Printer而不是直接使用具體類HPPrinter等,這體現(xiàn)出學生試圖運用針對接口編程的原則;該方案將計算折扣的方法單獨抽象成一個接口,但卻是用打印機的具體類來實現(xiàn)該接口的,說明了設計者意識到計算折扣是變化的部分,試圖將其分離出來,但卻沒有將它進行獨立的封裝,因此對改善系統(tǒng)的可維護性和折扣方法的靈活選用并無多大幫助,而且由于抽象類Printer沒有實現(xiàn)該接口,使得PrinterSaler通過使用Prinetr來計算折扣難以實現(xiàn)。
通過分析和討論(這一過程要鼓勵學生參與發(fā)言,而不是教師唱獨角戲)學生的方案,指出其不足,并一步步加以優(yōu)化,最后可以得到基于Strategey模式的設計方案,如圖2所示。

圖2 基于Strategy Pattern的設計方案
在此強調(diào)由于折扣計算方法的分離和單獨封裝,就可以通過實例化不同的具體折扣計算類ConcreteDiscount并賦值給Printer的引用變量(假定為Discount),然后通過調(diào)用discount.calcDiscount()靈活選用相應的折扣計算方法;折扣計算方法可以被所有打印機類復用,甚至可以被其他類復用;而且修改或增加新的折扣計算方法也不會影響其他打印機類的代碼。
(5) 為了使學生有更為切身的體驗,給出上述設計方案的實現(xiàn)代碼,編譯并演示運行結果。
(6) 從上述實例中提煉出要講授的設計模式,總結其意圖、結構、角色、示意性代碼,分析其可能的變化。
(7) 布置一個類似的設計問題,作為作業(yè),要求學生給出完整的設計和實現(xiàn),提交實驗報告。
參考文獻
[1] 張屹,祝智庭. 建構主義理論指導下的信息化教育[J]. 電化教育研究,2002,(1).