張琳 李朝輝 譚孟康
[摘 要]Java程序設(shè)計(jì)是高等學(xué)校計(jì)算機(jī)相關(guān)專業(yè)的一門技術(shù)基礎(chǔ)課。結(jié)合課程的授課經(jīng)驗(yàn),設(shè)計(jì)了Java程序設(shè)計(jì)的教學(xué)內(nèi)容,分析了在實(shí)踐教學(xué)中存在的問題,并對(duì)實(shí)踐教學(xué)方法進(jìn)行了探討,希望能夠?qū)ava授課教師提供有益的幫助,提高該課程的實(shí)踐教學(xué)效果。
[關(guān)鍵詞]Java程序設(shè)計(jì);實(shí)踐教學(xué);Java面向?qū)ο?/p>
[基金項(xiàng)目]2019年中央高?;究蒲袠I(yè)務(wù)費(fèi)專項(xiàng)資金資助項(xiàng)目“面向?qū)W術(shù)文獻(xiàn)大數(shù)據(jù)的自動(dòng)文摘方法研究”(3132019234);2018年大連海事大學(xué)教學(xué)改革項(xiàng)目“信管專業(yè)大數(shù)據(jù)課程教學(xué)資源建設(shè)”(2018Y48);2018年教育部產(chǎn)學(xué)合作協(xié)同育人項(xiàng)目“‘跨境電子商務(wù)理論與實(shí)踐課程建設(shè)”(201802028013)
[作者簡(jiǎn)介]張 琳(1984—),女,山東萊西人,博士,大連海事大學(xué)航運(yùn)經(jīng)濟(jì)與管理學(xué)院講師,主要從事信息管理和文本挖掘研究;李朝輝(1974—),男,河南漯河人,博士,大連海事大學(xué)航運(yùn)經(jīng)濟(jì)與管理學(xué)院副教授,主要從事電子商務(wù)物流研究;譚孟康(1999—),男,湖南衡陽(yáng)人,大連海事大學(xué)航運(yùn)經(jīng)濟(jì)與管理學(xué)院2017級(jí)本科生,研究方向?yàn)樾畔⒐芾砼c信息系統(tǒng)。
[中圖分類號(hào)] G642[文獻(xiàn)標(biāo)識(shí)碼] A[文章編號(hào)] 1674-9324(2020)27-0214-02[收稿日期] 2019-10-08
隨著互聯(lián)網(wǎng)和移動(dòng)互聯(lián)網(wǎng)的快速發(fā)展,市場(chǎng)對(duì)Java編程人才的需求越來(lái)越大,所以許多高校的計(jì)算機(jī)相關(guān)專業(yè)都開設(shè)了Java程序設(shè)計(jì)這門課程,并將其作為一門專業(yè)技術(shù)基礎(chǔ)課。因此,如何更好地教授這門課程,培養(yǎng)學(xué)生面向?qū)ο蟮某绦蛟O(shè)計(jì)思想,提高學(xué)生分析和解決實(shí)際問題的能力,是高校Java授課教師必須重視的問題。
一、Java程序設(shè)計(jì)教學(xué)內(nèi)容
1. Java語(yǔ)言的編譯和運(yùn)行機(jī)制。Java是一種特殊的高級(jí)語(yǔ)言,既具有編譯型語(yǔ)言的特征,也具有解釋型語(yǔ)言的特征,因此用Java語(yǔ)言編寫的程序要經(jīng)過先編譯后解釋兩個(gè)步驟[1](P4-5)。Java程序編譯后生成的不是特定平臺(tái)的機(jī)器碼,而是一種“中間碼”—字節(jié)碼(也就是.class文件),這種代碼不面向任何平臺(tái),只面向Java虛擬機(jī)(Java Virtual Machine,JVM)。字節(jié)碼可以在所有實(shí)現(xiàn)了JVM的系統(tǒng)上運(yùn)行,因此Java語(yǔ)言可以跨平臺(tái)。
2.數(shù)據(jù)類型。Java是一種強(qiáng)類型語(yǔ)言,這意味著必須為每一個(gè)變量聲明一種類型。Java將數(shù)據(jù)類型分為兩類:基本類型和引用類型[1](P50)?;绢愋桶˙oolean類型和數(shù)值類型。數(shù)值類型有整數(shù)類型(byte、short、int、long、char)和浮點(diǎn)類型(float和double)。引用類型包含類(class)、接口(interface)和數(shù)組(array),還有一種特殊的null類型。
3.流程控制和數(shù)組。Java支持3種流程控制結(jié)構(gòu):順序結(jié)構(gòu)、分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)[1](P74-89)。其中,分支結(jié)構(gòu)包含兩種:if語(yǔ)句和switch語(yǔ)句。循環(huán)結(jié)構(gòu)包含四種:while循環(huán)、do while循環(huán)、for循環(huán)和foreach循環(huán)。其中foreach循環(huán)是JDK5提供的一種新的循環(huán)結(jié)構(gòu),可以用來(lái)遍歷集合、數(shù)組中的元素而不必指定下標(biāo)值。
數(shù)組是編程語(yǔ)言中最常見的一種數(shù)據(jù)結(jié)構(gòu),用于存儲(chǔ)同一類型的多個(gè)數(shù)據(jù)[2](P78-88)。在Java中數(shù)組必須先初始化才能使用。數(shù)組的初始化有兩種方式:靜態(tài)初始化和動(dòng)態(tài)初始化[1](P91-92)。其中,靜態(tài)初始化由程序員顯式指定每個(gè)數(shù)組元素的初始值,由系統(tǒng)決定數(shù)組的長(zhǎng)度;動(dòng)態(tài)初始化由程序員指定數(shù)組長(zhǎng)度,由系統(tǒng)為數(shù)組元素分配初始值。
4. Java面向?qū)ο蟮娜齻€(gè)基本特征。Java面向?qū)ο蟮娜齻€(gè)基本特征是封裝、繼承和多態(tài)[1](P28-29)。
封裝指的是將對(duì)象的實(shí)現(xiàn)細(xì)節(jié)隱藏起來(lái),不允許外部程序直接訪問對(duì)象的內(nèi)部信息,只能通過該類提供的一些公用方法實(shí)現(xiàn)對(duì)對(duì)象內(nèi)部信息的操作和訪問。通過封裝可以提高數(shù)據(jù)的安全性。
繼承是實(shí)現(xiàn)軟件復(fù)用的重要手段,利用繼承,可以基于已存在的類構(gòu)造一個(gè)新的類。子類繼承父類后,將直接獲得父類的屬性和方法,并可以在此基礎(chǔ)上添加一些新的屬性和方法,以滿足新的需求。
繼承為多態(tài)的實(shí)現(xiàn)提供了前提。子類是一種特殊的父類,所以Java允許把一個(gè)子類對(duì)象直接賦值給父類引用變量。在編譯時(shí)變量是父類類型,但在運(yùn)行時(shí)卻表現(xiàn)出子類的行為特征,這就是多態(tài)。多態(tài)意味著同一個(gè)類型的對(duì)象在執(zhí)行同一個(gè)方法時(shí),可能表現(xiàn)出多種行為特征。
5. Java類庫(kù)。Java類庫(kù)主要包括Java基礎(chǔ)類庫(kù)、異常處理、圖形用戶界面、輸入輸出流等[1](P246-731)。其中,Java基礎(chǔ)類庫(kù)包括Scanner、System、Runtime、Object、String、Math、List、Set等,通過這些基礎(chǔ)類庫(kù)可以提高開發(fā)效率,降低開發(fā)難度;異常是運(yùn)行時(shí)在代碼序列中引起的非正常狀況,Java的異常機(jī)制主要依賴于try、catch、finally、throw和throws五個(gè)關(guān)鍵字,可以讓程序具有更好的容錯(cuò)性,使程序更加健壯;Java使用AWT和Swing類完成圖形用戶界面編程,通過這兩個(gè)類提供的圖形界面組件庫(kù),程序只要依次創(chuàng)建所需的圖形組件,并以合適的方式組織它們,就可以開發(fā)出美觀的用戶界面;Java通過java.io包下的類和接口來(lái)支持輸入、輸出,java.io包下主要包括輸入、輸出兩種IO流,每種輸入、輸出流又可分為字節(jié)流和字符流兩大類。
二、Java程序設(shè)計(jì)實(shí)踐教學(xué)現(xiàn)狀
1.理論教學(xué)學(xué)時(shí)仍然占很高的比例,這使得教師將教學(xué)重點(diǎn)放在理論教學(xué)上,在課程考核方式上也以理論筆試為主,忽視了對(duì)學(xué)生動(dòng)手實(shí)踐能力的培養(yǎng)和考核[3]。實(shí)踐學(xué)時(shí)的不足導(dǎo)致學(xué)生無(wú)法充分理解面向?qū)ο蟮睦碚撝R(shí),以至于在遇到具體問題時(shí)無(wú)法下手,進(jìn)而對(duì)實(shí)踐課程產(chǎn)生了排斥心理,編程技能和綜合運(yùn)用知識(shí)的能力得不到提高。
2.過度依賴于IDE工具。IDE工具使用起來(lái)比較靈活,可以提高開發(fā)效率,在項(xiàng)目管理中有不可比擬的優(yōu)勢(shì)。因此很多教師在教學(xué)實(shí)踐環(huán)節(jié),直接將Eclipse、NetBeans等IDE工具作為開發(fā)工具,這種做法可能會(huì)使學(xué)生將精力花在IDE工具的學(xué)習(xí)上而忽略對(duì)Java語(yǔ)言本身的學(xué)習(xí),也可能會(huì)造成學(xué)生對(duì)IDE工具的過度依賴,導(dǎo)致其在脫離IDE工具進(jìn)行程序設(shè)計(jì)時(shí),經(jīng)常會(huì)犯一些語(yǔ)法錯(cuò)誤或書寫錯(cuò)誤,比如將關(guān)鍵字首字母大寫,使用中文分號(hào)作為分隔符,忘記寫主函數(shù)的形參等,而大部分學(xué)生經(jīng)常發(fā)現(xiàn)不了這些錯(cuò)誤。
3.缺少合適的實(shí)踐教學(xué)資源。為了培養(yǎng)符合市場(chǎng)需求的高水準(zhǔn)Java人才,Java教師需要對(duì)知識(shí)點(diǎn)以及知識(shí)點(diǎn)之間的關(guān)聯(lián)性進(jìn)行更詳細(xì)的講解,教授學(xué)生如何將所學(xué)的知識(shí)應(yīng)用到實(shí)際中,學(xué)生也需要進(jìn)行更多有針對(duì)性的練習(xí),而現(xiàn)有的實(shí)踐教學(xué)資源難以與教學(xué)進(jìn)度、教學(xué)知識(shí)點(diǎn)完全融合,導(dǎo)致學(xué)生在實(shí)踐中難以更好地運(yùn)用這些知識(shí)點(diǎn)。
三、Java程序設(shè)計(jì)實(shí)踐教學(xué)方法探討
1.增加總學(xué)時(shí),同時(shí)提高實(shí)踐教學(xué)學(xué)時(shí)的比例。理論是實(shí)踐的先導(dǎo),實(shí)踐是理論的檢驗(yàn)。為了更好地培養(yǎng)學(xué)生的綜合素質(zhì)和實(shí)踐能力,目前有的高校已經(jīng)將Java程序設(shè)計(jì)課程分為Java初級(jí)和Java高級(jí)兩部,分兩個(gè)學(xué)期進(jìn)行。將課程總學(xué)時(shí)增加到112學(xué)時(shí),其中Java初級(jí)64學(xué)時(shí),Java高級(jí)48學(xué)時(shí),并將這兩部分中的實(shí)踐教學(xué)學(xué)時(shí)比例提高到50%。同時(shí)為了全面評(píng)估學(xué)生實(shí)踐操作能力,實(shí)踐分值在課程總分值中所占的比例也由30%提升到50%。
2.高校Java教師可以在課程教學(xué)初期,比如Java初級(jí)階段,在實(shí)踐環(huán)節(jié)中將Editplus、Ultra Edit或記事本等作為開發(fā)工具,在大部分學(xué)生能夠根據(jù)錯(cuò)誤提示修正程序中的錯(cuò)誤時(shí)或在Java高級(jí)階段,講授如何使用IDE工具進(jìn)行程序設(shè)計(jì)。另外,為了提高學(xué)生的程序改錯(cuò)能力,督促學(xué)生多練習(xí)多總結(jié),在筆試環(huán)節(jié)也可以增加程序改錯(cuò)題。
3.在實(shí)踐教學(xué)過程中,Java教師可以按照講授的內(nèi)容編寫實(shí)驗(yàn)指導(dǎo)書,通過設(shè)計(jì)大量有針對(duì)性的實(shí)驗(yàn)幫助學(xué)生鞏固在課堂上所學(xué)的知識(shí)點(diǎn),理解各知識(shí)點(diǎn)之間的關(guān)聯(lián),提高學(xué)生的編程能力。Java教師也可以提供一些案例應(yīng)用,教授學(xué)生如何將所學(xué)的知識(shí)點(diǎn)應(yīng)用到實(shí)際中,進(jìn)而優(yōu)化實(shí)踐教學(xué)的水平。另外,為了使學(xué)生對(duì)面向?qū)ο蟪绦蛟O(shè)計(jì)有一個(gè)全面總體的理解,授課教師可以布置一個(gè)具有趣味性的綜合性大作業(yè),將其作為實(shí)踐考核的一部分[4]。
4.充分利用校企合作。目前很多高校的計(jì)算機(jī)相關(guān)專業(yè)已經(jīng)與多個(gè)實(shí)習(xí)基地簽署了合作協(xié)議,在課程設(shè)計(jì)、綜合實(shí)踐、實(shí)習(xí)等環(huán)節(jié)開展深度合作。Java教師可以充分利用實(shí)習(xí)基地,讓學(xué)生到企業(yè)實(shí)習(xí)。學(xué)生通過參與實(shí)際項(xiàng)目開發(fā),積累實(shí)踐經(jīng)驗(yàn)。
四、Java程序設(shè)計(jì)實(shí)踐教學(xué)的發(fā)展趨勢(shì)
隨著互聯(lián)網(wǎng)的快速發(fā)展,各行業(yè)都積累了海量的數(shù)據(jù),大數(shù)據(jù)時(shí)代已經(jīng)到來(lái)。在大數(shù)據(jù)環(huán)境下,企業(yè)對(duì)大數(shù)據(jù)分析人才的需求不斷增加,數(shù)據(jù)分析能力已成為計(jì)算機(jī)相關(guān)專業(yè)學(xué)生應(yīng)該具備的技能。因此,將大數(shù)據(jù)技術(shù)與Java程序設(shè)計(jì)實(shí)踐教學(xué)相結(jié)合,利用大數(shù)據(jù)時(shí)代產(chǎn)生的海量數(shù)據(jù)完善實(shí)踐教學(xué)資源,加強(qiáng)對(duì)學(xué)生數(shù)據(jù)分析能力的培養(yǎng),將成為Java程序設(shè)計(jì)實(shí)踐教學(xué)的發(fā)展趨勢(shì)。
參考文獻(xiàn)
[1]李剛.瘋狂Java講義(第5版)[M].北京:電子工業(yè)出版社,2019: 4-731.
[2][美]Cay S.Horsmann.Java核心技術(shù)卷I基礎(chǔ)知識(shí)(原書第10版)[M].周立新,陳波,葉乃文,等譯.北京:機(jī)械工業(yè)出版社,2016: 78-88.
[3]徐完平.《Java程序設(shè)計(jì)》教學(xué)改革探討[J].福建電腦,2018, 34(12):182+168.
[4]諶衛(wèi)軍.Java程序設(shè)計(jì)課程教學(xué)實(shí)踐[J].計(jì)算機(jī)教育,2019 (07):23-28.