摘要:針對目前JAVA語言在教學過程中存在的問題,對JAVA語言的教學定位進行重新思考,提出以工程應用為導向,把知識點和應用點進行有效結合的JAVA教學方法。
關鍵詞:工程應用;JAVA語言;教學方法;教學定位
面向?qū)ο蟪绦蛟O計是目前程序設計的主流,是軟件開發(fā)人員必須掌握的一項基本的技術。JAVA是一種典型的面向?qū)ο蟮某绦蛟O計語言,是目前計算機行業(yè)使用最為廣泛的編程語言之一,相關就業(yè)崗位和市場需求都十分龐大。根據(jù)TIOBE公司的數(shù)據(jù)統(tǒng)計,在各種程序設計語言中,JAVA語言一直是最流行的語言之一。
1.JAVA教學中存在的問題
JAVA語言是一門基礎的程序設計課程,一般本科院校的JAVA課程開設在第三或第四學期。學生在學習JAVA之前學過一門程序設計語言C或者C++,因此,學生在學習JAVA課程時具有一定的語言基礎。但是在現(xiàn)階段的JAVA教學當中,往往忽略這一點,把JAVA完全當作一門“新課”來講授,通常會出現(xiàn)下面幾個問題。
1.1內(nèi)容重復
以前在C/C++中學習過的基本語法和程序設計,在JAVA課程中又被重復講解。比如,以前在C語言中學過了int、float、double、char等數(shù)據(jù)類型,還有C語言里面的基本流程控制語句for、while、switch case等,這都是程序設計語言的共性。如果在JAVA課程中再進行重復講解,學生聽起來會索然無味,不能激發(fā)學生的學習積極性。
1.2過多地偏重于語言本身,輕視應用
現(xiàn)在很多JAVA教材都是重點講授JAVA語言的知識點,很少涉及JAVA語言的應用點。如果在講課過程中,沒有跟學生說明JAVA的這些知識點的應用,會使學生感覺迷茫,不知道學習JAVA的用途。
1.3規(guī)范性不強
現(xiàn)在普遍存在的問題是教師在講授JAVA時,僅僅講授知識點,而沒有和工程實際、工程應用相結合。例如,在定義一個類的時候,為了簡單省事,直接命名為class A,這會造成學生編程的一個壞習慣——隨心所欲,而這正是工程應用項目的大忌。
2.JAVA語言的教學定位
JAVA語言具有簡單明了、面向?qū)ο?、可移植、多線程、分布式、結構中立、高性能、動態(tài)等特點,但是面向?qū)ο罂梢哉f是JAVA最重要的特性。JAVA語言的設計完全是面向?qū)ο蟮?,也可以說JAVA中“一切皆是對象”。JAVA語言的封裝性要比C++更強一些,而且很多關于底層的操作都已經(jīng)被屏蔽。比如,C++的指針在JAVA中已經(jīng)沒有了,且JAVA開發(fā)者不用投入太大的精力去關心底層的問題,所以學習JAVA會感覺比較容易,特別是以前學習過C/C++、具有一定程序設計基礎的學生。雖然JAVA語言學習起來看似比較容易,但是想要學好JAVA卻是比較困難的事情。這主要表現(xiàn)在以下兩個方面。
1)JAVA語言作為一門優(yōu)秀的程序設計語言,所包含的知識點非常多,這就容易分散學生的學習重點和學習精力,難以對課程學習有一個整體的把握。
JAVA語言作為一門專業(yè)基礎課,不僅要熟練掌握程序編譯和程序調(diào)試的方法,還要系統(tǒng)掌握程序編譯的原理和代碼運行的機制;不僅要熟練掌握傳統(tǒng)的結構化程序設計方法,還要深入理解現(xiàn)在流行的面向?qū)ο蟮脑O計思想和設計技巧;不僅要掌握JAVA基本語法和JAVA基本語句的使用,還要學習一些JAVA的編程技巧和JAVA的編程規(guī)范;不僅要學會簡單的SQL語句的使用,還要深入理解這些SQL語句所處理的數(shù)據(jù)與對象的聯(lián)系。而多線程編程對學生來講又是一個比較大的難點,這就需要學生具有比較扎實的操作系統(tǒng)的學習基礎,否則學生很難理解程序的運行為什么會中間中斷又穿插進其他的程序。網(wǎng)絡通信編程則要求學生具有較好的計算機網(wǎng)絡的基礎知識,否則也是難以理解的,學生只能“知其然而不知其所以然”。
2)“面向?qū)ο蟆苯虒W本身就有一定的難度。
如果學生以前學過C語言,沒學過C++的話,對“對象”的理解就會很困難。即使學習過C++,學生也很難充分的理解“對象”的概念。面向?qū)ο蟮某绦蛟O計方法是一個系統(tǒng)的方法,學生充分認識需要一個過程。學生學習傳統(tǒng)的面向過程的程序設計時,主要面對數(shù)據(jù)和過程,而在面向?qū)ο蟮某绦蛟O計中就變成了屬性和方法,與此相對應的還有類、繼承、上轉(zhuǎn)型、多態(tài)、接口回調(diào)等。對于這些內(nèi)容需要學生好好理解,用心領會,而不是泛泛了解、淺嘗輒止就能掌握的。
因此,我們需要在JAVA教學中重新定位,否則學生很難在有限的時間內(nèi)學好JAVA。如圖1所示是程序設計語言的關系示意圖,顯示了JAVA語言的教學內(nèi)容與以前所學的C/C++課程的關系,X軸代表JAVA方向,Y軸代表C/C++方向。這兩種程序語言之間存在很多共性,如果這些語言共性在C/C++課程中講過,那么JAVA就不要再重復。JAVA語言的教學要強調(diào)工程應用,在實際的工程應用當中貫穿著JAVA的知識點,把JAVA的知識點和實際工程的應用有機地結合起來。
3.以工程應用為導向的JAvA教學方法
JAVA是一門程序設計語言,也可以說是一個工具,只有在工程應用當中才能體現(xiàn)出這個工具的價值。軟件工程專業(yè)主要是培養(yǎng)合格的未來軟件工程師,因此在教學當中,就更要體現(xiàn)出工程應用,以工程應用為導向的JAVA教學方法,主要包括如下的內(nèi)容。
3.1以規(guī)則入手進行教學
JAVA是一門專業(yè)基礎課,在JAVA之后還有專業(yè)方向課,例如JSP程序設計、輕量級J2EE框架Spring、基于MVC的Web開發(fā)、ORM框架原理與應用、XML編程技術等,在這些課程當中,“規(guī)則”都是非常重要的。JSP是在JAVA學習之后的一門課程,它能夠在網(wǎng)頁中嵌入JAVA代碼,由JAVA代碼來完成業(yè)務邏輯的操作,其工作原理是首先把:jsp文件轉(zhuǎn)換成為一個特殊的JAVA文件——SERVLET,然后再轉(zhuǎn)換為,class文件,在客戶端響應用戶的就是一個CLASS文件。SERVLET其實就是在服務器端執(zhí)行的一段JAVA程序,只不過它有專門的一套規(guī)則。在JSP之上的高級應用,就更加強調(diào)“規(guī)則”,因為JAVA是開源的,大家可以在里面添加類庫、包等。如果沒有一定規(guī)則,大家無法共同使用和共同維護。因此在JAVA的教學當中,要讓學生學會遵守“規(guī)則”,不能像學習C/C++那樣,只注重語法和程序設計思想,而忽略代碼的“非技術”問題。如代碼的縮進、代碼的注釋、類的命名、函數(shù)命名、變量命名與使用等,都要遵守“規(guī)則”。有了這樣一個遵守“規(guī)則”的習慣,學生在學習三大框架(Struts、Spring、Hibemate)時,就會比較容易理解。遵守“規(guī)則”也是保證軟件質(zhì)量的一個重要手段。輕量級J2EE框架Spring、基于MVC的Web開發(fā)Struts、ORM框架原理與應用Hibernate,都是JAVA代碼的規(guī)范化應用。
在工程應用項目當中,更加強調(diào)規(guī)范性。在學生剛開始學習程序設計語言的時候,老師一般會告訴學生,代碼是由機器來執(zhí)行的,所以在學生的心目當中,認為編寫的程序就是讓機器來執(zhí)行的,只要編譯正常、運行無誤就萬事大吉了。但是在工程應用當中,學生要明白“代碼不僅是給機器執(zhí)行的,更是要給人看的”,既然代碼是要給人來看,那就要遵守規(guī)范,否則很難讀懂的。例如,“}”一行放一個,就比連著放讓人容易明白;變量的定義intnumber max就比int i更好理解。
3.2主要講授JAVA的特點
JAVA語言完整的知識點包括JAVA的數(shù)據(jù)類型、JAVA的運算符、JAVA的流程控制、類與對象、JAVA的繼承與接口、JAVA多線程、JAVA的I/O流、JAVA的圖形界面、JAVA的網(wǎng)絡編程、JAVA的數(shù)據(jù)庫編程、Applet。但是在JAVA課程講授當中,我們應考慮現(xiàn)在實際的工程應用,應用比較多的要重點講解;應用比較少的可以簡單講或不講。JAVA的數(shù)據(jù)類型、JAVA的運算符、JAVA的流程控制這些內(nèi)容屬于語言共性,完全不用再重復講解。類與對象以及JAVA的繼承與接口是一個重點內(nèi)容,需要詳細講解。如果以前沒有學習過面向?qū)ο蟮某绦蛟O計語言,那么對象、類、繼承、接口等這些內(nèi)容要深入的講解;如果以前學習過面向?qū)ο蟮某绦蛟O計語言,那么就需要進行對比講解,主要講解JAVA的不同之處。比如JAVA與C++的對比,在JAVA里面的接口回調(diào)、上轉(zhuǎn)型等,是JAVA特有的,需要學生用心體會、好好理解。JAVA多線程也是JAVA一個獨有的優(yōu)點,但是多線程的程序設計思想與以往的程序設計思想已經(jīng)完全不同了,學生在理解上會存在一定的困難,所以在課程的講解中一定要與操作系統(tǒng)的原理相結合。JAVA的I/O流、JAVA的圖形界面和JAVA的數(shù)據(jù)庫編程這些內(nèi)容雖然表面上不相同,但是實質(zhì)上是一樣的,學生也是比較好理解的。JAVA的網(wǎng)絡編程和Applet,又是JAVA的一大優(yōu)點。JAVA的快速發(fā)展在很大程度上得益于網(wǎng)絡的發(fā)展,因此JAVA先天就與網(wǎng)絡具有密切的聯(lián)系,同時網(wǎng)絡編程也是JAVA應用的優(yōu)勢所在。Applet主要是早期為解決網(wǎng)絡問題而設計,但是現(xiàn)在已經(jīng)很少應用了,只需要簡單講解即可。
3.3時刻突出應用
JAVA語言的學習要達到學以致用,時刻把知識點和應用點聯(lián)系起來,在應用當中來理解和掌握這些知識點。對于知識點的講解,要以工程應用為切入點,強調(diào)知識點的應用價值,這樣可以讓學生在應用中理解這些知識點。目標明確,學習就會比較有動力。知識點應用不明確的學習過程如圖2所示,其認知曲線是比較陡峭的,意味著對知識點的認知是比較困難的,而且越往后認知越難;知識點應用明確的學習過程如圖3所示,其認知曲線比較平滑,意味著一開始對所學的知識就有比較明確的認知。隨著學習的深入,逐漸達到對知識的完全認知。
在JAVA的教學過程中,通過工程應用的引入,可以把枯燥無味的知識點變成鮮活有趣的應用點。例如,對于“上轉(zhuǎn)型”知識點的引入,假如要開發(fā)一個物流運輸管理信息系統(tǒng),在系統(tǒng)當中需要計算貨物的運輸費用,使用3種交通工具:Truck、Train、Plane。那么計算費用的方法(Cost)是分別放到3個交通工具類里面,還是單獨提取出來呢?很明顯如果放到3個類里面分別實現(xiàn),代碼的重復度太高,并且難以維護,這就需要把方法(Cost)抽象出來,放到Truck、Train、Plane的父類Conveyance里,然后Truck、Train、Plane再分別實現(xiàn)Cost方法。這樣我們可以根據(jù)前臺選擇交通工具的不同生成不同的對象(Truck、Train或Plane),然后上轉(zhuǎn)型為Conveyance對象進行數(shù)據(jù)的傳遞,這樣傳遞的是相同的對象,但是計算的是不同的運輸費用。
3.4以工程項目強化知識點應用
JAVA語言的知識點是相對孤立的,通過工程應用可以把這些知識點有效地融合起來,使學生“既看見樹木,又得到森林”。在JAVA的教學中可以在一開始引入一個大型的工程應用項目“進銷存管理系統(tǒng)”,然后對該系統(tǒng)的功能進行分解,通過分解把不同的功能點與JAVA語言的知識點進行有效結合。這樣學生在學習過程中就可以不斷地嘗試利用這些知識點去解決工程應用的問題,亦可以很好地提高學習的積極性。
4.結語
教學方法的改革與探索是教育界一個永恒的課題。隨著時代的進步和技術的發(fā)展,企業(yè)對軟件人才的需求也在不斷變化,這就需要我們構建新的教學體系、探索新的教學方法、運用新的教學手段,提高教學質(zhì)量,培養(yǎng)未來合格的軟件工程師。我們在JAVA教學方法上的探索與實踐,提高了學生學習的積極性,促進了學生的理論知識和實踐動手能力的提高,也為學生學習后繼的課程打下了堅實的基礎。通過以工程應用為導向的JAVA教學方法的引入,課程的教學質(zhì)量和教學效果明顯改善,學生普遍反映良好。教學方法的探索與實踐永無止境,我們會把這種以工程應用為導向的教學方法在其他課程中推廣下去。
(見習編輯:劉麗麗)