
摘要:拋錨式教學(xué)模式是信息化教學(xué)模式之一,其主要特點(diǎn)是從學(xué)生已有的知識(shí)出發(fā),通過情景提出問題,確定教學(xué)內(nèi)容和教學(xué)進(jìn)程。在分析《面向?qū)ο蟪绦蛟O(shè)計(jì)》課程教學(xué)特點(diǎn)的基礎(chǔ)上,作者對(duì)拋錨式教學(xué)模式在《面向?qū)ο蟪绦蛟O(shè)計(jì)》中的應(yīng)用進(jìn)行了教學(xué)實(shí)踐探討,發(fā)現(xiàn)運(yùn)用拋錨式教學(xué)能夠很好地將面向?qū)ο蟪绦蛟O(shè)計(jì)中的概念、原理與真實(shí)世界聯(lián)系起來,充分利用知識(shí)之間的聯(lián)系,一步步地引導(dǎo)學(xué)生掌握面向?qū)ο蟪绦蛟O(shè)計(jì)的知識(shí)。
關(guān)鍵詞:拋錨式教學(xué)模式;面向?qū)ο蟪绦蛟O(shè)計(jì);教學(xué)案例
拋錨式教學(xué)模式是基于真實(shí)或模擬情景的信息化教學(xué)模式,它通過情景產(chǎn)生學(xué)習(xí)需求,確定教學(xué)內(nèi)容和教學(xué)進(jìn)程(就像輪船被錨固定一樣),通過鑲嵌式教學(xué)和學(xué)生的主動(dòng)學(xué)習(xí),親身體驗(yàn)識(shí)別解決問題,從而達(dá)到學(xué)習(xí)的目標(biāo)。
面向?qū)ο蟪绦蛟O(shè)計(jì)是近年來迅速發(fā)展的軟件設(shè)計(jì)思想和技術(shù),它是在繼承結(jié)構(gòu)化程序設(shè)計(jì)技術(shù)的優(yōu)點(diǎn)與長處的基礎(chǔ)上產(chǎn)生的一種全新的程序設(shè)計(jì)思想和方法,在軟件開發(fā)中有著廣泛的應(yīng)用?!睹嫦?qū)ο蟪绦蛟O(shè)計(jì)》是高等學(xué)校計(jì)算機(jī)及相關(guān)專業(yè)必修的一門重要課程,研究如何在教學(xué)過程中運(yùn)用信息化教學(xué)模式對(duì)于提高教學(xué)質(zhì)量、培養(yǎng)學(xué)生掌握面向?qū)ο蟪绦蛟O(shè)計(jì)的知識(shí)和問題解決的能力具有一定的實(shí)踐意義和價(jià)值。
1.《面向?qū)ο蟪绦蛟O(shè)計(jì)》教學(xué)的特點(diǎn)
把握課程的特點(diǎn)是開展教學(xué)的起點(diǎn)和選擇合適教學(xué)模式的關(guān)鍵。面向?qū)ο蟪绦蛟O(shè)計(jì)是在繼承傳統(tǒng)的結(jié)構(gòu)化程序設(shè)計(jì)的基礎(chǔ)上發(fā)展而來的。因此,《面向?qū)ο蟪绦蛟O(shè)計(jì)》的教學(xué)重點(diǎn)應(yīng)該包括面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念和結(jié)構(gòu)化程序設(shè)計(jì)與面向?qū)ο蟪绦蛟O(shè)計(jì)的區(qū)別兩個(gè)方面。
面向?qū)ο蟪绦蛟O(shè)計(jì)基于一種抽象的數(shù)據(jù)類型——類,和這種抽象數(shù)據(jù)類型的實(shí)例——對(duì)象[1]。對(duì)象是具有某些特性的具體事物的抽象,對(duì)象有屬性和方法,分別用來表征對(duì)象的狀態(tài)和行為,類是創(chuàng)建對(duì)象實(shí)例的模板,用來描述具有相同屬性和方法的對(duì)象集合,它定義了集合中每個(gè)對(duì)象共有的屬性和方法,對(duì)象是類的實(shí)例。事件是能被對(duì)象所識(shí)別的外部刺激,如單擊鼠標(biāo)。面向?qū)ο蟪绦蛟O(shè)計(jì)通過事件驅(qū)動(dòng)機(jī)制處理事件,即只有在事件發(fā)生時(shí)程序才會(huì)運(yùn)行,否則處于靜止?fàn)顟B(tài)。圖1表明了這幾個(gè)概念之間的聯(lián)系[2]:
圖1 面向?qū)ο蟪绦蛟O(shè)計(jì)中基本概念的關(guān)系
2.《面向?qū)ο蟪绦蛟O(shè)計(jì)》教學(xué)中的拋錨式教學(xué)
2.1理論基礎(chǔ)
拋錨式教學(xué)模式是指在多樣化的現(xiàn)實(shí)生活背景中(或在利用技術(shù)虛擬的情境中)運(yùn)用情境化教學(xué)技術(shù)以促進(jìn)學(xué)生反思,提高遷移能力和解決復(fù)雜問題能力的一種教學(xué)方式[3]。所謂的“錨”,是指在情景中創(chuàng)設(shè)的事例和提出的問題。拋錨式教學(xué)模式是建構(gòu)主義教學(xué)模式之一,建構(gòu)主義主張學(xué)習(xí)者通過感受真實(shí)的環(huán)境達(dá)到對(duì)事物的本質(zhì)及其相互之間的聯(lián)系的認(rèn)知。拋錨式教學(xué)模式以真實(shí)的事例或問題為錨,在問題背景中產(chǎn)生學(xué)習(xí)需求,通過主動(dòng)學(xué)習(xí)、生成學(xué)習(xí)和與其他學(xué)習(xí)成員之間的交流與合作,親歷從識(shí)別目標(biāo)到達(dá)成目標(biāo)的全過程[4]。
拋錨式教學(xué)具有與傳統(tǒng)的課堂教學(xué)不同的特征:通過真實(shí)或者設(shè)置的情景引出用作“錨”的問題或者實(shí)例;教師不再是傳統(tǒng)教學(xué)中知識(shí)的傳播者,而是學(xué)生學(xué)習(xí)的引導(dǎo)者、支持者和學(xué)習(xí)伙伴;學(xué)生通過自主和合作的方式進(jìn)行學(xué)習(xí);強(qiáng)調(diào)教學(xué)的無序性,也就是教學(xué)順序與預(yù)先確定的教學(xué)設(shè)計(jì)不一致,無序性教學(xué)富有彈性,教學(xué)信息不確定,教學(xué)目標(biāo)具有相對(duì)開放性,教學(xué)結(jié)果有彈性[5]。
2.2教學(xué)案例
以掌握面向?qū)ο蟪绦蛟O(shè)計(jì)的三大特性中的“繼承”、“多態(tài)”及“接口”的概念教學(xué)為例,下面談?wù)勗诿嫦驅(qū)ο蟪绦蛟O(shè)計(jì)教學(xué)中如何實(shí)施拋錨式教學(xué),程序的實(shí)現(xiàn)使用C#語言。學(xué)習(xí)的前提是學(xué)生已經(jīng)掌握面向?qū)ο蟮母拍詈汀邦悺钡母拍?,掌握?gòu)造類、屬性和方法的知識(shí)。
“繼承”、“多態(tài)”和“接口”之間既相互聯(lián)系又有區(qū)別,為保持教學(xué)內(nèi)容的連貫性和邏輯性,將本次教學(xué)分為2個(gè)單元,分別學(xué)習(xí)“繼承”、“多態(tài)”和“接口”。
單元1:“繼承”和“多態(tài)”
情境1:計(jì)算機(jī)動(dòng)畫展示:一只“喵喵”叫的“貓”和一只“汪汪”叫的“狗”,動(dòng)畫顯示它們都屬于“動(dòng)物”。
問題1:“分別為貓和狗創(chuàng)建2個(gè)類‘Cat’和‘Dog’,這2個(gè)類都具有表示名字的屬性‘name’和表示動(dòng)物叫喚的方法‘shout’。建立主程序,在其中實(shí)例化貓和狗的對(duì)象,輸出這2個(gè)對(duì)象的‘name’,執(zhí)行‘shout’方法,分別輸出‘喵’和‘汪’?!?br/> 問題1的提出是建立在學(xué)生已經(jīng)掌握了“類”和“對(duì)象”的概念基礎(chǔ)上。建立1個(gè)“Cat”類和一個(gè)“Dog”類,它們具有功能相同的屬性和方法。學(xué)生根據(jù)自己掌握的面向?qū)ο蟮闹R(shí)和對(duì)問題的理解,可以自己獨(dú)立解決問題,也可以通過與其他同學(xué)交流協(xié)作的方式完成任務(wù)。
問題2:“問題1中創(chuàng)建了2個(gè)類,主程序中執(zhí)行了一些操作,在這2個(gè)類和主程序中,許多代碼是重復(fù)或相似的,這些代碼被稱為冗余代碼,有什么方法將代碼精簡,實(shí)現(xiàn)代碼的重用?”
如前所述,學(xué)生建立的2個(gè)類中具有形同功能的屬性和方法,代碼冗余度大,復(fù)用率低。面向?qū)ο蟪绦蛟O(shè)計(jì)允許通過類的“繼承”實(shí)現(xiàn)代碼的優(yōu)化和復(fù)用。在解決問題2之前要讓學(xué)生掌握“繼承”的概念,并掌握以“繼承”的方式建立新類的操作,然后著手解決問題2提出的問題。通過分析“Cat”和“Dog”兩個(gè)類的共同點(diǎn),建立一個(gè)“animal”類,該類有1個(gè)“name”屬性和1個(gè)“shout”方法。重新構(gòu)建“Cat”類和“Dog”類,讓它們繼承自“animal”類。重寫主程序,輸出“name”、執(zhí)行“shout”方法。這時(shí)學(xué)生會(huì)發(fā)現(xiàn)出現(xiàn)新的問題:“Cat”對(duì)象和“Dog”對(duì)象執(zhí)行“shout”方法輸出的結(jié)果是相同的。由此引出問題3。
問題3:“為什么執(zhí)行重構(gòu)后的程序,‘Cat’對(duì)象和‘Dog’對(duì)象執(zhí)行‘shout’方法得到相同的結(jié)果?這顯然是不合實(shí)際的,如何解決?”
問題3引出了面向?qū)ο蟪绦蛟O(shè)計(jì)的另外一個(gè)重要屬性“多態(tài)”。所謂多態(tài),在面向?qū)ο蟪绦蛟O(shè)計(jì)中是指的同一個(gè)消息或者操作作用于不同的對(duì)象產(chǎn)生不同的結(jié)果。在解決問題3之前要讓學(xué)生掌握“多態(tài)”的概念,然后著手解決問題。重構(gòu)“animal”類,將“shout”方法改為沒有方法體的抽象方法。重構(gòu)“Cat”和“Dog”類,在其中重載“shout”方法,并分別實(shí)現(xiàn)各自的“shout”方法。修改主程序,使用“animal”類分別實(shí)例化一個(gè)“Cat”對(duì)象和一個(gè)“Dog”對(duì)象,它們執(zhí)行“shout”方法后得到不同的結(jié)果。
單元2:“接口”
情景2:在情景1的基礎(chǔ)上,計(jì)算機(jī)動(dòng)畫在“貓”的下方顯示一只“機(jī)器貓”,“機(jī)器貓”一邊“喵喵”叫,一邊變魔術(shù),變出一條魚。接著在“狗”的下方出現(xiàn)一只“機(jī)器狗”,“機(jī)器狗”一邊“汪汪”叫,一邊變魔術(shù),變出一根骨頭。
問題4:“動(dòng)畫中我們看到‘機(jī)器貓’和‘機(jī)器狗’除了分別具有‘貓’和‘狗’的一般特征外,還具有普通貓和狗不具備的特征,請(qǐng)用程序分別輸出‘機(jī)器貓’和‘機(jī)器狗’叫喚的聲音‘喵’和‘汪’,并輸出‘機(jī)器貓’和‘機(jī)器狗’變魔術(shù)的動(dòng)作‘機(jī)器貓:變魚’和‘機(jī)器狗:變骨頭’。要求運(yùn)用接口的知識(shí)解決該問題?!?br/> “機(jī)器貓”和“機(jī)器狗”都要具有普通貓和狗的屬性,它們應(yīng)該分別派生于“Cat”類和“Dog”類。它們又要分別實(shí)現(xiàn)“變”這個(gè)動(dòng)作,如果讓2個(gè)派生類分別實(shí)現(xiàn)各自的“變”的動(dòng)作,則顯然又會(huì)顯出代碼的冗余。似乎可以像上面的“貓”和“狗”那樣構(gòu)造一個(gè)基類,讓“機(jī)器貓”和“機(jī)器狗”繼承基類??墒荂#語言只允許單繼承,“機(jī)器貓”和“機(jī)器狗”已經(jīng)分別繼承自“Cat”類和“Dog”類了,如何又能繼承自其他類呢?解決問題的辦法就是使用接口。接口是用來定義一種程序的協(xié)定。在面向?qū)ο蟪绦蛟O(shè)計(jì)中,接口主要用于行為跨越不同類的對(duì)象,使用接口可以很好地增強(qiáng)現(xiàn)有類的功能,保證在特定的環(huán)境下系統(tǒng)自動(dòng)實(shí)現(xiàn)這些功能。
要解決問題4必須學(xué)習(xí)“接口”的相關(guān)知識(shí),以及如何使用“接口”的操作。學(xué)生將在教師的引導(dǎo)下通過教師的講解和自主學(xué)習(xí)掌握這些知識(shí),然后解答問題4。創(chuàng)建接口“IChange”,使其具有“change”方法。分別從“Cat”類和“Dog”派生出兩個(gè)類“CatMachine”和“DogMachine”,并且這兩個(gè)類都要實(shí)現(xiàn)“IChange”接口的“change”方法,分別輸出“機(jī)器貓:變魚”和“機(jī)器狗:變骨
McMADK5QjMHmyQnsgI5ChQ==頭”字符串。由于“CatMachine”類和“DogMachine”類分別繼承自“Cat”類和“Dog”類,它們的實(shí)例對(duì)象都可以實(shí)現(xiàn)普通“Cat”類和“Dog”類的功能,又實(shí)現(xiàn)了“IChange”接口,具有“變”的功能,并且代碼復(fù)用率高,冗余度小。
3.教學(xué)反思
拋錨式教學(xué)密切聯(lián)系了課程內(nèi)容和日常生活,從學(xué)生已知的知識(shí)出發(fā),運(yùn)用形象生動(dòng)的情景、實(shí)例或者問題設(shè)置好教學(xué)內(nèi)容和教學(xué)進(jìn)程,讓學(xué)生從問題出發(fā)開展積極主動(dòng)的學(xué)習(xí)。面向?qū)ο蟪绦蛟O(shè)計(jì)的思想是建立在對(duì)現(xiàn)實(shí)世界對(duì)象的基礎(chǔ)上的,運(yùn)用拋錨式教學(xué)模式能夠很好地將面向?qū)ο蟮母拍詈筒僮髋c真實(shí)世界聯(lián)系起來,充分利用知識(shí)之間的聯(lián)系一步步地引導(dǎo)學(xué)生掌握面向?qū)ο蟪绦蛟O(shè)計(jì)的知識(shí)和相關(guān)操作。
參考文獻(xiàn):
?。?]楊帆.面向?qū)ο蟪绦蛟O(shè)計(jì)基本結(jié)構(gòu)和思想分析[J].黃石高等專科學(xué)校學(xué)報(bào),2000,(2):30-34.
?。?]邵結(jié).面向?qū)ο蟪绦蛟O(shè)計(jì)教學(xué)初探[J].寧波大學(xué)學(xué)報(bào),2002,(6):90-92.
?。?]William R.Booth.Anchored instruction[EB/OL].http://www.coe.enco.edu/ET500/Booth/SL D002.HTM/,2004,7.
[4]鐘志賢.信息化教學(xué)模式——理論建構(gòu)與實(shí)踐例說[M].科學(xué)教育出版社,2005.12.
?。?]馬國光.拋錨式教學(xué)法在VB教學(xué)中的實(shí)踐初探[J].中國成人教育,2006,(6):127-12