崔亮 陳昊 薄艷莉
摘 要: 在目前高校光學教學中,光路、成像、波動光學等教學內容由于比較抽象,經常需要相關儀器設備輔助。隨著光學領域的研究不斷深入、教學內容的調整與更新,現有教學所用儀器設備往往達不到教學要求,而且光學設備往往造價較高,精密程度要求嚴謹,在實際教學中經常造成損壞。IT技術的應用很好地解決了上述問題,本文介紹了JAVA語言在實現可視化光學教學中的應用實例,并闡明了利用IT技術輔助光學教學的必要性和可行性。
關鍵詞: 光學教學 IT技術 JAVA語言
一、概述
由于光學教學內容難懂且抽象,在教學過程中需要呈現的光學現象很難在現實條件下顯現,教師在教學過程中通常需要借助光學儀器設備向學生呈現一些光學現象,但受制于實驗、實訓條件,很多光學現象并不能直觀地呈現在學生面前,勢必使枯燥難懂的光學知識難以被學生直觀理解。教師通常需要在課堂上繪制各類光路圖,解釋各種光學原理,既費時又耗力,未必達到理想的效果。
IT技術擁有可控、可視、可模擬等強大功效,現階段作為課件主力軍的“PPT”是課堂上多媒體教學的主力軍,但其如果應用到光學教學中卻還不夠支撐教學所需。Java語言作為面向對象的高級語言勢必可以解決這一教學問題。
二、開發工具選取
Java,是一種可以撰寫跨平臺應用軟件的面向對象的程序設計語言。Java技術具有卓越的通用性、高效性、平臺移植性和安全性,廣泛應用于個人PC、數據中心等領域。
Jsp,java服務器頁面,是一種動態網頁技術標準。它是在傳統的網頁HTML文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP標記(tag),從而形成JSP文件,后綴名為(*.jsp)。用JSP開發的Web應用是跨平臺的,既能在Linux下運行,又能在其他操作系統上運行。
三、建立需求分析
用Java語言完成光路模擬,其結果應是可調、直觀、可呈現的,需要設計并制作出網頁做前臺,程序為后臺的光學模擬系統。系統開發的首要任務是需求分析,主要從以下方面開展。
一是誰將使用本系統?本教學系統的開發的首要用戶是廣大教學一線的教師和學生。二是系統參與者會通過此系統做些什么事情?采用本系統完成在現實條件下不能呈現的光學現象和光路的模擬顯示。三是同一個參與者所做的實驗結果是否一致?由于系統涉及的是物理學光學定理,既然是定理,就是永恒的,不會發生“同一個輸入出現不同結果”的異常現象。
四、系統設計
本次設計主要針對光的反射、光的折射、凸透鏡成像、類的建立。在此階段中,嘗試描述class的長相、class與class之間的互動方式。即描述“類—責任—協同合作關系(Class-Responsibility-Collaboration,CRC)”。下面以完成的4個任務中的第一個為例:Reflection.class。class的名稱:其中建立了2個class。第一個class為:public class Reflection extends JApplet{/*code*/},這個是主類,它繼承了JApplet。第二個class為:Mypanel extends JPanel implements ActionListener{/*code*/},這個類繼承了JPanel類,以及實現了事件監聽接口。class的責任:類Reflection的責任主要是對applet進行初始化,以及界面的布局。其中包括聲明了Mypanel;JPanel downframe;布局如下:在downframe上放置一個textfield及兩個button按鈕,用以輸入一些數據和進行事件的觸發,如“Play”按鈕表示可以根據參數來演示定理。“Clear the bodrd”按鈕表示將界面upframe清屏。upframe由于繼承了JPanel,而JPanel有特殊的畫圖功能,因此upframe主要負責接收由down frame中傳來的參數數據,然后對數據進行處理,最后在upframe上根據光學定理進行畫圖演示。
class的協同合作。程序中總共有2個類,即Reflection類和Mypanel類。這兩個類主要是通過button的觸發獲取textfield中的參數進行繪圖工作的。在Reflection類中,將button和textfield的對象都聲明為static型。一旦在Reflection類中的button觸發了一個事件,類Mypanel立刻由其函數public void action Performed(Action Eventevt)throws NumberFormatException{}處理傳遞過來的參數,并且將無效的參數剔除,只接受有效的參數,再根據光學的相關定理計算,將計算結果傳遞給負責繪圖的函數publicvoiddraw(GraphicscurG){},由它進行效果繪圖。
在定義類和變量的基礎上,主要工作也是核心工作就是算法。在編寫程序以前,如何實現軟件預期功能必須有一個有效的算法,這次設計的主體共分成了四個模塊,即光的反射、光的折射、凸透鏡和凹透鏡成像。下面以凸透鏡成像的基本原理為例。凸透鏡成像主要是輸入“物距”和“物高”進行點的確定計算。根據成像公式1/u+1/v=1/f,f是焦距,在實驗中設定為10單位。在具體計算中,根據相似三角形進行公式計算,如下圖所示:
三角形POY(Y代表Y正向)與三角形POY-(Y-代表Y的負向)。互為相似三角形。三角形POY-(Y-代表Y的負向)與三角形POY(Y代表Y正向)互為相似三角形。由相似三角形的原理找出一定的比例就能實現成像的光路,該程序正是在這樣的算法思路下完成的。
以上所有點的計算,都由在類中的compute()函數完成。當計算完畢后,各個類中的點成員變量都賦予了相應的值,然后調用draw()方法,在JPanel上畫出線條即可。
五、軟件測試
在軟件測試中我們選取了教師、學生代表,測試出現的主要問題局限于以正確的有效輸入為之進行正確的“引導”,進行工作。對于程序編寫者來說,需要讓使用者知道什么樣的數據可以輸入,系統才可以接受并且完成工作;什么樣的數據,系統讀了之后會出錯,出錯后需有相對應的提示告知。這里在程序設計中使用了Java中的異常處理,解決了上述問題。
六、結語
通過本光學模擬系統的設計和實現,體現了IT技術(Java語言)在模擬仿真教學中起到的重要作用,通過本系統的使用加深了學生對光學基本原理的理解,加深了對光學知識點的印象,解決了廣大教師上課之所急、所需。隨著IT技術的不斷發展和光學研究的不斷深入,IT技術在光學教學中的應用將更加深入和廣泛。
參考文獻:
[1]陳曉江.分布式系統軟件體系結構建模與開發方法研究[D].西北大學,2010.
[2]劉菲.解析基于JSP/JavaBean技術的Web應用系統開發[J].電腦編程技巧與維護,2011(22).
[3]吳毅杰,張志明.C/S與B/S的比較及其數據庫訪問技術[J].艦船電子工程,2003(02).