• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      軟件設(shè)計(jì)模式在Java程序設(shè)計(jì)課程教學(xué)中的應(yīng)用研究

      2017-09-23 15:09張璞夏英
      軟件工程 2017年7期
      關(guān)鍵詞:Java程序設(shè)計(jì)面向?qū)ο?/a>教學(xué)模式

      張璞 夏英

      摘 要:Java程序設(shè)計(jì)課程學(xué)習(xí)過程中,學(xué)生面臨面向?qū)ο缶幊趟季S方式轉(zhuǎn)換困難,難以靈活應(yīng)用面向?qū)ο筇匦缘葐栴}。針對這些問題,提出將軟件設(shè)計(jì)模式有機(jī)融入于課程教學(xué)的教學(xué)模式。闡述了教學(xué)模式的教學(xué)過程設(shè)計(jì)、在面向?qū)ο蟾拍罱虒W(xué)過程及Java SE類庫教學(xué)過程中軟件設(shè)計(jì)模式的應(yīng)用,最后,對上述內(nèi)容進(jìn)行了總結(jié)。

      關(guān)鍵詞:Java程序設(shè)計(jì);軟件設(shè)計(jì)模式;面向?qū)ο?;教學(xué)模式

      中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A

      Abstract:In the learning process of Java programming course,students face the difficulty of converting to object oriented programming thinking mode,and it is also difficult for students to flexibly apply object-oriented characteristics.In view of these problems,the paper puts forward that the software design pattern should be organically integrated into the course teaching mode.It expounds the teaching process design of the teaching mode,and the application of the software design pattern in the teaching process of the object-oriented concept and Java SE class library.Finally,the above contents are summarized.

      Keywords:Java programming;software design pattern;object-oriented;teaching mode

      1 引言(Introduction)

      作為一種面向?qū)ο蟪绦蛟O(shè)計(jì)語言,Java由于具有面向?qū)ο?、平臺無關(guān)、安全性、內(nèi)置多線程等眾多優(yōu)良特性[1],已被廣泛應(yīng)用于Web開發(fā)、智能手機(jī)、桌面應(yīng)用等不同領(lǐng)域,是當(dāng)前最流行的編程語言之一。作為程序設(shè)計(jì)教學(xué)的一個(gè)重要分支,國內(nèi)外眾多高校均開設(shè)了Java程序設(shè)計(jì)課程,該課程已成為一門重要的專業(yè)基礎(chǔ)課。

      Java程序設(shè)計(jì)課程教學(xué)過程中,需要將面向?qū)ο缶幊趟季S的培養(yǎng)作為重點(diǎn),并貫穿于教學(xué)過程始終,使學(xué)生能夠靈活運(yùn)用面向?qū)ο笏枷雭斫鉀Q實(shí)際問題。從實(shí)際情況來看,許多高校將C語言開設(shè)為第一門程序設(shè)計(jì)語言課程,因此,學(xué)習(xí)Java語言時(shí),學(xué)生已經(jīng)具備C語言基礎(chǔ)。由于受面向過程編程思想的影響,很多學(xué)生仍然存在由面向過程轉(zhuǎn)換為面向?qū)ο缶幊趟季S的困難。例如,在進(jìn)行類的設(shè)計(jì)時(shí),一些學(xué)生習(xí)慣于將許多靜態(tài)方法定義于一個(gè)類中,甚至覺得類只是在C語言函數(shù)的基礎(chǔ)上加個(gè)框而已。一些學(xué)生則陷于Java編程語法的記憶與機(jī)械理解之中,未能掌握面向?qū)ο缶幊陶Z言的基本特征及概念,不熟悉使用類進(jìn)行面向?qū)ο笤O(shè)計(jì)的基本原則,導(dǎo)致遇到具體問題時(shí),不能靈活應(yīng)用繼承、多態(tài)等面向?qū)ο筇匦裕鶎?shí)現(xiàn)代碼的可復(fù)用性、可擴(kuò)展性差。

      軟件設(shè)計(jì)模式是從許多優(yōu)秀軟件系統(tǒng)中總結(jié)出的可復(fù)用設(shè)計(jì)方案[2,3]。文獻(xiàn)[2]最先將設(shè)計(jì)模式的概念引入軟件開發(fā)領(lǐng)域,經(jīng)過分類編目后,歸納總結(jié)出了23種設(shè)計(jì)模式。已有研究表明[4,5],設(shè)計(jì)模式思想在面向?qū)ο蟪绦蛟O(shè)計(jì)教學(xué)中有重要的作用,把設(shè)計(jì)模式引入教學(xué)過程中,能使學(xué)生更加深刻地理解面向?qū)ο笏枷?,了解面向?qū)ο笤O(shè)計(jì)的基本原則,提高編程能力,有助于開發(fā)更易維護(hù)、可擴(kuò)展性強(qiáng)、復(fù)用性好的系統(tǒng)。

      針對學(xué)生轉(zhuǎn)換面向?qū)ο缶幊趟季S困難,難以靈活應(yīng)用面向?qū)ο筇匦缘葐栴},通過教學(xué)實(shí)踐,筆者在不同教學(xué)模塊中有針對性、有目的性地引入一些經(jīng)典設(shè)計(jì)模式,在教學(xué)過程中有機(jī)融入設(shè)計(jì)模式,取得了良好效果。下面對軟件設(shè)計(jì)模式在Java課程教學(xué)中的應(yīng)用進(jìn)行介紹。

      2 教學(xué)過程設(shè)計(jì)(Design of the teaching process)

      面向?qū)ο蟪绦蛟O(shè)計(jì)課程的教學(xué)核心不是學(xué)習(xí)設(shè)計(jì)模式[4],因此,在教學(xué)過程中,不需要學(xué)習(xí)全部設(shè)計(jì)模式,而需要緊密結(jié)合教學(xué)內(nèi)容,挑選引入一部分設(shè)計(jì)模式來深化學(xué)生對面向?qū)ο缶幊趟枷氲睦斫夂挽`活運(yùn)用。表1給出了筆者在課程教學(xué)活動(dòng)中所引入的設(shè)計(jì)模式。

      表1中的“類和對象”“類的繼承”“接口”等教學(xué)模塊屬于Java中面向?qū)ο蟛糠值慕虒W(xué)內(nèi)容,而“集合框架”“輸入輸出流”“圖形用戶界面”“多線程”等教學(xué)模塊則屬于Java SE類庫部分的教學(xué)內(nèi)容。本文后續(xù)內(nèi)容將分別介紹設(shè)計(jì)模式在以上兩部分教學(xué)內(nèi)容中的應(yīng)用。

      在各個(gè)教學(xué)模塊的教學(xué)實(shí)施過程中,為了遵循學(xué)生的認(rèn)知規(guī)律,激發(fā)學(xué)生的學(xué)習(xí)興趣,通過精心設(shè)計(jì)教學(xué)案例,筆者采用了“案例驅(qū)動(dòng)”的設(shè)計(jì)模式教學(xué)過程,如圖1所示。

      由教師先描述案例,介紹所需要解決的問題,讓學(xué)生帶著問題進(jìn)入內(nèi)容的學(xué)習(xí),從而引起學(xué)生的好奇心。之后由教師對解決案例所用設(shè)計(jì)模式的意圖及模式結(jié)構(gòu)圖進(jìn)行介紹,根據(jù)模式結(jié)構(gòu)圖的UML圖形描述來介紹模式結(jié)構(gòu)中的各種角色,再從案例中分析得出各種角色所對應(yīng)的類或接口,并用Java語言進(jìn)行實(shí)現(xiàn),得到案例的解決方案。最后,由教師對設(shè)計(jì)模式的效果、其中體現(xiàn)的面向?qū)ο笏枷爰霸O(shè)計(jì)原則等進(jìn)行歸納總結(jié)。

      3 面向?qū)ο蠼虒W(xué)內(nèi)容中引入設(shè)計(jì)模式(Introducing

      design pattern into object-oriented teaching

      content)endprint

      3.1 通過設(shè)計(jì)模式來深化基本概念的理解

      面向?qū)ο蟮暮诵乃际菍?shù)據(jù)和對數(shù)據(jù)的操作封裝在一起形成對象,并通過抽象找出同一類對象的共同狀態(tài)和行為,從而得到類。Java程序的基本單位是類,編寫程序時(shí)要先定義好類,再由類實(shí)例化生成對象?!邦惡蛯ο蟆笔荍ava中的重要教學(xué)內(nèi)容。在教學(xué)過程中,學(xué)生會接觸到許多新概念,例如類、對象、構(gòu)造方法、類及成員的訪問權(quán)限、靜態(tài)變量、實(shí)例變量、靜態(tài)方法、實(shí)例方法等。在學(xué)習(xí)了這些基本概念的基礎(chǔ)上,筆者在教學(xué)過程中引入單例設(shè)計(jì)模式來加深學(xué)生對以上基本概念的理解。

      教學(xué)過程中,首先讓學(xué)生了解在實(shí)際編程中,有些對象僅需要一個(gè),例如操作系統(tǒng)中的打印池對象。繼而提出問題,如何保證設(shè)計(jì)的類在僅有一個(gè)實(shí)例對象。

      案例設(shè)計(jì):操作系統(tǒng)中,打印池(Print Spooler)是一個(gè)用于管理打印任務(wù)的應(yīng)用,在系統(tǒng)中只允許運(yùn)行一個(gè)打印池對象,要求使用單例模式來模擬打印池。

      描述了案例后,再由教師介紹單例模式的意圖和模式結(jié)構(gòu)圖,從案例入手,分析出單例角色類(PrintSpooler),給出案例的模式實(shí)現(xiàn)代碼:

      class PrintSpooler {

      private static PrintSpooler instance=null; //私有靜態(tài)成員變量

      private PrintSpooler(){ } //私有構(gòu)造方法

      public static PrintSpooler getInstance(){ //公有的靜態(tài)方法

      if(instance==null) {

      instance=new PrintSpooler();

      }

      return instance;

      }

      public void print(){//實(shí)例方法

      System.out.println("執(zhí)行打印任務(wù)");

      }

      }

      講解了模式實(shí)現(xiàn)代碼后,再由教師啟發(fā)學(xué)生思考并回答該模式的幾個(gè)要點(diǎn):單例類為何要定義私有構(gòu)造方法?為何要定義私有的靜態(tài)成員變量和公有靜態(tài)方法來保存和獲得對象實(shí)例?單例模式是如何保證對象實(shí)例的唯一性的?最后再總結(jié)單例模式的適用情況。通過將單例模式與Java面向?qū)ο笳Z法相結(jié)合,逐步深入講解來加深學(xué)生對面向?qū)ο蟾拍畹睦斫狻?/p>

      3.2 通過設(shè)計(jì)模式來深化面向?qū)ο笳Z言基本特征的理解

      在學(xué)習(xí)面向?qū)ο笳Z言的基本特征時(shí),學(xué)生普遍感覺多態(tài)的概念比較抽象,難以理解。因此,筆者將模板方法模式引入到“類的繼承”教學(xué)模塊中,設(shè)計(jì)了模板方法模式來模擬銀行業(yè)務(wù)辦理流程的案例。

      案例設(shè)計(jì):客戶在銀行辦理業(yè)務(wù)時(shí),一般都包含取號排隊(duì)、辦理具體業(yè)務(wù)、對工作人員進(jìn)行評分等步驟。無論具體業(yè)務(wù)是取款、存款還是轉(zhuǎn)賬,其基本流程都是固定的。要求使用模板方法模式來模擬銀行業(yè)務(wù)的辦理流程。

      敘述案例后,由教師介紹模板方法模式的意圖:定義一個(gè)操作中算法的骨架,而將一些步驟延遲到子類中,從而使子類可以不改變一個(gè)算法的結(jié)構(gòu)即可重定義該算法的某些特定步驟。在此基礎(chǔ)上,給出模式的UML結(jié)構(gòu)圖來介紹模式中所包含的兩個(gè)角色:抽象類(AbstractClass)和具體子類(ConcreteClass),然后從案例中引導(dǎo)學(xué)生根據(jù)模式結(jié)構(gòu)圖來定義出案例中的抽象類和幾個(gè)具體子類,進(jìn)而給出案例的模板方法模式實(shí)現(xiàn)代碼:

      abstract class BankProcess{ //抽象類

      public void takeNumber() {

      System.out.println("取號排隊(duì)");

      }

      public abstract void transact();

      public void evaluate() {

      System.out.println("反饋評分");

      }

      public void process() { //模板方法

      this.takeNumber();

      this.transact();

      this.evaluate();

      }

      }

      class Deposit extends BankProcess { //具體子類:存款類

      public void transact() {

      System.out.println("存款");

      }

      }

      … …

      class Transfer extends BankProcess { //具體子類:轉(zhuǎn)賬類

      public void transact() {

      System.out.println("轉(zhuǎn)賬");

      }

      }

      進(jìn)行代碼講解后,由教師有意識地引導(dǎo)學(xué)生畫出上述實(shí)現(xiàn)代碼的UML類圖,如圖2所示,加深學(xué)生對程序結(jié)構(gòu)和模式結(jié)構(gòu)的理解。

      再由教師引導(dǎo)學(xué)生思考繼承及多態(tài)性等特征在該模式中的體現(xiàn),使學(xué)生認(rèn)識到在模板方法模式中,子類可以體現(xiàn)多態(tài)性。即子類可以根據(jù)各自的需要覆蓋父類中定義的方法,由于面向?qū)ο蟮亩鄳B(tài)性,子類對象執(zhí)行從父類繼承來的模板方法時(shí),其中的方法調(diào)用將通過動(dòng)態(tài)綁定方式來實(shí)現(xiàn)子類對父類行為的反向控制。最后,由教師總結(jié)歸納模板方法模式的適用情況。

      3.3 通過設(shè)計(jì)模式來深化面向?qū)ο笤O(shè)計(jì)原則的理解

      Java語言的學(xué)習(xí)過程中,掌握好面向?qū)ο蠡菊Z法和概念后,了解一下用類進(jìn)行面向?qū)ο笤O(shè)計(jì)的基本原則,如“開放—閉合”原則、聚合復(fù)用原則、依賴倒轉(zhuǎn)原則等,不僅有助于加深學(xué)生對面向?qū)ο缶幊趟枷氲睦斫?,還有助于編寫出易維護(hù)、易擴(kuò)展和易復(fù)用的程序代碼。endprint

      在學(xué)習(xí)Java中“接口”部分教學(xué)模塊時(shí),筆者引入了策略模式來幫助學(xué)生理解“開放—閉合”等設(shè)計(jì)原則。

      案例設(shè)計(jì):在多個(gè)裁判負(fù)責(zé)打分的比賽中,每位裁判給選手一個(gè)評分,選手的最后得分的評分方案(策略)可以有多種。如可以是所有評分的平均值,也可以是去掉一個(gè)最高分和一個(gè)最低分后的平均值。要求使用策略模式來從多種評分方案中選擇比賽的評分方案。

      和前述教學(xué)過程類似,通過對案例進(jìn)行描述及分析后,使學(xué)生了解清楚策略模式的意圖是定義及封裝一系列算法,并讓它們可以相互替換。然后再根據(jù)策略模式結(jié)構(gòu)圖中的上下文(Context)、策略(Strategy)和具體策略(ConcreteStrategy)等不同角色找出案例中的對應(yīng)類,進(jìn)行代碼實(shí)現(xiàn),并引導(dǎo)學(xué)生畫出如圖3所示的模式結(jié)構(gòu)圖。

      interface Strategy { //策略接口

      public double computeAverage(double [] a);

      }

      class AverageScore{ //上下文類

      Strategy strategy;

      public void setStrategy(Strategy strategy){

      this.strategy=strategy;

      }

      public double getAverage (double [] a){

      if(strategy!=null)

      return strategy.computeAverage(a);

      }

      }

      class StrategyA implements Strategy{ //具體策略類

      public double computeAverage(double [] a){

      double score=0,sum=0;

      for(int i=0;i

      sum=sum+a[i];

      }

      score=sum/a.length;

      return score;

      }

      }

      class StrategyB implements Strategy{ //具體策略類

      public double computeAverage(double [] a){

      if(a.length<=2) return 0;

      double score=0,sum=0;

      Arrays.sort(a); //排序數(shù)組

      for(int i=1;i

      sum=sum+a[i];

      }

      score=sum/(a.length-2);

      return score;

      }

      }

      接下來,由教師對模式中所涉及到的“開放—閉合”原則進(jìn)行分析。上下文類AverageScore只知道它要使用某一個(gè)實(shí)現(xiàn)Strategy接口類的實(shí)例,但不需要知道具體是哪一個(gè)類,因此,當(dāng)增加新的具體策略時(shí),不需要修改上下文類的代碼,上下文就可以引用新的具體策略的實(shí)例。最后,教師對策略模式的主要優(yōu)點(diǎn)及適用情況進(jìn)行總結(jié)。使學(xué)生掌握策略模式通過對“開放—閉合”原則的完美支持,在不修改原有系統(tǒng)的基礎(chǔ)上可以更換算法或者增加新的算法,從而能很好地管理多種評分方案,提高代碼可擴(kuò)展性。

      4 J2SE類庫教學(xué)內(nèi)容中引入設(shè)計(jì)模式(Introducing

      design pattern into J2SE class library teaching

      content)

      Java SE平臺的類庫設(shè)計(jì)中也應(yīng)用了大量的設(shè)計(jì)模式,因此,在API類庫教學(xué)過程中,介紹所涉及的設(shè)計(jì)模式,一方面可以使學(xué)生更好地掌握類庫中相關(guān)類和接口的作用及功能;另一方面,也能使學(xué)生對面向?qū)ο笏枷爰盎驹瓌t、設(shè)計(jì)模式的實(shí)際運(yùn)用有更深的體會。因此,筆者在進(jìn)行集合框架、輸入輸出、圖形用戶界面編程、多線程等內(nèi)容的教學(xué)過程中,對J2SE類庫中所涉及到的典型模式也作了相應(yīng)介紹。

      在學(xué)習(xí)Java集合框架時(shí),筆者引入了迭代器模式,通過介紹該模式來幫助學(xué)生更好地掌握集合框架的設(shè)計(jì)思想。JDK類庫中,Collection接口的iterator()方法返回一個(gè)Iterator類型的對象,java.util.Iterator接口就是迭代器模式的應(yīng)用。通過迭代器模式訪問一個(gè)列表(List)或者一個(gè)集合(Set)對象的內(nèi)容時(shí),無需了解聚合對象的內(nèi)部表示,使遍歷操作變得簡單。

      在學(xué)習(xí)輸入輸出流時(shí),Java中的I/O類庫由于其龐雜的特點(diǎn),一直是學(xué)生學(xué)習(xí)的難點(diǎn)。為此,筆者在介紹I/O類庫的過程中,引入了裝飾模式來幫助學(xué)生掌握I/O類庫結(jié)構(gòu)。在I/O處理中,Java將數(shù)據(jù)抽象為流(Stream),輸入流(Input Stream)、輸出流(OutputStream)類只提供最基本的數(shù)據(jù)讀寫功能。而FilterInputStream作為抽象裝飾類,BufferedInputStream、DataInputStream、BufferedOutputStream、DataOutputStream等類則作為具體裝飾類,這些類的設(shè)計(jì)很好地應(yīng)用了裝飾模式,以透明的方式動(dòng)態(tài)地給一個(gè)對象附加上更多的功能,這樣就可以在不需要?jiǎng)?chuàng)造更多子類的情況下,將對象的功能加以擴(kuò)展。

      在學(xué)習(xí)圖形用戶界面時(shí),隨著教學(xué)內(nèi)容的展開,筆者分別引入了組合模式、裝飾模式、策略模式、觀察者模式來介紹java.awt和javax.swing包中的類和接口。例如,介紹AWT/Swing庫中的組件類(Component)、容器類(Container)及系列子類的關(guān)系時(shí),通過組合模式的介紹,學(xué)生很快地掌握了類庫中的大量組件類、容器類之間的關(guān)系。介紹容器的布局管理方式時(shí),筆者有意識地啟發(fā)學(xué)生思考Java類庫中Container類、LayoutManager接口間的關(guān)系實(shí)際上就是策略模式的一個(gè)經(jīng)典應(yīng)用。介紹事件處理時(shí),為了幫助學(xué)生深刻理解事件處理機(jī)制,筆者相應(yīng)介紹了觀察者模式。在javax.swing包中,通過裝飾模式能動(dòng)態(tài)地給一些組件增加新的行為或改善其外觀顯示。例如,JList組件本身并不支持滾動(dòng)條功能,要?jiǎng)?chuàng)建可以滾動(dòng)的列表,則需要使用JScrollPane類來作為裝飾器。

      在學(xué)習(xí)多線程時(shí),針對“類和對象”教學(xué)模塊中的單例模式實(shí)現(xiàn)代碼,由教師分析在多線程環(huán)境下所可能產(chǎn)生的線程安全問題??梢约僭O(shè)這樣一種情況:當(dāng)?shù)谝粋€(gè)線程判斷引用變量為空之后,對象實(shí)例化過程尚未完成之前,第二個(gè)線程開始判斷引用變量是否為空。由于第一個(gè)線程尚未完成對象創(chuàng)建,因而引用變量instance還為空,這將導(dǎo)致第二個(gè)線程實(shí)例化第二個(gè)單例對象,從而導(dǎo)致不正常情況的發(fā)生。解決方法是通過線程同步控制機(jī)制,在getInstance()方法前加上synchronized關(guān)鍵字,通過對象鎖來實(shí)現(xiàn)線程安全的單例模式實(shí)現(xiàn)。

      5 結(jié)論(Conclusion)

      教學(xué)實(shí)踐證明,在Java程序設(shè)計(jì)課程教學(xué)過程中有機(jī)地引入設(shè)計(jì)模式的這種教學(xué)模式,將設(shè)計(jì)模式與面向?qū)ο蟮恼Z法、概念、設(shè)計(jì)原則相結(jié)合,對培養(yǎng)學(xué)生的面向?qū)ο缶幊趟季S方式,提高編程能力等方面均有積極作用。這種教學(xué)模式也得到了學(xué)生良好的評價(jià),學(xué)生的學(xué)習(xí)主動(dòng)性、靈活運(yùn)用面向?qū)ο筇匦越鉀Q問題的能力均得到了提高,為后續(xù)課程的學(xué)習(xí)及實(shí)踐應(yīng)用奠定了良好基礎(chǔ)。

      參考文獻(xiàn)(References)

      [1] 耿祥義,張躍平.Java面向?qū)ο蟪绦蛟O(shè)計(jì)(第2版)[M].北京:清華大學(xué)出版社,2013.

      [2] Erich G,et al.李英軍,等,譯.設(shè)計(jì)模式:可復(fù)用面向?qū)ο筌浖幕A(chǔ)[M].北京:機(jī)械工業(yè)出版社,2004.

      [3] 劉偉.設(shè)計(jì)模式實(shí)訓(xùn)教程[M].北京:清華大學(xué)出版社,2012.

      [4] 楊瑞龍,朱征宇,朱慶生.引入軟件設(shè)計(jì)模式的面向?qū)ο蟪绦蛟O(shè)計(jì)教學(xué)方法[J].計(jì)算機(jī)教育,2012(10):97-100.

      [5] 章品正,於文雪.設(shè)計(jì)模式在C++課程教學(xué)中的運(yùn)用[J].計(jì)算機(jī)教育,2014,218(14):41-45.

      作者簡介:

      張 璞(1977-),男,博士,副教授.研究領(lǐng)域:數(shù)據(jù)挖掘,自然語言處理.

      夏 英(1972-),女,博士,教授.研究領(lǐng)域:數(shù)據(jù)庫與數(shù)據(jù)挖掘,時(shí)空大數(shù)據(jù)分析.

      猜你喜歡
      Java程序設(shè)計(jì)面向?qū)ο?/a>教學(xué)模式
      群文閱讀教學(xué)模式探討
      面向?qū)ο蟮挠?jì)算機(jī)網(wǎng)絡(luò)設(shè)計(jì)軟件系統(tǒng)的開發(fā)
      面向?qū)ο蟮臄?shù)據(jù)交換協(xié)議研究與應(yīng)用
      《Java程序設(shè)計(jì)》課程網(wǎng)站的設(shè)計(jì)與實(shí)現(xiàn)
      Java程序設(shè)計(jì)基礎(chǔ)課實(shí)踐教學(xué)中的分層教學(xué)模式研究
      基于實(shí)訓(xùn)項(xiàng)目的Java程序設(shè)計(jì)實(shí)驗(yàn)教學(xué)模式改革與實(shí)踐
      基于工程思維的Java程序設(shè)計(jì)課程教學(xué)研究
      “一精三多”教學(xué)模式的探索與實(shí)踐
      面向?qū)ο骔eb開發(fā)編程語言的的評估方法
      “導(dǎo)航杯”實(shí)踐教學(xué)模式的做法與成效
      施甸县| 会东县| 东明县| 鄂尔多斯市| 镇宁| 永胜县| 会理县| 东乌| 孟村| 云南省| 博爱县| 定州市| 孟州市| 比如县| 渑池县| 衡南县| 南丹县| 镇赉县| 洮南市| 忻州市| 金乡县| 安化县| 平山县| 湖州市| 朝阳县| 丹东市| 洛浦县| 陆河县| 改则县| 宝应县| 天祝| 铅山县| 巴楚县| 玉溪市| 英德市| 连山| 长丰县| 山阳县| 永安市| 防城港市| 河北省|