袁梟翎
摘 要:本文針對(duì)Java教學(xué)中學(xué)生難以把握面向?qū)ο笏枷氲碾y題提出了有效的解決方法。介紹了突破該難點(diǎn)的對(duì)象優(yōu)先教學(xué)策略以及實(shí)行該策略所依托的Alice3編程環(huán)境。最后以Java中的循環(huán)結(jié)構(gòu)為例,詳細(xì)闡述了相關(guān)教學(xué)環(huán)節(jié)的設(shè)計(jì)。
關(guān)鍵詞:Java; 程序設(shè)計(jì); 對(duì)象優(yōu)先; 教學(xué)策略
中圖分類號(hào):G642 ? ? ? ? ? ?文獻(xiàn)標(biāo)識(shí)碼:A ? ? 文章編號(hào):1006-3315(2020)4-112-002
一、前言
Java是一門面向?qū)ο蟮某绦蛟O(shè)計(jì)語言,對(duì)面向?qū)ο笏枷氲睦斫?、掌握和?yīng)用是學(xué)好Java的關(guān)鍵。但在實(shí)際教學(xué)中,教師普遍注重學(xué)生對(duì)于程序語法細(xì)節(jié)的學(xué)習(xí),而忽略了學(xué)生對(duì)面向?qū)ο笏季S和程序結(jié)構(gòu)的理解。為了幫助學(xué)生更好的理解面向?qū)ο笏枷牒拖嚓P(guān)概念,我們引入了對(duì)象優(yōu)先教學(xué)策略,借助Alice3編程環(huán)境,輔助學(xué)生對(duì)Java面向?qū)ο蟾拍畹膶W(xué)習(xí)。
二、對(duì)象優(yōu)先教學(xué)策略
對(duì)象優(yōu)先教學(xué)策略是從一開始就強(qiáng)調(diào)面向?qū)ο蟮木幊毯驮O(shè)計(jì)原則,直接從對(duì)象和繼承開始,然后再介紹程序的結(jié)構(gòu)和語法規(guī)則,且這些知識(shí)的學(xué)習(xí)總是在面向?qū)ο笤O(shè)計(jì)的環(huán)境中進(jìn)行的[1]。在這種教學(xué)策略下,Java程序設(shè)計(jì)的學(xué)習(xí)更關(guān)注從整體結(jié)構(gòu)和架構(gòu)出發(fā)而進(jìn)行編程。且學(xué)生的學(xué)習(xí)從對(duì)象出發(fā),所有知識(shí)體系的講授也都是環(huán)繞對(duì)象進(jìn)行,讓學(xué)生更容易接受面向?qū)ο蟮乃枷?,更能學(xué)會(huì)運(yùn)用面向?qū)ο蟮乃季S去解決問題。
采用對(duì)象優(yōu)先教學(xué)策略,要借助面向?qū)ο蟮妮o助學(xué)習(xí)軟件:如BlueJ、Greenfoot、Alice等。本文依托Alice3將對(duì)象優(yōu)先教學(xué)策略應(yīng)用于實(shí)際教學(xué)中。
三、Alice3概述
Alice3編程環(huán)境中提供不同類別的三維模型,使用者可以用這些模型在虛擬世界中構(gòu)建不同的三維動(dòng)畫場(chǎng)景。場(chǎng)景中每一個(gè)可視單元都是一個(gè)對(duì)象,針對(duì)不同的對(duì)象,Alice會(huì)提供基本的屬性和方法,通過偽代碼程序塊的拖拽就可以創(chuàng)作簡(jiǎn)單的動(dòng)畫或小游戲[2],如圖1:
Alice3同時(shí)支持偽代碼和Java代碼,且兩者可互相轉(zhuǎn)化。在netbean中,也提供了Alice3的plugin(插件)[3],學(xué)生可以針對(duì)每個(gè)對(duì)象在netbean編譯環(huán)境中編寫新的方法,實(shí)現(xiàn)更復(fù)雜、多功能的動(dòng)畫設(shè)計(jì)。
四、以循環(huán)結(jié)構(gòu)為例的教學(xué)實(shí)施過程
下面以Java程序設(shè)計(jì)中的循環(huán)結(jié)構(gòu)為例,簡(jiǎn)述對(duì)象優(yōu)先策略和Alice3相結(jié)合的具體教學(xué)實(shí)施。
(一)激趣導(dǎo)入——入境激情
課前教師布置作業(yè),要求學(xué)生觀察生活中周而復(fù)始循環(huán)往復(fù)現(xiàn)象。課上首先讓學(xué)生觀看《大話西游》中至尊寶利用月光寶盒不斷返回過去解救白晶晶的片段,結(jié)合課前作業(yè),引出循環(huán)結(jié)構(gòu)的教學(xué)內(nèi)容。
(二)感知循環(huán)——探究動(dòng)情
布置任務(wù),借助Alice3結(jié)合netbean編程完成大魚吃小魚的三維場(chǎng)景的制作。學(xué)生利用舊知識(shí)順序結(jié)構(gòu)完成任務(wù),但同時(shí)也會(huì)提出問題:怎樣優(yōu)化多次重復(fù)調(diào)用方法的代碼結(jié)構(gòu)。此環(huán)節(jié)創(chuàng)建學(xué)習(xí)動(dòng)機(jī),經(jīng)歷嘗試完成任務(wù)、遇到問題這兩個(gè)階段,學(xué)生迫切想要知道解決方法,為后續(xù)探索新知提供了動(dòng)力。
接下來,教師引導(dǎo)學(xué)生觀察探究動(dòng)畫中對(duì)象(大魚和小魚)一直重復(fù)的動(dòng)作,直觀地讓學(xué)生體驗(yàn)循環(huán)的過程,并在感性認(rèn)識(shí)的基礎(chǔ)上引導(dǎo)學(xué)生抽象出循環(huán)相關(guān)概念。
了解了循環(huán)的相關(guān)概念后,教師組織學(xué)生在Alice中,拖動(dòng)偽代碼程序模塊,用近似人類語言的偽代碼完成任務(wù)要求的內(nèi)容,逐步形成循環(huán)思維,如圖2。在程序語言設(shè)計(jì)中,思維的培養(yǎng)更為重要,只有編程思維才真正具有遷移性。
(三)實(shí)現(xiàn)循環(huán)——解疑移情
學(xué)生利用Alice平臺(tái),將上一環(huán)節(jié)中拖動(dòng)的循環(huán)思維的偽代碼程序模塊轉(zhuǎn)換成Java代碼,將循環(huán)思想與Java中while循環(huán)語句相對(duì)照,嘗試總結(jié)出while語句的語法規(guī)則,如圖3。此環(huán)節(jié)的代碼轉(zhuǎn)換,為學(xué)生在循環(huán)思維和Java循環(huán)語句間搭建橋梁,讓學(xué)生自主探究有所依據(jù),輔助學(xué)生建構(gòu)新的理論知識(shí);同時(shí)布置進(jìn)階任務(wù),讓學(xué)生通過知識(shí)的遷移,逐漸掌握循環(huán)語法規(guī)則;
(四)應(yīng)用循環(huán)——實(shí)踐縱情
教師再給出幾個(gè)不同情景,學(xué)生在三維虛擬平臺(tái)中搭建虛擬場(chǎng)景,在Java編譯環(huán)境中編寫代碼,實(shí)現(xiàn)虛擬場(chǎng)景構(gòu)建與編程的完美融合。在此環(huán)節(jié)通過動(dòng)畫設(shè)計(jì)培養(yǎng)學(xué)生創(chuàng)造創(chuàng)新能力,又利用所學(xué)知識(shí)解決不同情景問題,鍛煉學(xué)生的聚合思維。
(五)展示評(píng)價(jià)——評(píng)述析情
最后小組代表展示組內(nèi)優(yōu)秀作品,教師依次對(duì)作品簡(jiǎn)單點(diǎn)評(píng)。學(xué)生登錄教學(xué)平臺(tái)展開自主評(píng)價(jià),并進(jìn)行組間投票,選出最佳作品。本環(huán)節(jié)學(xué)生展示作品盡顯風(fēng)采,也將過程性評(píng)價(jià)和總結(jié)性評(píng)價(jià)貫徹課堂始終。
五、結(jié)束語
在對(duì)象優(yōu)先教學(xué)策略的運(yùn)用和Alice3的輔助下,學(xué)生在課堂上表現(xiàn)出了濃厚的興趣,學(xué)習(xí)效率和積極性得到很大的提高,創(chuàng)新能力和自主學(xué)習(xí)能力也有所體現(xiàn)。課程設(shè)計(jì)中知識(shí)難度循序漸進(jìn),符合學(xué)生認(rèn)知規(guī)律,降低了學(xué)習(xí)坡度,使得學(xué)生接受起來更加容易。但若想在課程中使用Alice3作為輔助軟件,需要提前花一定時(shí)間教授學(xué)生如何正確的使用。且如何能自然的從Alice過渡到Java內(nèi)容的講解也需要教師更巧妙的思考和設(shè)計(jì)。
參考文獻(xiàn):
[1]王秀平.試論計(jì)算機(jī)科學(xué)入門課程中的對(duì)象優(yōu)先教學(xué)法[J]現(xiàn)代計(jì)算機(jī),2008,(2):50-51
[2]陳蕓.利用Alice三維虛擬世界進(jìn)行程序設(shè)計(jì)入門教學(xué)[J]計(jì)算機(jī)教育,2007,(9):160-162
[3]Dann W,Cosgrove D,Slater D,et al. Mediated transfer:Alice3 to java[C].technicalsymposium on computer science education, 2012: 141-146