999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

結(jié)合MOOC和翻轉(zhuǎn)課堂的JavaSE接口教學(xué)研究

2018-09-17 07:49:34趙衛(wèi)東鄭永果仇麗青
計(jì)算機(jī)教育 2018年9期
關(guān)鍵詞:排序規(guī)范方法

張 峰,趙衛(wèi)東,鄭永果,仇麗青

(山東科技大學(xué) 計(jì)算機(jī)科學(xué)與工程學(xué)院,山東 青島 266590)

0 引言

Java具有跨平臺、安全性高、健壯性等特點(diǎn)[1],已經(jīng)在企業(yè)級應(yīng)用、桌面應(yīng)用、移動應(yīng)用等多個(gè)領(lǐng)域得到廣泛應(yīng)用,成為當(dāng)今軟件開發(fā)領(lǐng)域最流行的編程語言之一。JavaSE是整個(gè)Java技術(shù)體系的基礎(chǔ),而Java作為一種面向?qū)ο蟮木幊陶Z言,接口又是JavaSE中面向?qū)ο缶幊讨械闹攸c(diǎn)[2]。理解接口的含義,熟練使用接口編程,對于學(xué)生后續(xù)學(xué)習(xí)面向?qū)ο蟮姆治觥⒃O(shè)計(jì)及開發(fā)至關(guān)重要。

1 接口教學(xué)現(xiàn)狀分析

在JavaSE面向?qū)ο蟛糠值慕虒W(xué)中,一般在類、對象、繼承等基本概念之后講授接口。由于接口的定義和使用與類、抽象類類似,在教學(xué)中發(fā)現(xiàn),學(xué)生往往在編程過程中不能靈活使用接口,在做具有較強(qiáng)應(yīng)用性質(zhì)的編程題目時(shí),更習(xí)慣使用類或者抽象類,這說明,初學(xué)Java的大部分學(xué)生還沒有真正理解接口的含義和編程方法。

為解決接口教學(xué)中存在的問題,文獻(xiàn)[2]站在軟件工程的立場,結(jié)合面向?qū)ο蟮脑O(shè)計(jì)原則和設(shè)計(jì)模式的部分內(nèi)容,對教學(xué)內(nèi)容進(jìn)行了拓展。筆者曾借鑒文獻(xiàn)[2]的方法組織教學(xué)內(nèi)容,但在實(shí)際教學(xué)中同樣遇到一些問題:①由于JavaSE課程內(nèi)容面向初學(xué)者,學(xué)生對面向?qū)ο蟮睦斫膺€不夠深入,而面向?qū)ο蟮脑O(shè)計(jì)原則和設(shè)計(jì)模式等內(nèi)容對面向?qū)ο蟮囊蟾摺τ诖蠖鄶?shù)JavaSE初學(xué)者來說,此時(shí)引入面向?qū)ο蟮脑O(shè)計(jì)原則及設(shè)計(jì)模式的內(nèi)容并不一定適合于大多數(shù)學(xué)生;②從課時(shí)安排來看,接口部分通常限制到2~3個(gè)學(xué)時(shí),而引入面向?qū)ο蟮脑O(shè)計(jì)原則、設(shè)計(jì)模式等內(nèi)容會延長授課學(xué)時(shí);③教學(xué)中采用的實(shí)例相對抽象,不是生活或工程應(yīng)用中的典型實(shí)例,在調(diào)動學(xué)生的學(xué)習(xí)興趣和積極性方面還存在不足;④沒有采用當(dāng)前流行的MOOC、翻轉(zhuǎn)課堂等教學(xué)技術(shù)與方法[3],教學(xué)過程中與學(xué)生的互動不足,學(xué)生的學(xué)習(xí)積極性和學(xué)習(xí)效果還需進(jìn)一步提高。

2 接口教學(xué)內(nèi)容和方法

整個(gè)教學(xué)過程通常用2個(gè)學(xué)時(shí),教學(xué)步驟、內(nèi)容以及采用的教學(xué)方法如圖1所示。

2.1 接口的含義

接口教學(xué)中,首先要讓學(xué)生理解Java接口的含義,重點(diǎn)理解“接口即規(guī)范”。首先介紹“寬定義”和“窄定義”的接口,讓學(xué)生知道之前學(xué)過的諸如C、C++里面提到的函數(shù)、方法是“寬定義”的接口,即通常所說的“API”中的“I”所表示的Interface。然后講解Java接口是Java語言提供的一種“窄定義”的接口,是Java中定義的一種特殊類型,表示的是一種規(guī)范。

圖1 接口教學(xué)內(nèi)容與方法

為了讓學(xué)生理解“接口即規(guī)范”,在文獻(xiàn)[4]的PCI接口實(shí)例的基礎(chǔ)上,通過學(xué)生生活中更加熟悉的USB接口來講解,主要內(nèi)容包括:①USB是一種規(guī)范和標(biāo)準(zhǔn),主板廠商為了支持USB設(shè)備,需要提供符合USB標(biāo)準(zhǔn)的插口;USB設(shè)備生產(chǎn)廠商(如U盤制造商),為了能夠用于主板的USB插口,必須按照USB規(guī)范來生成產(chǎn)品;②介紹主板與USB設(shè)備之間基于USB規(guī)范的耦合,引出組件之間基于規(guī)范耦合的知識點(diǎn),為后面介紹基于接口的編程做好鋪墊。

在教學(xué)方法方面,我們通過一個(gè)MOOC短視頻提前發(fā)布給學(xué)生,學(xué)生課下自學(xué),作為上課時(shí)翻轉(zhuǎn)課堂的基礎(chǔ)。

2.2 Java接口基礎(chǔ)知識

我們首先講解接口的定義、類實(shí)現(xiàn)接口等基礎(chǔ)知識。為了便于學(xué)生理解,從“能力”的角度講解類對接口的實(shí)現(xiàn):一個(gè)類實(shí)現(xiàn)了一個(gè)接口,則需要實(shí)現(xiàn)該接口中定義的所有方法,也就說明該類滿足了所實(shí)現(xiàn)的接口要求的“能力”。這種“能力”是通過實(shí)現(xiàn)接口中的方法來體現(xiàn)的。在此基礎(chǔ)上,介紹Java中不支持多繼承、類可以實(shí)現(xiàn)多個(gè)接口、接口與抽象類的比較等其他知識點(diǎn)。

從教學(xué)過程來看,接口部分的基礎(chǔ)知識并不難,關(guān)鍵是讓學(xué)生真正理解接口的作用。為此,后續(xù)教學(xué)內(nèi)容的重點(diǎn)是通過實(shí)例來講解接口的應(yīng)用,這些實(shí)例應(yīng)該是學(xué)生熟悉或者工程實(shí)踐中常用的,才能加深學(xué)生的理解。為此,我們在教學(xué)中用Java代碼模擬2.1中USB接口的實(shí)例,讓學(xué)生加深對“接口即規(guī)范”“面向接口編程”的理解。圖2給出了實(shí)例Java代碼對應(yīng)的UML類圖,以及兩個(gè)設(shè)計(jì)存在問題的UML類圖。

首先,通過代碼模擬相關(guān)的接口和類,如圖2(a)所示。具體講解的內(nèi)容包括:接口USB定義了USB規(guī)范,該規(guī)范定義了方法start和stop;提供USB接口的設(shè)備,包括無線網(wǎng)卡類WirelessNetCard和U盤類FlashDisk,都實(shí)現(xiàn)了USB接口,它們的對象都具備USB接口規(guī)范所規(guī)定的“能力”,即都具有start和stop方法。

其次,講解面向接口的編程,包括主板類MainBoard的成員slot,表示該主板所支持的插槽,其類型USB指明了該插槽所支持的規(guī)范。也就是說,MainBoard類提供的插槽slot支持USB設(shè)備。MainBoard類提供了setUSB方法,可以傳入任何支持USB的設(shè)備對象,即可以傳入任何實(shí)現(xiàn)了USB接口的類的對象。例如,可以傳入無線網(wǎng)卡類WirelessNetCard對象或U盤類FlashDisk對象。通過圖2(a)的例子,可以形象地說明面向接口編程的優(yōu)點(diǎn): MainBoard類的成員slot是USB類型的,從而通過slot可以引用任何實(shí)現(xiàn)了USB接口的類的對象。從現(xiàn)實(shí)來說,可以理解為主板提供了一個(gè)支持USB規(guī)范的插槽,任何符合USB規(guī)范的設(shè)備都可以插在該主板的插槽上。在該實(shí)例中,類MainBoard與USB接口之間存在依賴關(guān)系,但MainBoard只依賴于USB接口,而不依賴于任何具體類,從而實(shí)現(xiàn)了松耦合。

圖2 USB實(shí)例的類圖

最后,介紹設(shè)計(jì)存在問題的情況,給出圖2中(b)和(c)兩個(gè)反例。在圖2(b)中,MainBoard類依賴于WirelessNetCard類,導(dǎo)致該主板類MainBoard提供的插槽只能接入無線網(wǎng)卡設(shè)備;同理,圖2(c)中的MainBoard類依賴于FlashDisk類,導(dǎo)致該主板類MainBoard提供的插槽只能接入U(xiǎn)盤。在圖2(b)(c)中,兩個(gè)MainBoard依賴于具體實(shí)現(xiàn)類,導(dǎo)致了它們與具體類之間的緊耦合。通過將圖2中(a)與(b)(c)兩個(gè)反例進(jìn)行對比,讓學(xué)生理解面向接口編程的優(yōu)點(diǎn),也加深對接口的理解。

在本部分內(nèi)容的教學(xué)方法方面,基礎(chǔ)知識部分內(nèi)容相對簡單,通過MOOC視頻讓學(xué)生課下自學(xué),同時(shí)留下思考題,讓學(xué)生看完視頻后,自己思考USB實(shí)例該如何設(shè)計(jì)。上課時(shí)讓學(xué)生講解自己的設(shè)計(jì),一起討論,最后由老師點(diǎn)評設(shè)計(jì)的優(yōu)劣。從實(shí)際的教學(xué)來看,部分學(xué)生的設(shè)計(jì)結(jié)果中出現(xiàn)了圖2中(b)(c)兩種設(shè)計(jì)方式。

2.3 接口應(yīng)用實(shí)例

2.2中模擬USB實(shí)例的Java代碼沒有實(shí)際的運(yùn)行效果。為了進(jìn)一步加深學(xué)生對接口功能的理解,我們通過一個(gè)實(shí)際開發(fā)中的常用功能來進(jìn)一步講解。該實(shí)例使用了JDK集合框架中Arrays類的靜態(tài)方法sort。具體的教學(xué)過程和教學(xué)方法如下。

第一,通過使用Arrays.sort(Object[]a)方法對String數(shù)組排序的一段代碼,演示該方法的排序功能,并通過API文檔的查看,說明該方法可以實(shí)現(xiàn)任意類型對象數(shù)組的排序。然后,采用啟發(fā)式教學(xué)方法,引導(dǎo)學(xué)生思考一個(gè)問題:如何實(shí)現(xiàn)sort(Object[]a)的功能?進(jìn)一步引導(dǎo)學(xué)生思考:如果要實(shí)現(xiàn)該方法,是否需要知道什么前提?在教學(xué)過程中,學(xué)生一般會考慮到需要知道這些待排序?qū)ο蟮呐判蛞罁?jù)。進(jìn)一步講解,方法形參是Object[],可以對任何對象數(shù)組排序,因此,要求這些待排序?qū)ο竽軌蜻M(jìn)行比較,即滿足“可比較”這一規(guī)范,從而引出需要待排序?qū)ο笏鶎兕悓?shí)現(xiàn)一個(gè)描述“可比較”這一規(guī)范的接口,最終給出需要實(shí)現(xiàn)的Comparable接口。在此基礎(chǔ)上,查看Comparable接口的API文檔、String類的implements Comparable聲明,以及String類對Comparable接口中的compareTo方法的實(shí)現(xiàn)。

第二,引導(dǎo)學(xué)生思考Arrays.sort(Object[]a)實(shí)現(xiàn)排序的方法。講解內(nèi)容包括:排序中的兩個(gè)基本操作是比較和交換, sort方法實(shí)現(xiàn)的關(guān)鍵是如何比較兩個(gè)對象。即如何比較a[i]和a[i+1]?教學(xué)中讓學(xué)生先思考,然后找學(xué)生到教師機(jī)上編寫代碼,共同討論,教師點(diǎn)評給出正確答案;最后,通過查看sort方法的源碼來驗(yàn)證。該教學(xué)過程進(jìn)一步加深了學(xué)生對接口功能的理解,同時(shí)也加深了對Java中多態(tài)的理解。

第三,針對前面課程中的Java類實(shí)例,如描述學(xué)生的Student類,讓學(xué)生自己完善Student編碼,使得Student數(shù)組可以使用Arrays.sort(Object[]a)排序。同時(shí),要求提供多種排序方法,如根據(jù)學(xué)號、成績、姓名進(jìn)行排序,還可以升序、降序排列。通過練習(xí),讓學(xué)生熟悉使用Arrays.sort方法排序這一實(shí)用功能,加深對接口的理解。

最后,留給學(xué)生幾個(gè)稍有深度的問題課下思考,再次上課時(shí)通過討論、提問的方式講解。相關(guān)問題包括:①Arrays.sort(Object[]a)方法需要排序的類實(shí)現(xiàn)Comparable接口,但通過實(shí)現(xiàn)該接口中的compareTo方法只能實(shí)現(xiàn)一種排序方式。如果排序需求發(fā)生了改變,或者不同情況下需要不同的排序功能,該如何實(shí)現(xiàn)?通過該問題的思考,學(xué)生能發(fā)現(xiàn)僅僅使用Comparable接口所存在的問題,從而引出讓學(xué)生自學(xué)的Comparator接口,進(jìn)一步加深對接口的理解和熟練程度。②Arrays.sort(Object[]a)方法為何要求排序的對象所屬類實(shí)現(xiàn)Comparable接口,而不是繼承一個(gè)抽象類或一個(gè)普通類?通過該問題的思考,學(xué)生會加深Java中不支持多繼承以及一個(gè)類可以實(shí)現(xiàn)多個(gè)接口的理解。③Arrays.sort(Object[]a)方法內(nèi)部使用待排序?qū)ο蟮腸ompareTo方法實(shí)現(xiàn)對象之間的比較,那么,待排序?qū)ο笏鶎兕愂欠窨梢詢H添加compareTo方法而不聲明實(shí)現(xiàn)Comparable接口?通過該問題的思考,結(jié)合sort方法的源碼,學(xué)生可以加深對接口以及多態(tài)的理解。

在教學(xué)方法方面,我們關(guān)于本小節(jié)的全部授課內(nèi)容通過4個(gè)MOOC視頻提供:①Arrays.sort方法基本功能介紹;②Comparable接口簡介;③sort方法實(shí)現(xiàn)原理與源碼分析;④Student排序?qū)崿F(xiàn)。第一個(gè)視頻在課前發(fā)布給學(xué)生,作為基礎(chǔ)知識讓學(xué)生學(xué)習(xí),而后3個(gè)視頻則在翻轉(zhuǎn)課堂后提供給學(xué)生復(fù)習(xí)。這樣做是為了讓學(xué)生在課堂上積極思考,通過啟發(fā)式教學(xué),讓學(xué)生思考、討論sort方法能夠排序的前提、sort方法的源碼實(shí)現(xiàn)、Student排序這3個(gè)關(guān)鍵問題,提高他們的聽課效率,而課后通過MOOC視頻的觀看加以鞏固。最后,學(xué)生可以課下自學(xué)Comparator接口,并思考上述幾個(gè)有一定深度的問題。

2.4 后續(xù)授課內(nèi)容對接口的鞏固

完成上述3小節(jié)的內(nèi)容后,JavaSE面向?qū)ο蠡A(chǔ)部分的接口教學(xué)就完成了。后續(xù)授課內(nèi)容中很多章節(jié)會用到接口,通過繼續(xù)強(qiáng)化接口的應(yīng)用,進(jìn)一步鞏固接口部分的基礎(chǔ)知識。例如,JDK集合部分提供了List、Set、Map、Iterator等接口,該部分在編碼時(shí)經(jīng)常用到面向接口的編程;JDBC中提供了一組接口,而相應(yīng)數(shù)據(jù)庫廠商提供的數(shù)據(jù)庫驅(qū)動中包含了這些接口的實(shí)現(xiàn)類。同樣,Servlet中提供了若干接口,這些接口的實(shí)現(xiàn)類則由各種Java Web應(yīng)用服務(wù)器來提供。學(xué)生通過在這些后續(xù)內(nèi)容中回顧涉及的接口的基礎(chǔ)知識,更進(jìn)一步加深對接口、接口即規(guī)范的理解,從而熟練使用接口進(jìn)行開發(fā)。

3 教學(xué)效果

上述教學(xué)過程和教學(xué)方法結(jié)合MOOC視頻和翻轉(zhuǎn)課堂,明顯改善了接口部分的教學(xué)效果。一方面,從學(xué)生學(xué)習(xí)過程的表現(xiàn)來看,學(xué)生在課下學(xué)習(xí)視頻后,翻轉(zhuǎn)課堂時(shí)學(xué)生已基本掌握了接口的主要知識點(diǎn)。在翻轉(zhuǎn)課堂上,通過啟發(fā)式教學(xué)方法的運(yùn)用,討論、點(diǎn)評USB和Arrays.sort兩個(gè)典型實(shí)例,學(xué)生在課堂上參與討論和點(diǎn)評的積極性有了很大提高。另一方面,從學(xué)生的作業(yè)、實(shí)驗(yàn)和考試情況來看,絕大多數(shù)學(xué)生理解了接口的含義,設(shè)計(jì)和編碼中能夠熟練使用接口,后續(xù)課程在講解集合類、JDBC、Servlet等章節(jié)時(shí),大多數(shù)學(xué)生能夠理解其中涉及的接口方面的知識。

總體來看,上述JavaSE接口教學(xué)的授課內(nèi)容涵蓋了主要知識點(diǎn),未涉及較有深度的其他課程內(nèi)容。結(jié)合MOOC視頻、課上翻轉(zhuǎn)加講授,一般可以在2個(gè)學(xué)時(shí)內(nèi)完成。該教學(xué)過程已經(jīng)在實(shí)際教學(xué)中實(shí)施,較好地提高了接口部分的實(shí)際教學(xué)效果。

4 結(jié)語

接口是Java面向?qū)ο蟪绦蛟O(shè)計(jì)中最基本、最重要的內(nèi)容之一,也是整個(gè)Java技術(shù)體系和后續(xù)軟件工程相關(guān)課程的基礎(chǔ)。通過引入生活中和工程實(shí)際中的典型實(shí)例,結(jié)合MOOC視頻以及翻轉(zhuǎn)課堂上的討論和點(diǎn)評,學(xué)生的學(xué)習(xí)積極性和學(xué)習(xí)效果有了明顯提升。當(dāng)前,隨著MOOC和翻轉(zhuǎn)課堂的逐漸普及,如何更好地結(jié)合MOOC、翻轉(zhuǎn)課堂等現(xiàn)代教育理念和技術(shù),提煉更多來源于生活和工程實(shí)際應(yīng)用的教學(xué)實(shí)例,推廣到程序設(shè)計(jì)和軟件工程類相關(guān)課程的教學(xué),是需要進(jìn)一步思考和探索的問題。

猜你喜歡
排序規(guī)范方法
來稿規(guī)范
來稿規(guī)范
排序不等式
PDCA法在除顫儀規(guī)范操作中的應(yīng)用
來稿規(guī)范
恐怖排序
節(jié)日排序
刻舟求劍
兒童繪本(2018年5期)2018-04-12 16:45:32
用對方法才能瘦
Coco薇(2016年2期)2016-03-22 02:42:52
四大方法 教你不再“坐以待病”!
Coco薇(2015年1期)2015-08-13 02:47:34
主站蜘蛛池模板: 国产成人精品男人的天堂| 无码一区二区三区视频在线播放| 狠狠色噜噜狠狠狠狠色综合久| 色综合天天娱乐综合网| 一区二区三区精品视频在线观看| 国产微拍精品| 久久99精品久久久久久不卡| 免费一级毛片在线观看| 亚洲伊人久久精品影院| 欧美伊人色综合久久天天| 尤物午夜福利视频| 国产一级裸网站| 日韩福利在线观看| 亚洲a免费| 国产麻豆福利av在线播放| 日韩无码一二三区| 最新国产精品鲁鲁免费视频| 久久国产拍爱| 3344在线观看无码| 无码电影在线观看| 亚洲成人黄色在线| 中文无码精品A∨在线观看不卡| 日韩欧美视频第一区在线观看| 国产国产人成免费视频77777| 国产精品亚洲综合久久小说| 爆乳熟妇一区二区三区| 婷婷色中文| 欧美日本不卡| 国产精品蜜芽在线观看| 精品国产乱码久久久久久一区二区| 久久综合色88| 国产男女XX00免费观看| 老熟妇喷水一区二区三区| 97人人做人人爽香蕉精品| 国产在线精彩视频二区| 亚洲一级毛片在线观播放| 国产激情第一页| 亚洲毛片一级带毛片基地| 国产精品三级av及在线观看| 98超碰在线观看| 精品国产美女福到在线不卡f| 毛片免费在线| 亚洲V日韩V无码一区二区| 欧美在线国产| 午夜精品国产自在| 久久天天躁狠狠躁夜夜躁| 久久精品视频亚洲| 亚洲青涩在线| 国产精品hd在线播放| 欧美α片免费观看| 国产精品白浆在线播放| 国产三级视频网站| 亚洲激情99| 亚洲精品高清视频| 国产情侣一区二区三区| 日本午夜网站| 欧美激情成人网| 无码乱人伦一区二区亚洲一| 在线免费观看AV| 国产麻豆精品久久一二三| 欧美另类图片视频无弹跳第一页| 国产高清精品在线91| 9啪在线视频| 午夜精品久久久久久久99热下载| 国产成本人片免费a∨短片| 99一级毛片| 青青青国产视频| 国产在线拍偷自揄拍精品| 国产精品成人免费综合| 欧美性爱精品一区二区三区| 亚洲中文字幕在线观看| 亚洲最大福利网站| 亚洲 日韩 激情 无码 中出| 精品国产黑色丝袜高跟鞋| 国产精品无码一二三视频| 第一区免费在线观看| 国产成人av一区二区三区| 国产亚洲一区二区三区在线| 日本午夜影院| 精品国产一二三区| 日韩精品毛片人妻AV不卡| 欧美人人干|