文/崔寧 曾峰
Java編程題判分軟件具有很大的面向?qū)ο筇匦裕诓僮髦幸⒁鈶?yīng)用的數(shù)據(jù)和操作數(shù)據(jù)的方法,在一個(gè)面向?qū)ο蟮能浖?,面向程序一般是由相對?dú)立的類聲明組成,在Java編程題自動(dòng)判分的軟件中,通過類聲明的判分可以較為合理科學(xué)的解決問題,類聲明中的每一個(gè)類代碼都是由結(jié)構(gòu)性代碼和功能性代碼兩部分組成。其中的結(jié)構(gòu)性代碼是將相互之間存在一種或者多種特定關(guān)系的數(shù)據(jù)元素進(jìn)行集合,主要的研究有數(shù)據(jù)間的固有關(guān)系、數(shù)據(jù)在計(jì)算機(jī)內(nèi)部的存儲(chǔ)方法以及數(shù)據(jù)在不同結(jié)構(gòu)上的操作和處理。結(jié)構(gòu)性代碼主要有包括類、成員變量、構(gòu)造器以及方法聲明的頭部四方面的內(nèi)容。功能性代碼主要包括構(gòu)造器和體代碼兩方面的內(nèi)容。在自動(dòng)判分的類層體系中,類是按照一定的體系和層次分布排列的,可以使子類集成超類,可以更好的完成自動(dòng)評分。
Java編程題自動(dòng)判分軟件中,要保證判分性能豐富準(zhǔn)確,降低判分的復(fù)雜性,提高準(zhǔn)確度,比如在評分過程中,成員變量和方法聲明的頭部應(yīng)該分別進(jìn)行判讀和評分,所需要的源代碼也應(yīng)該分別開來,從而保證評分的準(zhǔn)確度。Java編程要對所做出的評分進(jìn)行解釋,Java字節(jié)符要提供對應(yīng)結(jié)構(gòu)中性的目標(biāo)文件格式,保證Java代碼可以有效的傳遞到評分程序上,實(shí)現(xiàn)Java編程的解釋功能,Java編程可以很快的將新類因素裝進(jìn)編程環(huán)境,實(shí)現(xiàn)增量目的。保證編程軟件中的輸入?yún)?shù)和比對指標(biāo)可以完全訪問,也可以實(shí)現(xiàn)評分對象的互換和調(diào)用。
雖然Java編程題自動(dòng)判分軟件中可以實(shí)現(xiàn)評分對象的互換和調(diào)用,但是評分的新類因素畢竟在成分和邏輯上存在很大的差異,如果不對評分新類進(jìn)行準(zhǔn)確分離和篩選,就會(huì)造成評分軟件系統(tǒng)出現(xiàn)混亂。因此在各個(gè)評分因子上要保持其獨(dú)立性,不要造成某一個(gè)評分因子影響整個(gè)評分系統(tǒng)的結(jié)果,要在保證Java編程的安全性和穩(wěn)健性上實(shí)現(xiàn)評分系統(tǒng)的準(zhǔn)確性和獨(dú)立性。
Java反射機(jī)制就是在運(yùn)行過程中,對于任何一個(gè)類,都可以通過反射機(jī)制得知類的所有屬性,這種方法可以快速實(shí)現(xiàn)對類的調(diào)用和分析,獲取到的動(dòng)態(tài)信息可以有效的實(shí)現(xiàn)Java程序的自動(dòng)評判。
Java反射機(jī)制有運(yùn)行時(shí)生成對象實(shí)例、運(yùn)行時(shí)調(diào)用方法和運(yùn)行時(shí)更改屬性這三方面的動(dòng)態(tài)特性。使用反射機(jī)制可以很大程度上提高評分代碼的靈活性,實(shí)現(xiàn)評分系統(tǒng)的快速性和準(zhǔn)確性,但是在使用過程中,通過反射機(jī)制創(chuàng)建的對象性能上會(huì)有明顯的缺點(diǎn),評分程序啟動(dòng)時(shí),某一個(gè)類就會(huì)發(fā)生反射,快速形成類的反射圖像,在評分軟件體系中就會(huì)形成Java反射機(jī)制框架,創(chuàng)建Java對象數(shù)據(jù)信息,然后在軟件中進(jìn)行字節(jié)符判斷,進(jìn)而實(shí)現(xiàn)對數(shù)據(jù)信息的自動(dòng)評分。
Java反射機(jī)制的實(shí)現(xiàn)主要是依靠Class、Constructor、Field、Method這四類。Class類獲取類對象的方法有三種,一種就是通過類名獲得Class>Class=ClassName.class;另外一種是通過類名全路徑獲得:Class> class =Class.forName(“類名全路徑”);最后一種就是通過實(shí)例對象獲得:Class> class = object.getClass()。Class.forName()除 了 要 將 類 的Class文件加載到j(luò)vm中,還要對類進(jìn)行解釋分析,執(zhí)行類中的static模塊,還要執(zhí)行給靜態(tài)變量賦值的作用,Java反射機(jī)制可以很靈活的處理源數(shù)據(jù)代碼,這些代碼進(jìn)行合理性搭配,不需要在組件中進(jìn)行源代碼鏈接,就可以實(shí)現(xiàn)評分系統(tǒng)的運(yùn)作。
Java反射機(jī)制中涉及到了靜態(tài)編譯和動(dòng)態(tài)編譯的概念,所謂的靜態(tài)編譯就是指在編譯的過程中確定類的類型,綁定源代碼信息數(shù)據(jù)庫,做到通過。動(dòng)態(tài)編譯主要是指Java反射機(jī)制和自動(dòng)評分系統(tǒng)開始運(yùn)作時(shí),確定類的類型和綁定對象,動(dòng)態(tài)編譯最大程度上發(fā)揮了Java的靈活性,充分體現(xiàn)了Java反射機(jī)制多態(tài)的應(yīng)用,降低了類之間的耦合性。
Java反射機(jī)制可以實(shí)現(xiàn)動(dòng)態(tài)創(chuàng)建對象和編譯,有很大的靈活性。通過Java反射機(jī)制可以獲得類的各種內(nèi)容,還實(shí)現(xiàn)了類的反編譯,對于Java反射機(jī)制來說,這種先編譯再進(jìn)行運(yùn)作的語言,使代碼更加靈活,更容易實(shí)現(xiàn)面對現(xiàn)象。
Java反射機(jī)制的缺點(diǎn)就是對軟件的性能有所影響,通過Java反射機(jī)制,進(jìn)行的一般都是解釋性操作,這個(gè)時(shí)候告訴Java軟件操作系統(tǒng),可以滿足要求,但是這類操作總是慢于只直接執(zhí)行相同的操作。因此具有很大的局限性,在使用過程中無法實(shí)現(xiàn)某些功能。
Java反射機(jī)制極大的提高了自動(dòng)評分程序的靈活性和拓展性,可以降低評分模塊的耦合性,提升軟件自身的適應(yīng)性;Java反射機(jī)制可以讓評分程序更好的創(chuàng)建和控制類對象,在操作中無需進(jìn)行編碼目標(biāo)類的提前編制;Java反射機(jī)制能夠在評分軟件運(yùn)行時(shí),判斷類的變量和方法,實(shí)現(xiàn)對類的精準(zhǔn)調(diào)用;Java反射機(jī)制是構(gòu)建自動(dòng)評分框架技術(shù)的基礎(chǔ)所在,使用反射機(jī)制可以避免將數(shù)據(jù)源代碼寫死在評分框架中。Java反射機(jī)制極大的激發(fā)了編程語言的靈活性,強(qiáng)化了反射機(jī)制的多態(tài)特性,進(jìn)一步提升了面向?qū)ο缶幊痰某橄竽芰Α?/p>
(1)調(diào)用者首先要對自動(dòng)評分軟件的結(jié)構(gòu)框架有深入的了解,調(diào)用者要向自動(dòng)評分軟件框架提交評判程序,也就是編程中的含有類的字節(jié)符組成的字節(jié)數(shù)組,這些字節(jié)數(shù)組就像人體的骨骼框架一樣,支撐著評分軟件系統(tǒng)內(nèi)部的正常運(yùn)作,是評分軟件系統(tǒng)工作的基礎(chǔ)。
(2)評分軟件框架要裝入字節(jié)符進(jìn)而產(chǎn)生Class對象,應(yīng)用Class獲取類對象的三種方法,讀取相應(yīng)的判分項(xiàng)配置信息,并將這些判分項(xiàng)配置信息進(jìn)行數(shù)據(jù)分析和處理。
(3)通過對每一個(gè)判分項(xiàng)配置信息進(jìn)行分析和處理,最后根據(jù)判分項(xiàng)配置信息的最終分析結(jié)果進(jìn)行調(diào)用,調(diào)用程序中已經(jīng)預(yù)先設(shè)計(jì)好的評分標(biāo)準(zhǔn),實(shí)現(xiàn)自動(dòng)評分。
(4)自動(dòng)判分軟件根據(jù)Java反射機(jī)制所返回的判分結(jié)果進(jìn)行整體分析評判,得出判分結(jié)果。
判分系統(tǒng)中判分器上有一個(gè)XML文件,XML文件是由一組markitemcategory元素組成,每一個(gè)markitemcategory元素都會(huì)被定義成為不相同的判分標(biāo)準(zhǔn)類文件,主要就是類別名和判分器軟件的類名,比如
自定義類裝入器是Java反射機(jī)制在自動(dòng)判分軟件框架的重要設(shè)計(jì)步驟之一,其中類的層次關(guān)系和加載順序主要就是根類加載器、擴(kuò)展類加載器和系統(tǒng)類加載器這三類。根類加載器也被稱之為啟動(dòng)類加載器,它主要負(fù)責(zé)/lib下面的類庫加載到內(nèi)存中,開發(fā)者無法直接獲取到啟動(dòng)類加載器的引用,所以不能直接通過引用進(jìn)行操作。擴(kuò)展類加載器是由Sun的ExtClassloader實(shí)現(xiàn)的,主要負(fù)責(zé)將< Java_Runtime_Home >/lib/ext或者由系統(tǒng)變量Java.ext.dir指定到相應(yīng)的位置,開發(fā)者可以直接使用擴(kuò)展類加載器對判分軟件系統(tǒng)進(jìn)行修補(bǔ)和完善。系統(tǒng)類加載器是通過Sun的AppClassloader實(shí)現(xiàn)的,主要負(fù)責(zé)將系統(tǒng)類路徑中指定的文件類型加載到自動(dòng)判分軟件系統(tǒng)中去,可以對系統(tǒng)類加載器直接引用。進(jìn)而實(shí)現(xiàn)判分軟件系統(tǒng)的多功能和多層次運(yùn)作。
通過Java編程題自動(dòng)判分軟件框架的設(shè)計(jì),可以很好的實(shí)現(xiàn)計(jì)算機(jī)的可視化操作和交互操作,充分實(shí)現(xiàn)了Java語言的解釋執(zhí)行、可移植、體系結(jié)構(gòu)中立和多線程的功能,在信息化時(shí)代的應(yīng)用更加廣泛。