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