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