VB類模塊和標(biāo)準(zhǔn)模塊使用和區(qū)別.doc

VB類模塊和標(biāo)準(zhǔn)模塊使用和區(qū)別.doc

ID:51255499

大?。?8.50 KB

頁數(shù):13頁

時(shí)間:2020-03-20

VB類模塊和標(biāo)準(zhǔn)模塊使用和區(qū)別.doc_第1頁
VB類模塊和標(biāo)準(zhǔn)模塊使用和區(qū)別.doc_第2頁
VB類模塊和標(biāo)準(zhǔn)模塊使用和區(qū)別.doc_第3頁
VB類模塊和標(biāo)準(zhǔn)模塊使用和區(qū)別.doc_第4頁
VB類模塊和標(biāo)準(zhǔn)模塊使用和區(qū)別.doc_第5頁
資源描述:

《VB類模塊和標(biāo)準(zhǔn)模塊使用和區(qū)別.doc》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。

1、類模塊和標(biāo)準(zhǔn)模塊類模塊和標(biāo)準(zhǔn)模塊的不同點(diǎn)在于存儲數(shù)據(jù)方法的不同。標(biāo)準(zhǔn)模塊的數(shù)據(jù)只有一個(gè)備份。這意味著標(biāo)準(zhǔn)模塊中一個(gè)公共變量的值改變以后,在后面的程序中再讀取該變量時(shí),它將得到同一個(gè)值。而類模塊的數(shù)據(jù),是相對于類實(shí)例(也就是,由類創(chuàng)建的每一對象)而獨(dú)立存在的。 同樣的,標(biāo)準(zhǔn)模塊中的數(shù)據(jù)在程序作用域內(nèi)存在,也就是說,它存在于程序的存活期中;而類實(shí)例中的數(shù)據(jù)只存在于對象的存活期,它隨對象的創(chuàng)建而創(chuàng)建,隨對象的撤消而消失。 最后,當(dāng)變量在標(biāo)準(zhǔn)模塊中聲明為Public時(shí),則它在工程中任何地方都是可見的;而類模塊中的Public變量,只有當(dāng)對象變量含有對某一

2、類實(shí)例的引用時(shí)才能訪問。 上面的比較,同樣適用于標(biāo)準(zhǔn)模塊和類模塊中的公共過程,用下面的例子可以說明。新建一個(gè)工程,并在“工程”菜單中個(gè)添加一個(gè)標(biāo)準(zhǔn)模塊和一個(gè)類模塊,然后運(yùn)行以下的代碼: 把下面的代碼放在?Class1?中: '下面是?Class1?對象的一個(gè)屬性。 Public?Comment?As?String '下面是?Class1?對象的一個(gè)方法。 Public?Sub?ShowComment() ???MsgBox?Comment,?,?gstrVisibleEverywhere End?Sub 把下面的代碼放在?Module1?中:

3、'標(biāo)準(zhǔn)模塊中的代碼是全局的。 Public?gstrVisibleEverywhere?As?String Public?Sub?CallableAnywhere(ByVal?c1?As?Class1) ???'下行改變一個(gè)全局變量,這是一個(gè)Class1實(shí)例的(屬性) ???'只有傳遞給該過程的個(gè)別對象才受到影 ????c1.Comment?=?"Touched?by?a?global?function." End?Sub 把兩個(gè)命令按鈕放在?Form1?上,并在?Form1?中添加以下的代碼: Private?mc1First?As?Class

4、1 Private?mc1Second?As?Class1 Private?Sub?Form_Load() ???'創(chuàng)建兩個(gè)?Class1?類的實(shí)例。 ???Set?mc1First?=?New?Class1 ???Set?mc1Second?=?New?Class1 ???gstrVisibleEverywhere?=?"Global?string?data" End?Sub Private?Sub?Command1_Click() ???Call?CallableAnywhere(mc1First) ???mc1First.ShowComme

5、nt End?Sub Private?Sub?Command2_Click() ???mc1Second.ShowComment End?Sub 按F5鍵,運(yùn)行該工程。當(dāng)Form1加載時(shí),它創(chuàng)建兩個(gè)Class1類實(shí)例,每個(gè)實(shí)例有自己的數(shù)據(jù)。同時(shí),F(xiàn)orm1設(shè)置了下面全局變量gstrVisibleEverywhere的值。 按下Command1,調(diào)用全局過程并傳遞引用給第一個(gè)Class1對象。全局過程設(shè)置Comment屬性,然后Command1調(diào)用ShowComment方法顯示該對象的數(shù)據(jù)。 正如圖1所示,結(jié)果信息框演示了全局過程CallableA

6、nywhere如何設(shè)置對象的Comment屬性,而且全局字符串在Class1內(nèi)部是可見的。 圖1第一個(gè)Class1對象的信息框 按下Command2,調(diào)用第二個(gè)Class1類實(shí)例的ShowComment方法。 如圖?9.7?所示,兩個(gè)對象都訪問了全局字符串變量;然而,第二個(gè)對象的Comment屬性是空的,因?yàn)閷θ诌^程CallableAnywhere的調(diào)用只改變第一個(gè)對象的Comment屬性。 圖2第二個(gè)Class1對象的信息框 重點(diǎn):要避免類的代碼依賴于全局變量,也就是標(biāo)準(zhǔn)模塊中的公共變量。一個(gè)類的許多實(shí)例可以同時(shí)存在,所有這些對象在程序中

7、共享全局?jǐn)?shù)據(jù)。 在類模塊代碼中使用全局變量也違背了面向?qū)ο蠓庋b的編程原則,因?yàn)橛蛇@樣的類所創(chuàng)建的對象并沒有包含它們的所有數(shù)據(jù)。 靜態(tài)類數(shù)據(jù) 有時(shí),希望由一個(gè)類模塊所創(chuàng)建的一些對象共享某個(gè)數(shù)據(jù)項(xiàng)。這就是所謂的靜態(tài)類數(shù)據(jù)。 不能在VisualBasic類模塊中實(shí)現(xiàn)真正的靜態(tài)類數(shù)據(jù)。但是,通過使用Property過程在標(biāo)準(zhǔn)模塊中設(shè)置及返回Public數(shù)據(jù)成員的值,可以仿真靜態(tài)類數(shù)據(jù),如以下的代碼: '只讀屬性返回應(yīng)用程序的名字。 Property?Get?CommonString()?As?String ???'變量?gstrVisibleEvery

8、where?保存在 ???'標(biāo)準(zhǔn)模塊中,并聲明為?Public。 ???CommonString?=?gstrVisibleEveryw

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時(shí)可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時(shí)聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費(fèi)完成后未能成功下載的用戶請聯(lián)系客服處理。