摘 要: Java語(yǔ)言憑借其平臺(tái)無(wú)關(guān)性、開(kāi)放性及安全性等特點(diǎn)有著較為廣闊的應(yīng)用前景。通過(guò)分析Java程序設(shè)計(jì)課程在教學(xué)中存在的一系列問(wèn)題,提出了體驗(yàn)項(xiàng)目貫穿的教學(xué)方法,闡述了如何進(jìn)行項(xiàng)目的選擇與拆分、Java技術(shù)體系和學(xué)習(xí)地圖的搭建、立體化教學(xué)資源的構(gòu)建,以提高課程的教學(xué)效果,滿(mǎn)足社會(huì)需要。
關(guān)鍵詞: 項(xiàng)目驅(qū)動(dòng); Java程序設(shè)計(jì); 項(xiàng)目拆分; 學(xué)習(xí)地圖; 立體化教學(xué)資源
中圖分類(lèi)號(hào):G642 文獻(xiàn)標(biāo)志碼:A 文章編號(hào):1006-8228(2014)05-64-02
Abstract: Having the characteristics of independence, openness and security, the language of Java has shown application prospects. The present situation of "Java program design" course is analyzed. In order to improve teaching effect and meet the needs of community, the method of experience project throughout teaching is proposed. The selection and splitting of the project, establishing Java technology system structure, learning map and building teaching resource are elaborated.
Key words: project driving; Java program design; project split; learning map; three-dimensional teaching resource
0 引言
Java是一種廣泛使用的網(wǎng)絡(luò)編程語(yǔ)言,它具有簡(jiǎn)單、面向?qū)ο?、平臺(tái)無(wú)關(guān)、安全和并發(fā)等特點(diǎn)。Java提供了豐富的類(lèi)庫(kù),程序設(shè)計(jì)者可以方便地建立自己的系統(tǒng)[1]。Java已經(jīng)成為編程語(yǔ)言的驕子,越來(lái)越多的大學(xué)在講授數(shù)據(jù)結(jié)構(gòu)、程序設(shè)計(jì)和算法分析等課程時(shí),選擇以Java語(yǔ)言為載體。2009年4月Java的東家Sun公司被甲骨文公司收購(gòu),但這并未阻止Java發(fā)展的步伐。Java在Web、移動(dòng)設(shè)備以及云計(jì)算方面前景依舊非常廣闊。隨著云計(jì)算以及移動(dòng)領(lǐng)域的擴(kuò)張,更多的企業(yè)考慮將其應(yīng)用部署在Java平臺(tái)上,無(wú)論是本地主機(jī)還是公共云,Java都是目前最合適的選擇。Java技術(shù)的開(kāi)放性、安全性和龐大的社會(huì)已有資源,以及其跨平臺(tái)性,即“一次編寫(xiě),隨處運(yùn)行”的特點(diǎn),使Java技術(shù)成為智能手機(jī)軟件平臺(tái)的實(shí)施標(biāo)準(zhǔn)。采用Java技術(shù)后,編寫(xiě)的應(yīng)用程序和提供服務(wù)的人就不必關(guān)心接收其服務(wù)的手機(jī)采用的是什么操作系統(tǒng)和芯片;同樣,生產(chǎn)手機(jī)的廠(chǎng)商也不必顧慮將來(lái)誰(shuí)來(lái)提供增值服務(wù)。
1 Java程序設(shè)計(jì)教學(xué)中存在的問(wèn)題
Java語(yǔ)言概念多、實(shí)踐性強(qiáng)、涉及面廣,采取的是面向?qū)ο蟮脑O(shè)計(jì)思路編程。傳統(tǒng)的程序語(yǔ)言教學(xué)通常是以知識(shí)點(diǎn)的層次遞進(jìn)為體系[2-3]。Java程序設(shè)計(jì)就是按照J(rèn)ava程序基本結(jié)構(gòu)、標(biāo)識(shí)符、運(yùn)算符、語(yǔ)句、類(lèi)、繼承、接口、線(xiàn)程、文件、swing、網(wǎng)絡(luò)編程和數(shù)據(jù)庫(kù)等知識(shí)點(diǎn)層次以遞進(jìn)方式來(lái)展開(kāi)教學(xué)的。在學(xué)習(xí)每個(gè)知識(shí)點(diǎn)時(shí),采用的是“理論講解+程序演示”的模式,即講解一個(gè)知識(shí)點(diǎn),然后演示一個(gè)針對(duì)相關(guān)知識(shí)點(diǎn)的例子,所舉例題都屬于驗(yàn)證型的演示,這種方式有利于學(xué)生掌握相關(guān)知識(shí)點(diǎn),然而學(xué)生并不理解它們的實(shí)際應(yīng)用場(chǎng)景。例如,在講接口的概念時(shí),教師通常會(huì)編寫(xiě)一個(gè)關(guān)于接口使用的例題,通過(guò)例題的講解與演示,學(xué)生基本能掌握接口的定義與使用的語(yǔ)法,但學(xué)生并不知道到底為什么要引入接口,因?yàn)轵?yàn)證型的例題相對(duì)來(lái)說(shuō)比較短,甚至去掉接口直接用抽象類(lèi)完全可以實(shí)現(xiàn)相應(yīng)功能。學(xué)生對(duì)于應(yīng)用場(chǎng)景的困惑,會(huì)導(dǎo)致在實(shí)際程序的編寫(xiě)過(guò)程中不知道什么時(shí)候應(yīng)該用接口。因此,這種純粹按照J(rèn)ava知識(shí)體系推進(jìn)知識(shí)點(diǎn)的學(xué)習(xí),缺少主線(xiàn)貫穿的教學(xué)方式,暴露出的問(wèn)題也越來(lái)越多:①學(xué)生長(zhǎng)期處于被動(dòng)地接受狀態(tài),只重視各知識(shí)點(diǎn)的理解和掌握,沒(méi)有應(yīng)用場(chǎng)景或其他主線(xiàn)來(lái)貫穿這些知識(shí)點(diǎn),學(xué)習(xí)的積極性會(huì)大大降低,所學(xué)知識(shí)點(diǎn)也不成體系,很容易忘記;②學(xué)生綜合利用所學(xué)知識(shí)解決實(shí)際問(wèn)題的能力差,滿(mǎn)足于知識(shí)點(diǎn)的學(xué)習(xí)和例題的練習(xí)上,沒(méi)有參與到實(shí)際項(xiàng)目的開(kāi)發(fā),無(wú)法直接感受所學(xué)知識(shí)在實(shí)際工作中的作用和地位;③考核方式單一,采用單一卷面考核方式,考察重點(diǎn)偏向于了解學(xué)生掌握知識(shí)的多少,導(dǎo)致教師的教學(xué)重點(diǎn)偏向課本的知識(shí)點(diǎn)而忽略學(xué)生實(shí)際動(dòng)手編程能力的培養(yǎng)。
2 項(xiàng)目驅(qū)動(dòng)在Java程序設(shè)計(jì)中的應(yīng)用
2.1 項(xiàng)目的選擇與拆解
項(xiàng)目驅(qū)動(dòng)教學(xué)法是指在教學(xué)過(guò)程中,以學(xué)生為中心,把一個(gè)項(xiàng)目拆解成若干個(gè)子項(xiàng)目,然后提煉出各子項(xiàng)目所涉及到的知識(shí)點(diǎn)[4-5]。通過(guò)項(xiàng)目為主線(xiàn),把相關(guān)知識(shí)點(diǎn)串聯(lián)起來(lái),讓學(xué)生從體驗(yàn)項(xiàng)目中找到學(xué)習(xí)的興趣,明確學(xué)習(xí)目標(biāo),掌握對(duì)應(yīng)知識(shí)點(diǎn)的應(yīng)用場(chǎng)景,提高利用所學(xué)知識(shí)解決實(shí)際問(wèn)題的能力,轉(zhuǎn)變學(xué)生被動(dòng)接受的角色,做到理論聯(lián)系實(shí)際,學(xué)會(huì)融會(huì)貫通[6]。
項(xiàng)目的選擇尤為重要,Java程序設(shè)計(jì)這門(mén)課程主要介紹Java基礎(chǔ),包括:JDK文檔的使用、類(lèi)的設(shè)計(jì)模式,定制自己需要的類(lèi),異常、IO操作、線(xiàn)程、數(shù)據(jù)集合,Swing、Java2D和常用實(shí)用類(lèi)等。因此所選擇的項(xiàng)目不應(yīng)超出Java基礎(chǔ)知識(shí)的范圍。
讓學(xué)生體驗(yàn)項(xiàng)目功能的同時(shí),列出實(shí)現(xiàn)項(xiàng)目所需的技術(shù),以及所需技術(shù)的學(xué)習(xí)資源,這些資源可分為兩類(lèi),一類(lèi)是在學(xué)歷課程中覆蓋,另一類(lèi)是通過(guò)第二課堂獲取。 學(xué)歷課程中覆蓋的多少根據(jù)教學(xué)計(jì)劃中安排的課時(shí)數(shù)而定,第二課堂中資源可包括教師錄制的一些視頻、ppt和切割的項(xiàng)目包等資源,以此來(lái)彌補(bǔ)課時(shí)的不足,這樣可以既有自己的辦學(xué)特色,又培養(yǎng)了應(yīng)用型人才,提高學(xué)生的就業(yè)質(zhì)量。
在教學(xué)過(guò)程中,可以通過(guò)幾個(gè)經(jīng)典類(lèi)型的項(xiàng)目來(lái)貫穿。第一類(lèi)項(xiàng)目為桌面游戲類(lèi),如掃雷游戲,掃雷游戲可以拆分成按難度等級(jí)生成界面,英雄榜,背景音樂(lè)播放等模塊,所涉及到的相關(guān)技術(shù)包括面向?qū)ο笤O(shè)計(jì)、Java swing、IO操作和常用類(lèi)的使用等,可以在相關(guān)知識(shí)點(diǎn)的學(xué)習(xí)之后來(lái)完成相應(yīng)模塊,隨著新知識(shí)的學(xué)習(xí),不斷進(jìn)行完善,最后形成相對(duì)完整的項(xiàng)目。第二類(lèi)項(xiàng)目為信息管理系統(tǒng),如學(xué)生信息管理系統(tǒng),這個(gè)項(xiàng)目涉及到的技術(shù)包括JDBC和Java swing的一些高級(jí)組件及事件驅(qū)動(dòng),如學(xué)習(xí)了Java swing中的相應(yīng)組件和布局之后就能完成界面的搭建,學(xué)習(xí)了事件驅(qū)動(dòng)之后,再將相應(yīng)組件上加上事件處理。學(xué)習(xí)JDBC之后,要在項(xiàng)目中加上數(shù)據(jù)庫(kù)的相應(yīng)操作,這樣當(dāng)所有知識(shí)點(diǎn)學(xué)完之后,學(xué)生信息管理項(xiàng)目也基本完成。第三類(lèi)項(xiàng)目選擇如Java QQ之類(lèi)的項(xiàng)目,這個(gè)項(xiàng)目涉及到集合類(lèi)、多線(xiàn)程、IO流、網(wǎng)絡(luò)編程等相關(guān)知識(shí)。動(dòng)手的過(guò)程,同樣是按照知識(shí)點(diǎn)進(jìn)行切割,不斷填充整個(gè)項(xiàng)目。在項(xiàng)目貫穿的過(guò)程中,要注意對(duì)項(xiàng)目進(jìn)行按功能模塊進(jìn)行切割,這樣不僅便于學(xué)生學(xué)習(xí)各個(gè)知識(shí)點(diǎn),而且讓學(xué)生明白如何運(yùn)用所學(xué)知識(shí)編程解決實(shí)際問(wèn)題。
2.2 搭建完整的Java技術(shù)體系與學(xué)習(xí)地圖
Java的學(xué)習(xí),從Java開(kāi)發(fā)環(huán)境開(kāi)始,到Java語(yǔ)法,再到Java的核心API。主要分為四部分。
⑴ Java開(kāi)發(fā)入門(mén):Java開(kāi)發(fā)環(huán)境的安裝與使用,包括JDK命令、Eclipse IDE下Java程序開(kāi)發(fā)和部署。
⑵ Java語(yǔ)法基礎(chǔ):基于JDK和Eclipse環(huán)境,Java核心功能開(kāi)發(fā),掌握J(rèn)ava面向?qū)ο蟮恼Z(yǔ)法構(gòu)成,包括類(lèi)、抽象類(lèi)、接口、靜態(tài)類(lèi)、匿名類(lèi)、內(nèi)部類(lèi)、異常類(lèi)的編寫(xiě)。
⑶ Java 核心API:Java核心編程、Java圖形編程和Java網(wǎng)絡(luò)編程。
⑷ Java高級(jí)特性包括反射、泛型,以及Java自動(dòng)裝箱和拆箱、枚舉類(lèi)靜態(tài)導(dǎo)入等高級(jí)特性。
在Java的學(xué)習(xí)過(guò)程中,完整的Java技術(shù)體系與學(xué)習(xí)地圖的重要性越來(lái)越突顯,理解Java技術(shù)體系與學(xué)習(xí)地圖中的重點(diǎn)、難點(diǎn),做到有的放矢。一方面,教師將相關(guān)技術(shù)知識(shí)點(diǎn)融入學(xué)歷教育、第二課堂與在線(xiàn)教育平臺(tái)中,按學(xué)生不同能力層次開(kāi)設(shè),因材施教;另一方面,學(xué)生可以根據(jù)自己的能力和興趣,獲取更多的專(zhuān)業(yè)知識(shí)。
3 構(gòu)建“立體化”教育資源
由于相關(guān)知識(shí)點(diǎn)是分別融入到學(xué)歷教育、第二課堂和在線(xiàn)教育平臺(tái)中,因此相關(guān)資源的開(kāi)放顯得尤為重要,教師應(yīng)為學(xué)生建立相應(yīng)課程的教學(xué)平臺(tái),提供“立體化”的教育資源。平臺(tái)中應(yīng)包括學(xué)歷教育中所涉及知識(shí)點(diǎn)的大綱、課程ppt、實(shí)驗(yàn)案例、實(shí)驗(yàn)指導(dǎo)手冊(cè)及體驗(yàn)項(xiàng)目工程包等,學(xué)生可以利用課余時(shí)間鞏固課堂內(nèi)的知識(shí)及完善課堂中的項(xiàng)目?jī)?nèi)容。另外對(duì)于課堂外的相關(guān)教學(xué)資源也應(yīng)適當(dāng)提供給學(xué)生,有能力和興趣的學(xué)生可以充分利用所提供的資源,如一些授課視頻及練習(xí)經(jīng)典習(xí)題等,獲得一些學(xué)歷外的知識(shí)和一些拔高技能,做到因材施教,培養(yǎng)學(xué)生的動(dòng)手編程能力,提高學(xué)生的就業(yè)機(jī)會(huì)。
4 結(jié)束語(yǔ)
本文針對(duì)Java程序設(shè)計(jì)課程在教學(xué)中存在的一系列問(wèn)題,提出了以項(xiàng)目為主線(xiàn)貫穿知識(shí)點(diǎn)進(jìn)行教學(xué),并把知識(shí)點(diǎn)按實(shí)際情況分解到課堂教育和第二課堂中。實(shí)踐證明,這種因材施教的項(xiàng)目貫穿的教學(xué)方式,可以提高課堂教學(xué)的趣味性,減少學(xué)生在學(xué)習(xí)知識(shí)點(diǎn)時(shí)的茫然和困惑,提高學(xué)生對(duì)各知識(shí)點(diǎn)的綜合能力,進(jìn)而提高其編程和解決實(shí)際問(wèn)題的能力。
參考文獻(xiàn):
[1] 耿祥義,張躍平.Java程序設(shè)計(jì)精編教程[M].清華大學(xué)出版社,2010.
[2] 馮林,鄭薇薇.“任務(wù)驅(qū)動(dòng)”與“項(xiàng)目驅(qū)動(dòng)”相結(jié)合的創(chuàng)新教育研究[J].
黑龍江教育,2010.4:57-59
[3] 徐靜.卓越工程師培養(yǎng)計(jì)劃下“Java程序設(shè)計(jì)”課程改革[J].計(jì)算機(jī)時(shí)
代,2013.9:65-66
[4] 張耀明.“項(xiàng)目驅(qū)動(dòng)+案例教學(xué)”模式在軟件工程教學(xué)中的應(yīng)用[J].中
國(guó)職業(yè)技術(shù)教育,2012.8:57-60
[5] 柯勝男,黃明和,雷剛.基于“項(xiàng)目驅(qū)動(dòng)”的教學(xué)研究與探索 [J].計(jì)算機(jī)
教育,2007.4:25-27
[6] 姜大志,孫浩軍.基于CDIO的主動(dòng)式項(xiàng)目驅(qū)動(dòng)學(xué)習(xí)方法研究[J].高等
工程教育研究,2012.4:159-164