陳小奎
(安徽理工大學理學院,安徽淮南 232007)
啟發式教學法在Java課程設計中的實踐與探索
陳小奎
(安徽理工大學理學院,安徽淮南 232007)
為提高學生的Java項目開發能力,在課程設計中采用啟發式教學法,并結合安徽理工大學開設的基于Java開發信息管理系統進行課程設計。在講解Java訪問數據庫的基本知識后,漸進式啟發學生應用所學知識完成項目開發,反思式啟發學生討論項目開發中遇到的問題;引入MVC分層的項目開發思想,通過類比式啟發學生完成課程設計任務。采用啟發式教學,有助于學生夯實面向對象思想基礎知識,理解項目開發框架,提高實踐能力。
Java;課程設計;啟發式教學;實踐環節
啟發式教學法,要求教師善于引導轉化,強調學生是學習的主體,堅持教師主導和學生主體相結合,運用一定的手段和方法,把學生的書本知識轉化為學生的具體知識,再進一步把學生的具體知識轉化為學生的能力[1]。Java面向對象程序設計課程在各高校計算機相關專業的培養方案中都居于重要地位,它是JavaEE和Android軟件開發的基礎。
安徽理工大學開設的Java課程設計時間為10天,共計40學時。實驗環境為JDK1.6、Eclipse3.3、MySQL5.5;任務為設計開發出小型信息管理系統,并撰寫課程設計說明書。具體要求與時間分配見表1。
表1 課程設計進度管理表
課程設計以天為單位分階段進行實施和驗收,有利于提高學生的自我約束能力,以保證質量并能按時完成課程設計任務。
應用啟發式教學,將整個課程設計分成三個階段。第一階段,夯實基礎;第二階段,啟發學生利用已有知識完成添加功能并討論開發過程中的經驗教訓;第三階段,引入MVC分層思想,教師設計一種框架并完成添加記錄的功能,并組織學生對比使用MVC分層前后的優缺點。指導學生完成整個項目,鼓勵學生自己設計基于MVC分層思想的框架。
2.1 夯實Java數據庫開發基礎知識
在開發基于Java的信息管理系統過程中,絕大多數同學沒有項目開發經驗,對Java訪問數據庫的方法不熟悉,直接要求學生一步到位地開發出規范的項目是一種揠苗助長的行為,所以課程設計的“數據庫連接”,要由指導教師把數據庫基礎知識夯實,主要知識點如表2所示。
表2 Java訪問數據庫的基礎知識列表
2.2 啟發學生完成項目部分功能并組織討論
啟發式教學有不同的類型,按照思維邏輯可分為聯想式啟發、對比式啟發、反思式啟發、輻射式啟發、漸進式啟發等[2]。在Java課程設計中主要從以下幾個方面實施啟發式教學。
2.2.1 漸進式啟發學生完成項目中的部分功能模塊
學生掌握表2中的基礎知識后,指導教師使用漸進式啟發學生完成項目中的部分功能。比如以學生信息管理系統的最簡單的添加記錄功能為例,開發添加記錄分成四步漸進教學。
第一步:講解數據庫SQL語法中的insert into語句,例如:
String sqlString=insert into student(‘id’,’name’,’age’) values(‘2011303001’,’張三’,’20’);
第二步:啟發學生思考如何將第一步中的語句中的常量如“張三”等換成Java語句中的變量。通過聯想Java 語言的字符串連接技術,可以將第一步中的語句改為如下代碼:
String studentId=”2011303001”;
String studentName=”張三”;
String studentAge=”20”;
String sqlString=insert into student(‘id’,’name’,’age’)
values(‘”+ studentId +”’,’”+ studentName +”’,’”+ studentAge +”’);//其中單撇號是SQL語法中的標記,雙撇號是字符串標記,加號是字符串連接運算符。
第三步:啟發學生將字符串變量與圖形化界面聯系在一起。開發出圖形化界面,學生編號、學生姓名、年齡等由文本框組件的getText()方法獲得。代碼如下:
String studentId=txtId.getText(); //txtId為輸入學號的文本框
String studentName=txtName.getText();//txtName為輸入姓名的文本框
String studentAge=txtAge.getText();//txtAge為輸入年齡的文本框
第四步:設計圖形化組件按鈕的點擊事件,通過創建數據庫Connection類的對象和Statement對象來執行SQL語句,完成添加學生信息進數據庫。
2.2.2 反思式啟發學生挖掘項目中的缺陷,總結經驗教訓
教師引導學生完成這部分功能后,組織學生討論各自的項目中成功的經驗和失敗的教訓。經過統計,學生大都采用了界面代碼和業務代碼混合在一起的方式。這個過程中大部分學生都提出了項目中代碼重用性差、業務流程模糊、結構松散、維護困難等問題。啟發學生思考如何利用面向對象的思想,掌握將數據庫連接代碼封裝成類的方法,提出界面代碼與業務代碼分離的建議,鼓勵學生提出自己的修改方案。
2.3 引入MVC分層思想,指導學生使用基于MVC的框架
MVC全名是Model View Controller,是模型(model)-視圖(view)-控制器(controller)的縮寫,是一種軟件設計典范,組織代碼用一種業務邏輯和數據顯示分離的方法,這個方法的假設前提是如果業務邏輯被聚集到一個部件里面,而且界面和用戶圍繞數據的交互能被改進和個性化定制而不需要重新編寫業務邏輯[3]。將MVC思想引入課程設計的項目開發中,可以讓學生了解層次以及框架理論,掌握軟件開發規范。
2.3.1 對比式啟發學生理解MVC分層理論
由教師編寫基于MVC的程序實現添加學生信息的功能,在項目StudentInfoSystem中創建3個包,分別為com.model、com.view和com.control,分別對應模型層、視圖層和控制層。模型層中放置業務流程中的對象;視圖層中放置圖形化界面類;控制層中放置業務流程的具體實現。在這種結構下實現了模型、界面和業務處理代碼的有效分離;使項目分工更加明確。架構如圖1所示。
圖1 基于MVC分層的項目架構圖
分層后模型層的Student.java類中描述Student的屬性,其屬性與數據庫中student表的字段一一對應,部分代碼如下:
public class Student{
String id;String name;String age;
public Student(String id,String name,String age){//構造函數
this.id=id;this.name=name;this.age=age;
}
}
引導學生嘗試將數據庫連接對象以及相應處理方法封裝成DbLink.java類,部分代碼如下:
package com.model;
import java.sql.*;
public class DbLink {
String dbURL;//數據庫標識String user; String password;
public DbLink(){
dbURL="jdbc:mysql://localhost:3306/StudentDB";
user="root";
password="123456";
}
public Connection getConnection()
{ try
{Class.forName("com.mysql.jdbc.Driver");
return DriverManager.getConnection(dbURL,user,password);
}catch(Exception e){System.out.println("鏈接失敗"+e.toString());}
return null;}
}
在視圖層AddFrm.java中只有圖形化界面的設計,其中“添加學生到數據庫”按鈕的事件內不再具體地處理數據庫業務,而是采用簡單的對象調用方法,核心代碼如下:
String studentId=txtId.getText(); //txtId為輸入學號的文本框
String studentName=txtName.getText();//txtName為輸入姓名的文本框
String studentAge=txtAge.getText();//txtAge為輸入年齡的文本框
Student stu=new Student(studentId, studentName, studentAge);
//通過構造函數將學生的全部信息封裝在一個stu對象內
StudentDBI Dbi=new StudentDBI();
Dbi.AddToDb(stu);//通過StudentDBI的對象Dbi調用AddToDb方法將信息加入數據庫
控制層中完成數據庫的實現,但不涉及任何圖形化界面元素,所以通過參數傳遞信息。如StudentDBI類的AddToDb方法帶入了一個Student的對象,并把這些信息加入數據庫。
組織大討論,啟發學生用對比法比較應用MVC思想的前后,項目的優缺點。運用鼓勵性語言對學生的思考和發現給以積極評價,可以保護學生的學習熱情,調動其學習積極性,使他們積極、自覺、愉快地學習;同時使后進生克服心理障礙,消除自卑心理,增強自信心[3]。在討論中可以引入MVC思想的優點,例如耦合性低、視圖層和業務層分離,這樣就允許更改視圖層代碼而不用重新編譯模型和控制器代碼,同樣,一個應用的業務流程或者業務規則的改變只需要改動模型層即可。因為模型與控制器和視圖相分離,所以很容易改變應用程序的數據層和業務規則。MVC模式允許使用各種不同樣式的視圖來訪問同一個服務器端的代碼;有利于軟件工程化管理,由于不同的層各司其職,每一層不同的應用具有某些相同的特征,有利于通過工程化、工具化管理程序代碼。
2.3.2 啟發學生參考教師完成的部分系統功能,完成課程設計任務中的其他模塊
從模仿到創造是人類學習的基本規律,教師在完成添加功能模塊后,鼓勵學生在模仿中理解MVC思想,編寫刪除功能模塊。仿照AddFrm.java類編寫DeleteFrm.java類,開發出刪除功能界面;參考添加功能的insert into語句,編寫出按Id號刪除功能的delete from語句,關鍵代碼如下:
String studentId =txtId.getText();//txtId為用來輸入Id的文本框
Student stu=new Student(studentId);
StudentDBI Dbi=new StudentDBI();
Dbi.DeleteFromDb(stu);//通過Dbi調用DeleteFromDb方法將信息從數據庫中刪除
String sqlString=”delete from student where id=’”+ studentId +”’”;
學生按照教師指引的思路獨立完成刪除模塊功能。進一步提出讓學生在理解MVC思想的基礎上,創造自己的框架。學生在掌握Java操作數據庫的代碼后,在采用啟發式教學情況下,能獨立思考,理解和應用較難的MVC思想的人數由原來的40%左右增加到80%,學生能夠更好地完成任務,培養自信心,提高學習的興趣。
課程設計教學的目標是學生獨立完成項目開發,學生是學習的主體,教師的作用是指導學生有效地學習。在教學過程中,運用啟發式教學就是尊重學生學習的主體地位,最大限度地發揮學生學習的主觀能動性[4]。運用啟發式教學的實踐和探索總結:(1)轉變教學思想,充分認識啟發式教學在課程設計中的地位與作用。將啟發式教學作為深化教學改革、優化教學過程的一個指導思想。(2)更新學生觀,尊重學生的學習主體地位,信任學生的能力,鼓勵學生去創造。教師要最大限度地調動學生課堂學習的積極性、主動性與創造性。(3)堅決克服啟發式教學運用中的形式化、片面化,教師必須因地制宜地結合實際的課程,由淺入深地設置知識結構,既不能讓課程設計成為學生的簡單模仿,也不能讓學生無所適從。
[1]陶沼靈.啟發式教學方法研究綜述[J].中國成人教育,2007(4):139-140.
[2]楊憲立,趙喜來.運用啟發式教學法培養學生的思維能力[J].教育與職業,2008(9):34-37.
[3]王麗霞.課堂上鼓勵性語言的重要性[J].新課程,2011(2):214-218.
[4]張忠華,周陽.對啟發式教學的幾個探索[J].教育學刊,2009(2):50-52.
Practice and Exploration on Heuristic Teaching of Course Design Based on Java
CHEN Xiao-kui
(Anhui University of Science and Technology College of Science,Huainan Anhui 232007, China)
In order to improve students’ Java project development level, heuristic teaching of the course design is applied. Combined with the course design based on Java information and management system developed by Anhui University of Science and Technology, the thesis interprets the basic knowledge of the Java to access the database. Progressive mode inspires students to apply the knowledge to complete the project development and heuristic mode inspires students to discuss problems encountered in the project development. MVC theory is introduced in the project to enable students to complete the task by analogy heuristic. Heuristic teaching helps students consolidate basic knowledge of object-oriented thinking and understand framework of product development to improve practical ability.
Java; Course Design; Heuristic Teaching; Practice Teaching
2013-12-05
國家級特色專業(TS12142);安徽理工大學重大教學改革項目(2013zdjy082)。
陳小奎(1978- ),男,吉林松原人,安徽理工大學理學院講師,碩士,從事計算機教育研究。
G642;TP273
A
1008-178X(2014)01-0129-05