摘要:在項(xiàng)目教學(xué)中,貫穿整個(gè)課程的綜合項(xiàng)目要優(yōu)于由多個(gè)零散的、彼此無(wú)關(guān)的小型項(xiàng)目組成的項(xiàng)目集。文章分析高職Java語(yǔ)言程序設(shè)計(jì)課程的定位和特點(diǎn),闡述貫穿項(xiàng)目的設(shè)計(jì)原則,通過(guò)一個(gè)貫穿項(xiàng)目介紹教學(xué)實(shí)施環(huán)節(jié)的特色。
關(guān)鍵詞:Java;項(xiàng)目教學(xué)法;貫穿項(xiàng)目
項(xiàng)目教學(xué)法是建立在建構(gòu)主義和情景學(xué)習(xí)理論基礎(chǔ)上體現(xiàn)行動(dòng)導(dǎo)向教育理念的教學(xué)方法,是將傳授知識(shí)為主的傳統(tǒng)教學(xué)轉(zhuǎn)變?yōu)橐酝瓿身?xiàng)目、職業(yè)體驗(yàn)和解決問(wèn)題為主的多維互動(dòng)式的教學(xué)[1]。貫穿項(xiàng)目是指能夠貫穿整個(gè)課程的綜合項(xiàng)目,在訓(xùn)練學(xué)生的職業(yè)崗位綜合能力上,教學(xué)效果明顯優(yōu)于由多個(gè)零散的、彼此無(wú)關(guān)的小型項(xiàng)目組成的項(xiàng)目集。
Java平臺(tái)系列課程是我校軟件技術(shù)專業(yè)的核心技能課程,包括Java語(yǔ)言程序設(shè)計(jì)、JSP程序設(shè)計(jì)、動(dòng)態(tài)網(wǎng)頁(yè)設(shè)計(jì)實(shí)訓(xùn)(JSP)、J2EE應(yīng)用開(kāi)發(fā)(輕量級(jí)架構(gòu))和J2EE應(yīng)用開(kāi)發(fā)實(shí)訓(xùn)5門(mén)課程。由于目前Java技術(shù)主要應(yīng)用在服務(wù)器端,后4門(mén)課程都能夠通過(guò)校企合作,把來(lái)源于企業(yè)的真實(shí)項(xiàng)目通過(guò)適當(dāng)簡(jiǎn)化和改造,作為課程教學(xué)的貫穿項(xiàng)目。但Java語(yǔ)言程序設(shè)計(jì)的教學(xué)內(nèi)容是面向?qū)ο蟪绦蛟O(shè)計(jì)的基本方法和Java技術(shù)基礎(chǔ),不足以支撐企業(yè)真實(shí)項(xiàng)目的開(kāi)發(fā),只能采用虛擬貫穿項(xiàng)目。
1貫穿項(xiàng)目的設(shè)計(jì)思路
1.1Java語(yǔ)言程序設(shè)計(jì)課程的定位
在Java語(yǔ)言程序設(shè)計(jì)課程之前,學(xué)生已經(jīng)學(xué)習(xí)過(guò)C語(yǔ)言程序設(shè)計(jì)和VB程序設(shè)計(jì),前者使學(xué)生掌握了面向過(guò)程的程序設(shè)計(jì),后者使學(xué)生接觸到基于對(duì)象的程序設(shè)計(jì)及掌握了可視化編程、事件驅(qū)動(dòng)編程。本課程是學(xué)生學(xué)習(xí)的首門(mén)真正面向?qū)ο蟮某绦蛟O(shè)計(jì)課程,也是Java技術(shù)路線的首門(mén)課程。
本課程的教學(xué)目標(biāo)應(yīng)該是“道”與“術(shù)”并重。所謂的“道”,是指面向?qū)ο蟪绦蛟O(shè)計(jì)的基本思想、基本理論、基本方法,特別是OOP的封裝性、繼承性、多態(tài)性這三大技術(shù)特征。這方面的知識(shí)與技能具有廣泛的可遷移性,對(duì)學(xué)生持續(xù)、長(zhǎng)遠(yuǎn)的發(fā)展能發(fā)揮重要作用。所謂的“術(shù)”,是指具體的Java技術(shù),包括Java開(kāi)發(fā)工具、Java語(yǔ)言基礎(chǔ)、Java類庫(kù)、異常處理、多線程、輸入輸出流、圖形用戶界面等。為了均衡各門(mén)課程的教學(xué)內(nèi)容,把JDBC安排在后繼課程JSP程序設(shè)計(jì)中,考慮到很少用Java開(kāi)發(fā)基于Socket通信的C/S架構(gòu)應(yīng)用,沒(méi)有把網(wǎng)絡(luò)編程列入教學(xué)內(nèi)容。
1.2貫穿項(xiàng)目的設(shè)計(jì)思路要點(diǎn)
對(duì)于項(xiàng)目教學(xué)法而言,項(xiàng)目的選擇與設(shè)計(jì)是成功與否的關(guān)鍵。貫穿項(xiàng)目應(yīng)該具有實(shí)用性、典型性、覆蓋性、綜合性、趣味性、挑戰(zhàn)性和可行性[2]。對(duì)于Java語(yǔ)言程序設(shè)計(jì)課程而言,貫穿項(xiàng)目的設(shè)計(jì)還應(yīng)考慮以下幾點(diǎn):
1) 突出面向?qū)ο蟪绦蛟O(shè)計(jì)的技能訓(xùn)練。
在Java語(yǔ)言程序設(shè)計(jì)課程中,不能僅著眼于使用字符串類、日期類、各種流類、圖形用戶界面組件類等現(xiàn)成的類來(lái)搭建應(yīng)用程序,不能像VB程序設(shè)計(jì)那樣止步于基于對(duì)象的編程,必須要讓學(xué)生進(jìn)入真正面向?qū)ο蟮木幊?,自己?guī)劃、設(shè)計(jì)、實(shí)現(xiàn)類,并綜合運(yùn)用自己設(shè)計(jì)和類庫(kù)提供的類來(lái)構(gòu)建應(yīng)用程序,在項(xiàng)目開(kāi)發(fā)中學(xué)習(xí)面向?qū)ο蟮姆庋b、繼承、多態(tài)等技術(shù)。
2) 強(qiáng)調(diào)支撐后繼課程的技能訓(xùn)練,不強(qiáng)調(diào)圖形用戶界面。
很多高職Java教材都沒(méi)有介紹Java集合框架,但該框架的接口和類在實(shí)際項(xiàng)目的開(kāi)發(fā)中卻經(jīng)常用到。如在后繼課程JSP程序設(shè)計(jì)中,實(shí)現(xiàn)購(gòu)物車時(shí)就要用到Map或List。而且,Java集合框架體現(xiàn)了“同一接口,不同實(shí)現(xiàn)”的思想,是向?qū)W生展現(xiàn)面向接口編程思想的上佳范例。因此,在貫穿項(xiàng)目的設(shè)計(jì)中納入了Java集合框架的內(nèi)容,把Map作為數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)。由于在后繼課程中主要開(kāi)發(fā)B/S架構(gòu)應(yīng)用,很少用到Java的GUI,而且學(xué)生已通過(guò)VB程序設(shè)計(jì)掌握了GUI設(shè)計(jì)和事件驅(qū)動(dòng)編程方法,因此不把GUI作為重點(diǎn),甚至允許學(xué)生在自選項(xiàng)目中采用字符界面。
3) 體現(xiàn)Java語(yǔ)言的新發(fā)展。
Sun公司于2003年發(fā)布的Java SE 5為Java語(yǔ)言引入了不少新特性,使Java語(yǔ)言在語(yǔ)法上有所變化?,F(xiàn)在,泛型、增強(qiáng)的循環(huán)語(yǔ)句、注解等曾經(jīng)的新特性已在業(yè)界普遍采用。遺憾的是,當(dāng)前的高職Java教材基本上都依據(jù)J2SE 1.3或J2SE 1.4的標(biāo)準(zhǔn),沒(méi)有反映Java語(yǔ)言的新變化。在設(shè)計(jì)貫穿項(xiàng)目時(shí),應(yīng)該體現(xiàn)Java語(yǔ)言的新發(fā)展,在不超出學(xué)生能力的情況下盡量采用新技術(shù)。
4) 為學(xué)生的探究性自主學(xué)習(xí)預(yù)留拓展空間。
貫穿項(xiàng)目沒(méi)有必要設(shè)計(jì)得十分完美,只要覆蓋了課程主要的知識(shí)和技能、體現(xiàn)了典型的編程思想和開(kāi)發(fā)方法即可,有些功能可以留給學(xué)生課后完善,讓優(yōu)秀的學(xué)生在探究性自主學(xué)習(xí)中提升自學(xué)能力和創(chuàng)新能力。
2貫穿項(xiàng)目的設(shè)計(jì)
我們?cè)O(shè)計(jì)了“學(xué)生信息管理系統(tǒng)”作為貫穿項(xiàng)目。該項(xiàng)目包含5個(gè)類:Student類是學(xué)生類,它有兩個(gè)子類:大專學(xué)生類CollegeStudent和培訓(xùn)班學(xué)生類Trainee。MyUtil類是一個(gè)實(shí)用工具類,提供了常用操作的靜態(tài)方法。StudentApp是應(yīng)用程序類,是一個(gè)簡(jiǎn)單的學(xué)生信息管理系統(tǒng),具有對(duì)學(xué)生信息的增、刪、改、查、全部顯示、保存等功能。所有學(xué)生的數(shù)據(jù)在內(nèi)存中用一個(gè)Map對(duì)象來(lái)組織。當(dāng)選擇“保存”操作時(shí),會(huì)把整個(gè)Map對(duì)象寫(xiě)進(jìn)文件students.dat中保存。每次運(yùn)行StudentApp應(yīng)用程序時(shí),都會(huì)從文件students.dat中重新讀出上次保存的Map對(duì)象。
把整個(gè)項(xiàng)目劃分為8個(gè)項(xiàng)目單元(第2—7單元是主體單元),每個(gè)單元都對(duì)項(xiàng)目進(jìn)行功能上的拓展:
1) 項(xiàng)目開(kāi)發(fā)環(huán)境的構(gòu)建,項(xiàng)目開(kāi)發(fā)工具的使用。
相關(guān)支撐知識(shí):①Java開(kāi)發(fā)工具的下載、安裝與使用;②編寫(xiě)、編譯和運(yùn)行兩類Java程序的方法;③虛擬機(jī)、字節(jié)碼及Java的可移植性原理。
項(xiàng)目單元結(jié)果:安裝配置好的開(kāi)發(fā)環(huán)境。
2) 分析和設(shè)計(jì)項(xiàng)目中涉及的類,創(chuàng)建項(xiàng)目中的第一個(gè)類。
相關(guān)支撐知識(shí):①?gòu)默F(xiàn)實(shí)世界對(duì)象構(gòu)造信息世界對(duì)象的基本思想;②類和對(duì)象的概念及其關(guān)系;③類的定義格式,類的變量、構(gòu)造方法、方法;④標(biāo)識(shí)符命名約定規(guī)則;⑤Java的數(shù)據(jù)類型、變量、運(yùn)算符和表達(dá)式、流程控制、方法的參數(shù)傳遞;⑥創(chuàng)建并使用對(duì)象;⑦數(shù)組;⑧存取控制,this引用,常量成員,靜態(tài)成員;⑨生成程序說(shuō)明文檔。
項(xiàng)目單元結(jié)果:創(chuàng)建了學(xué)生類Student以及測(cè)試該類的驅(qū)動(dòng)模塊。
3) 創(chuàng)建學(xué)生類的兩個(gè)子類。
相關(guān)支撐知識(shí):①類之間的繼承關(guān)系;②子類的構(gòu)造方法;③變量隱藏和方法覆蓋;④父類和子類對(duì)象的關(guān)系;⑤動(dòng)態(tài)多態(tài)機(jī)制;⑥抽象類和抽象方法;⑦包的創(chuàng)建和使用。
項(xiàng)目單元結(jié)果:創(chuàng)建了CollegeStudent類和Trainee類,以及測(cè)試它們的驅(qū)動(dòng)模塊。
4) 用交互方式輸入學(xué)生數(shù)據(jù),運(yùn)用Map來(lái)管理學(xué)生數(shù)據(jù)。
相關(guān)支撐知識(shí):①利用流進(jìn)行交互式輸入數(shù)據(jù);②包裝類的使用;③字符串類的使用;④映射表Map的使用。
項(xiàng)目單元結(jié)果:一個(gè)字符界面的學(xué)生信息管理系統(tǒng)。
5) 為項(xiàng)目增加異常處理功能。
相關(guān)支撐知識(shí):①異常處理機(jī)制;②異常的種類;③try-catch-finally語(yǔ)句;④異常的拋出;⑤自定義異常。
項(xiàng)目單元結(jié)果:一個(gè)更加健壯的字符界面的學(xué)生信息管理系統(tǒng)。
6) 利用文件保存項(xiàng)目中的學(xué)生數(shù)據(jù)。
相關(guān)支撐知識(shí):①輸入輸出流的基本概念;②常用節(jié)點(diǎn)流——文件流的使用;③常用過(guò)濾流——緩沖流的使用;④常用過(guò)濾流——對(duì)象流的使用;⑤文件和目錄管理。
項(xiàng)目單元結(jié)果:學(xué)生數(shù)據(jù)可以永久保存。
7) 為項(xiàng)目設(shè)計(jì)圖形用戶界面。
相關(guān)支撐知識(shí):①組件、容器、底層容器、布局管理的概念;②利用IDE工具設(shè)計(jì)圖形界面;③事件處理模型;④常用組件的使用及其事件處理。
項(xiàng)目單元結(jié)果:一個(gè)圖形用戶界面的學(xué)生信息管理系統(tǒng)。
8) 項(xiàng)目的交流、回顧與總結(jié)。
這個(gè)貫穿項(xiàng)目覆蓋了除多線程之外的主要教學(xué)內(nèi)容。
3貫穿項(xiàng)目的實(shí)施
在教學(xué)過(guò)程中,宏觀上采用項(xiàng)目拓展法,通過(guò)項(xiàng)目的不斷拓展來(lái)推動(dòng)課程的進(jìn)展。在微觀課堂教學(xué)中,采用任務(wù)驅(qū)動(dòng)法,教、學(xué)、做一體化,通過(guò)任務(wù)的解決實(shí)現(xiàn)必備知識(shí)、技能的學(xué)習(xí)與訓(xùn)練,在任務(wù)解決的過(guò)程中實(shí)現(xiàn)師生互動(dòng),并以學(xué)生為主體,教師作為引導(dǎo)者。
本課程的貫穿項(xiàng)目教學(xué)法有三個(gè)特色:
1) 讓學(xué)生在基本編程技能上人人過(guò)關(guān)。對(duì)于較為復(fù)雜的綜合實(shí)踐項(xiàng)目,在項(xiàng)目實(shí)施時(shí)采用小組合作的方式;而對(duì)于培養(yǎng)學(xué)生關(guān)鍵職業(yè)能力和專業(yè)方法能力的教學(xué)項(xiàng)目,學(xué)生必須一一過(guò)關(guān)和掌握,在教師的指導(dǎo)下獨(dú)立實(shí)施和完成[1]。本課程的貫穿項(xiàng)目在一個(gè)學(xué)期內(nèi)開(kāi)發(fā)完成的工作量不算很大,而且是培養(yǎng)學(xué)生的關(guān)鍵職業(yè)能力,因此由學(xué)生獨(dú)立完成。
2) 采用貫穿項(xiàng)目雙線并行,即同步地開(kāi)發(fā)兩個(gè)貫穿項(xiàng)目。在課堂上完成的“學(xué)生信息管理系統(tǒng)”作為示例項(xiàng)目,同時(shí)要求學(xué)生作為課程設(shè)計(jì)同步開(kāi)發(fā)一個(gè)自選題材的簡(jiǎn)單信息管理系統(tǒng),要求具備增、刪、改、查功能,在內(nèi)存中用Map組織數(shù)據(jù),在外存中用文件保存數(shù)據(jù)。用Map和文件來(lái)組織保存數(shù)據(jù)有一個(gè)意想不到的效果:由于網(wǎng)上能找到的Java應(yīng)用系統(tǒng)基本上都用數(shù)據(jù)庫(kù)來(lái)組織保存數(shù)據(jù),學(xué)生無(wú)法下載現(xiàn)成的系統(tǒng)來(lái)應(yīng)付,只能自己模仿示例項(xiàng)目完成課程設(shè)計(jì)。
3) 在項(xiàng)目教學(xué)中滲透職業(yè)素質(zhì)的培養(yǎng)。理論實(shí)踐一體化設(shè)計(jì),能聚焦知識(shí),突出能力訓(xùn)練,滲透態(tài)度情感、職業(yè)素養(yǎng)、方法能力、社會(huì)能力等的培養(yǎng)[3]。學(xué)生在完成項(xiàng)目的過(guò)程中實(shí)踐職業(yè)行為、自我建構(gòu)職業(yè)能力,有利于滲透職業(yè)素質(zhì)的培養(yǎng),教師也應(yīng)該在這方面進(jìn)行專門(mén)的教學(xué)設(shè)計(jì)。在本課程的項(xiàng)目教學(xué)中,著重從使用合法來(lái)源軟件、遵循源程序代碼規(guī)范、盡責(zé)地進(jìn)行異常處理、注重資源整理與共享、使用幫助文檔與網(wǎng)絡(luò)資源自主學(xué)習(xí)這幾個(gè)方面來(lái)培養(yǎng)學(xué)生的職業(yè)素質(zhì)。
4結(jié)語(yǔ)
在2007級(jí)和2008級(jí)開(kāi)展的教學(xué)改革實(shí)踐表明,基于貫穿項(xiàng)目的項(xiàng)目教學(xué)法能顯著地提高Java語(yǔ)言程序設(shè)計(jì)課程的教學(xué)效果,學(xué)生的學(xué)習(xí)興趣、編程熟練程度、程序調(diào)試能力都有明顯提高,從而降低了后繼課程的教學(xué)和學(xué)習(xí)難度,提高了Java平臺(tái)系列課程的整體教學(xué)質(zhì)量。
參考文獻(xiàn):
[1]