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