用XControl實(shí)現(xiàn)面向組件的編程_第1頁
用XControl實(shí)現(xiàn)面向組件的編程_第2頁
用XControl實(shí)現(xiàn)面向組件的編程_第3頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、用XControl實(shí)現(xiàn)面向組件的編程XControl是LabVIEW8中出現(xiàn)的新功能。面向組件的編程(ComponentOrientedProgramming,COP)技術(shù)建立在對象技術(shù)之上,它是對象技術(shù)的進(jìn)一步發(fā)展,類這個概念仍然是組件技術(shù)中一個基礎(chǔ)的概念,但是組件技術(shù)更核心的概念是接口。組件技術(shù)的主要目標(biāo)是復(fù)用粗粒度的復(fù)用。組件的核心是接口。LabVIEW為我們提供了大量漂亮的控件,可以讓我們非常方便的就搭建出一個程序界面。然而,對于追求完美的用戶,LabVIEW提供的為數(shù)有限的控件是遠(yuǎn)遠(yuǎn)不夠的。比如圖1,是LabVIEW8.2一個新功能,導(dǎo)入導(dǎo)入共享庫向?qū)У慕缑?。在它右上方有四個按鈕,這

2、四個按鈕有著特殊的外觀圖標(biāo),在LabVIEW中沒有直接提供這樣的按鈕。要擁有這樣的按鈕,并保存下來以供再次使用,就只能自己制作一個自定義控件。關(guān)于(用戶自定義控件可以參考文章用戶自定義控件中Control,TypeDef.和StrictTypeDef.的區(qū)別)圖 1 : LabVIEW 8.2中 Import Shared Library的界面自定義控件雖然可以定義控件的外觀,但無法定義控件的行為,功能復(fù)雜一點(diǎn)的控件,.ctl文件就愛莫能助了。還是以圖1為例,它的IncludePaths控件是幺個”功能比較復(fù)雜的控件,它比LabVIEW自帶的列表框多了編輯功能。用戶添加或編輯一個路徑時,這個控

3、件要為用戶在所編輯的項(xiàng)目提供直接編輯使用的文本框,和瀏覽路徑按鈕。Listbox、一個實(shí)際上這個編輯功能是由三個LabVIEW提供的標(biāo)準(zhǔn)控件合作完成的:一個String和一個Button控件。他們的行為是在程序運(yùn)行時決定的:當(dāng)用戶編輯控件中某一路徑時,程序把String和Button挪到Listbox上需要編輯的那一項(xiàng),并遮擋住Listbox原本的內(nèi)容。這樣,用戶只能在String控件內(nèi)輸入內(nèi)容,或者點(diǎn)擊瀏覽按鈕選擇一個路徑。編輯完成,程序把String控件的值寫到Listbox上相應(yīng)的項(xiàng)目中。我們雖然看不見圖1例子中的程序框圖,但是可以想象,上述的一系列操作,如判斷String和Button

4、應(yīng)當(dāng)顯示的位置、然后挪動它們、把String值傳給Listbox,處理用戶對他們操作的消息等等,會為這個程序添加不少復(fù)雜的代碼。這些代碼應(yīng)該是與程序的其它部沒有任何直接關(guān)系的。但是把它們也寫在這個界面VI的程序框圖上,一方面影響了程序的可讀性,另一方面,編程人員有可能在更改程序其它問題是不小心改變了這部分代碼,較低了代碼的安全性。從邏輯關(guān)系上來看,圖1中上半部分的Listbox、String、瀏覽按鈕以及右上方四個操作按鈕,他們共同完成一個功能,與他們之外的界面控件沒有什么關(guān)聯(lián),所以他們七個應(yīng)當(dāng)被作為一個控件,或者說是一個組件。這個組件需要與程序其它模塊之間的接口就只是一個字符竄數(shù)組,用于輸入

5、或輸出一組路徑。其它的數(shù)據(jù)和操作,都應(yīng)當(dāng)是組件的私有的,外部不可見的。在LabVIEW8之前,想分離和封裝出這樣一個組件是非常困難的。因?yàn)榧热贿@七個控件都在這個VI的面板上,對它們的操作和相應(yīng)的代碼必須放在這個VI的程序框圖上,無法與其他代碼隔離開。也不是說絕對沒有辦法,比如你可以使用sub-panel,動態(tài)注冊事件等方法,強(qiáng)行的把它們的代碼分隔開。但是這些方法并不簡單直觀,使用它們有可能會讓程序變得跟為復(fù)雜、難以閱讀和維護(hù)。XControl的出現(xiàn),才終于為這個問題提供了一個比較完美的解決方案。利用XControl,圖1中我們提到的七個應(yīng)當(dāng)劃分在同一組件的控件可以被制作成一個XControl。

6、這個XControl的外觀就是圖1中上半部分七個控件組合在一起的樣子,XControl與用戶自定義控件相比,它不僅定義了控件的外觀,更重要的是,開發(fā)人員可以通過編寫LabVIEW代碼定義XControl的行為。并且這些代碼是對外隱藏的。開發(fā)人員還可以定義XControl的屬性和方法,通過PropertyNode和InvokeNode在程序中使用這些屬性和方法。同樣完成選取一組路徑的功能,可以有各種不同的界面,比如各種C+編譯器都會提供類似的功能,但外觀各不相同。你可以利用XControl,編寫多個外觀,行為大相徑庭的組件。但是,只要他們的接口相同-都是一個字符串?dāng)?shù)組,用戶就可以在這些組件內(nèi)任意互換,選用自己喜歡的組件,而不需改動程序的任何其它部分?,F(xiàn)在,我對XControl不太滿意的地方是它還不支持用戶自定義的事件。XControl具有封裝的特性,因此我在利用LabVIEW工程庫實(shí)現(xiàn)面向?qū)ο缶幊桃晃闹刑岬酵瑯涌梢允褂肵Control來達(dá)到面向?qū)ο蟮木幊谭椒?。但是X

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論