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