摘要:java程序設(shè)計(jì)對(duì)計(jì)算機(jī)相關(guān)專業(yè)的學(xué)生是一門非常重要且實(shí)踐性很強(qiáng)的課程,文章針對(duì)傳統(tǒng)授課方式所產(chǎn)生的一系列問題,提出了模塊化項(xiàng)目驅(qū)動(dòng)的授課新模式,并詳細(xì)介紹了這種新的授課方式在具體實(shí)施中的應(yīng)用及效果。
關(guān)鍵詞:java程序設(shè)計(jì);模塊教學(xué);項(xiàng)目驅(qū)動(dòng)
Java是1995年由Sun公司組織開發(fā)的一種編程語言。時(shí)至今日,Java已經(jīng)發(fā)展為一個(gè)覆蓋面廣、效率高、易用性強(qiáng)的技術(shù)平臺(tái),它不僅可以用來開發(fā)大型的桌面應(yīng)用程序,而且特別適合于Internet的應(yīng)用開發(fā),是一門正在被廣泛使用的編程語言。[1]
在整門課程設(shè)計(jì)中,要體現(xiàn)以就業(yè)為導(dǎo)向,以能力為本位——按照“實(shí)際、實(shí)用和實(shí)踐”的教育思想,堅(jiān)持“學(xué)中做,做中悟”的原則,以理解、編程和應(yīng)用[2]為教學(xué)目標(biāo),通過理論課和實(shí)驗(yàn)課的結(jié)合,讓學(xué)生積極主動(dòng)地參與到課程的學(xué)習(xí)中[3]。
一、傳統(tǒng)教學(xué)存在的問題
java程序設(shè)計(jì)是實(shí)踐性非常強(qiáng)的一門課程,一般由理論課和實(shí)驗(yàn)課組成。在傳統(tǒng)教學(xué)中,理論課會(huì)分章節(jié)介紹java語言及相關(guān)技術(shù),教師都是先從概念上開始講解,比如什么是類,什么是多線程,什么是JDBC,然后針對(duì)程序片段來介紹相關(guān)語法和編程規(guī)范,如類的聲明中可以包含成員變量和成員方法,多線程可以有繼承和接口實(shí)現(xiàn)兩種方式,用java對(duì)數(shù)據(jù)庫操作必須有哪幾個(gè)步驟,最后通過一些小的實(shí)例讓學(xué)生結(jié)合實(shí)際掌握相關(guān)技術(shù)的用法,如何用類及其相關(guān)特性來聲明員工和管理者,如何用多線程實(shí)現(xiàn)多窗口售票,如何用數(shù)據(jù)庫保存用戶信息等等。同時(shí)在實(shí)驗(yàn)課上,教師會(huì)針對(duì)每個(gè)章節(jié)的知識(shí)點(diǎn)讓學(xué)生通過練習(xí)進(jìn)一步熟悉java語言的一些特性及用法,鍛煉獨(dú)立編程和解決問題的能力。但是這種當(dāng)前普遍采取的教學(xué)方式,還存在以下不足:
?。?)課堂教學(xué)形式陳舊,都是以教師為中心進(jìn)行灌輸式的教學(xué),導(dǎo)致學(xué)生上課注意力很難集中,師生之間缺乏互動(dòng),課堂效果不理想。
(2)這門課程涉及知識(shí)點(diǎn)多,但各個(gè)章節(jié)內(nèi)容比較分散,連貫性差,不同的知識(shí)點(diǎn)相對(duì)獨(dú)立,難以讓學(xué)生對(duì)java語言形成一個(gè)整體的感受,部分學(xué)生在學(xué)后面的知識(shí)點(diǎn)時(shí),前面的內(nèi)容已經(jīng)忘掉,會(huì)影響后續(xù)課程的展開。
?。?)學(xué)完整門課程后,學(xué)生只感覺多學(xué)了一門編程語言,學(xué)習(xí)成就感和成果激勵(lì)性差,很難體會(huì)java語言在解決實(shí)際問題中的功效,更無法將其應(yīng)用在實(shí)際的項(xiàng)目中,一定程度上影響到學(xué)生將來的就業(yè)。
?。?)雖然實(shí)驗(yàn)課的設(shè)置讓學(xué)生有了動(dòng)手編程的機(jī)會(huì),但往往是教師為了讓學(xué)生掌握理論課中的概念和java語法,實(shí)驗(yàn)課前生搬硬套地出一些題目,實(shí)驗(yàn)課中學(xué)生只是為了完成任務(wù)而做實(shí)驗(yàn),動(dòng)力不足,主觀能動(dòng)性差,缺乏真正參與項(xiàng)目的成就感。
?。?)傳統(tǒng)的卷面測(cè)試也使部分學(xué)生產(chǎn)生了只要背背知識(shí)點(diǎn)通過考試就行、實(shí)踐無所謂的錯(cuò)誤觀念,忽視了學(xué)生課程學(xué)習(xí)能力的培養(yǎng)。
二、授課方案分析
為了解決傳統(tǒng)教學(xué)問題,通過對(duì)java程序設(shè)計(jì)課程的反復(fù)研究及日常的教學(xué)實(shí)踐,我們總結(jié)了一套針對(duì)本門課程的模塊化項(xiàng)目驅(qū)動(dòng)授課方案,方案如下:
1.方案總體思路
對(duì)于學(xué)生而言,相比已學(xué)過的面向過程的編程語言,java涉及的內(nèi)容比較多,學(xué)起來比較困難,為了打消學(xué)生畏懼心理,提高學(xué)生的編程興趣和動(dòng)手能力,使學(xué)生能循序漸進(jìn)地掌握java語言相關(guān)技術(shù),可將java課程分成以下三個(gè)模塊來講解:(1)基礎(chǔ)篇——java基本語法,面向?qū)ο缶幊?;?)提高篇——java類庫、多線程和數(shù)據(jù)庫操作;(3)應(yīng)用篇——桌面應(yīng)用程序和web項(xiàng)目的開發(fā)。
三個(gè)模塊由簡(jiǎn)入深,從基礎(chǔ)到應(yīng)用構(gòu)成一個(gè)完整的課程體系,前面的模塊學(xué)不好不但會(huì)影響到后續(xù)課程,且會(huì)影響學(xué)生的學(xué)習(xí)積極性。所以在分模塊教學(xué)的同時(shí),也要注意課程的連貫性。為了激發(fā)學(xué)生學(xué)習(xí)的熱情,增強(qiáng)學(xué)生的自信心并體會(huì)學(xué)習(xí)過程中帶來的成就感,課程將采取項(xiàng)目驅(qū)動(dòng)教學(xué)法,結(jié)合理論課和實(shí)驗(yàn)課,將一個(gè)簡(jiǎn)單的學(xué)生管理系統(tǒng)貫穿課程的始終。從基礎(chǔ)語法到面向?qū)ο蟮母拍詈吞匦?、以及后面的網(wǎng)絡(luò)、多線程和數(shù)據(jù)庫等高級(jí)操作,直至用JavaEE相關(guān)技術(shù)完成一個(gè)完整的應(yīng)用系統(tǒng)。通過這種授課方式讓學(xué)生對(duì)抽象的編程語言有更形象的感受,這不但有助于學(xué)生對(duì)新知識(shí)的接受和記憶,同時(shí)也可以讓每個(gè)學(xué)生都參與到課程的學(xué)習(xí)中,師生交互和學(xué)生的主觀能動(dòng)性都大大增強(qiáng)。
2.課程的具體安排
?。?)基礎(chǔ)篇教學(xué)?;A(chǔ)篇的目的除了讓學(xué)生掌握java語言在數(shù)據(jù)類型、表達(dá)式、程序流程等幾方面和其他編程語言的異同,更重要的是讓學(xué)生學(xué)會(huì)用面向?qū)ο蟮木幊趟枷虢鉀Q實(shí)際問題。這一部分的教學(xué)重點(diǎn)應(yīng)該讓學(xué)生在理解類和對(duì)象的概念的同時(shí)掌握面向?qū)ο蟮某橄?、封裝、繼承、多態(tài)等特性。
針對(duì)溫州醫(yī)學(xué)院的學(xué)生管理系統(tǒng),可以用“學(xué)生類”封裝學(xué)生信息,每個(gè)學(xué)生是一個(gè)對(duì)象,通過這種方式讓學(xué)生理解類和對(duì)象的概念,并明白抽象和封裝的含義。在介紹具體語法時(shí),可以分析學(xué)生的姓名、性別等實(shí)例屬性及學(xué)校、在校人數(shù)等類屬性的區(qū)別和定義方式,同時(shí)涉及入校、畢業(yè)、轉(zhuǎn)專業(yè)等方法的實(shí)現(xiàn)。課堂中還可以通過創(chuàng)建學(xué)生對(duì)象并模擬學(xué)生行為的方式來讓學(xué)生理解相關(guān)原理并掌握編程規(guī)范。
在講繼承時(shí),在“學(xué)生類”的基礎(chǔ)上,理解本科生和研究生是學(xué)生的子類,重用學(xué)生共性的基礎(chǔ)上,本科生和研究生有各自特定的專業(yè)和研究方向。另外,在某些行為上有區(qū)別于父類的實(shí)現(xiàn)方式,如畢業(yè)時(shí)獲取的學(xué)位不同等。通過這個(gè)項(xiàng)目讓學(xué)生理解繼承在java中的應(yīng)用。
學(xué)生在??梢詤⑴c很多活動(dòng),如注冊(cè)繳費(fèi)、選課、獎(jiǎng)學(xué)金評(píng)定等,不同的活動(dòng)涉及一系列的行為,可以為這些活動(dòng)定義相應(yīng)的接口,并在已有的類中實(shí)現(xiàn)多個(gè)接口。同樣是學(xué)生,但由于學(xué)歷或身份不同,某些行為實(shí)現(xiàn)也不同,可以借此讓學(xué)生理解多態(tài)在實(shí)際項(xiàng)目中的應(yīng)用。在實(shí)驗(yàn)課中根據(jù)學(xué)生參與的各類活動(dòng)編寫相關(guān)接口,并完善項(xiàng)目中涉及的類。
?。?)提高篇教學(xué)。提高篇的目的是讓學(xué)生掌握java語言的一些實(shí)用的高級(jí)操作,重點(diǎn)是java基礎(chǔ)類庫、多線程、數(shù)據(jù)庫操作的原理和相關(guān)技術(shù)。這一部分可以在基礎(chǔ)篇搭建的類的框架基礎(chǔ)上針對(duì)某些特定功能繼續(xù)展開。
Java基礎(chǔ)類庫涉及字符串、數(shù)學(xué)運(yùn)算、集合操作等很多常用功能,在項(xiàng)目中可以通過在學(xué)生的成績(jī)計(jì)算、排名、統(tǒng)計(jì)等成員方法中講解java API的使用。多線程在學(xué)生管理系統(tǒng)中的應(yīng)用十分廣泛,課堂上可以學(xué)生選課為例子,模擬多個(gè)學(xué)生同時(shí)選課,保證每門選課課程的時(shí)間及人數(shù)來向?qū)W生講解在java中使用多線程編程的機(jī)制和方法。數(shù)據(jù)庫的操作對(duì)后面開發(fā)學(xué)生管理的應(yīng)用軟件或網(wǎng)站十分關(guān)鍵。課堂上,讓學(xué)生理解學(xué)生信息管理系統(tǒng)的所有數(shù)據(jù)都應(yīng)該保存在數(shù)據(jù)庫中。包括學(xué)生信息、選課信息等都可通過JDBC的特定步驟實(shí)現(xiàn)記錄的增刪改查。
?。?)應(yīng)用篇教學(xué)。經(jīng)過上面兩個(gè)部分的學(xué)習(xí),通過理論課上的講解和實(shí)驗(yàn)課中的實(shí)踐,整個(gè)項(xiàng)目涉及的類已經(jīng)基本完成,相應(yīng)的方法也都已經(jīng)實(shí)現(xiàn),接下來在應(yīng)用篇中重點(diǎn)是向用戶介紹java在桌面和web應(yīng)用程序領(lǐng)域中的應(yīng)用。
無論是講解java桌面程序的圖形界面還是javaEE動(dòng)態(tài)網(wǎng)頁技術(shù),教師都應(yīng)該先引導(dǎo)學(xué)生根據(jù)項(xiàng)目的類型規(guī)劃工程(Project),將之前的所有程序引入到合適的目錄中。在這個(gè)基礎(chǔ)上以學(xué)生注冊(cè)或選課為例,講解圖形界面或網(wǎng)頁開發(fā)中涉及到的問題,如果是圖形界面就要講解用戶交互時(shí)所使用的控件及相關(guān)事件,如果是動(dòng)態(tài)網(wǎng)頁,則要重點(diǎn)介紹servlet和jsp的運(yùn)行原理及頁面對(duì)象在網(wǎng)站中的使用。將之前的測(cè)試方法替換成真正的界面或網(wǎng)頁,通過和用戶的交互,調(diào)用之前編好的類,完成業(yè)務(wù)方法的處理和數(shù)據(jù)的操作。
3.方案小結(jié)
以上介紹了模塊化項(xiàng)目驅(qū)動(dòng)在java程序設(shè)計(jì)這門課程中的具體實(shí)施方法,將整個(gè)課程分成三個(gè)模塊來講解。第一模塊主要講解面向?qū)ο缶幊碳捌湔Z法,建立項(xiàng)目中涉及到的接口和類,理清類和類之間的繼承或組合關(guān)系,對(duì)于其中的一些成員方法,可以暫時(shí)用簡(jiǎn)單的幾句測(cè)試代碼代替,即,在第一模塊中建立項(xiàng)目中類的框架。第二模塊主要利用java的API來解決項(xiàng)目中涉及到的運(yùn)算、多線程、數(shù)據(jù)庫等關(guān)鍵問題,在已有類框架的基礎(chǔ)上,根據(jù)實(shí)際問題完善類的成員方法,即,在第二模塊中完成類的實(shí)現(xiàn)。第三模塊引入已有類,并編寫用戶交互界面,在特定事件發(fā)生時(shí)調(diào)用類的方法完成一個(gè)簡(jiǎn)單的學(xué)生管理系統(tǒng)。課程的教學(xué)步驟如圖1所示。
三、結(jié)語
模塊化的講解讓學(xué)生對(duì)java涉及的領(lǐng)域有清晰的認(rèn)識(shí)。用一個(gè)學(xué)生熟悉的項(xiàng)目將所有模塊聯(lián)系起來,可以讓學(xué)生從被動(dòng)地學(xué)轉(zhuǎn)化為主動(dòng)地做,學(xué)生學(xué)習(xí)課程的過程也轉(zhuǎn)變?yōu)閰⑴c項(xiàng)目的過程,這使得理論課和實(shí)驗(yàn)課聯(lián)系更加緊密,教學(xué)效果顯著提高。實(shí)踐證明,通過這種授課方式,學(xué)生對(duì)java這門編程語言的掌握程度遠(yuǎn)遠(yuǎn)超過傳統(tǒng)教學(xué)方式下的教學(xué)效果,不但理論知識(shí)學(xué)得扎實(shí),學(xué)習(xí)興趣和實(shí)踐能力都得到了顯著提高。
參考文獻(xiàn):
[1] 鄭莉.計(jì)算機(jī)入門語言講什么?[J].計(jì)算機(jī)教育,2006,(7):25-26.
?。?] 孔宇強(qiáng),鄭志材,張晶.基于實(shí)踐能力的“java語言程序設(shè)計(jì)”課程改革與探析[J].才智,2009,(3).
?。?] 招啟東.項(xiàng)目實(shí)訓(xùn)在Java課程教學(xué)中的應(yīng)用[J].時(shí)代教育,2008,(9):279.