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