我們討論了類的理論、類的創建和類的方法的編程實踐,實際上,類之所以能夠在軟件工程中廣泛應用,最主要的一點是它可以非常方便的封裝許多編程需要的屬性,這不僅使程序員在一定程度上克服控件(ocx)和鏈接庫(dll)設計和調試中的復雜性,而且能夠提高程序代碼的簡潔和高效性――本文將討論完整的類的編程,包括方法、屬性和基本事件。
(一)類的屬性的特征和定義;
類似於標准控件的屬性,類的屬性允許用戶在指定的數據范圍內進行賦值,這些值被類內的各個代碼部分所共享。屬性的獲得和傳遞需要經過PropertyLet和PropertyGet語句進行編程,當然,我們首先需要在類中進行全局或者模塊級的相應變量定義。
(二)事件的屬性和基本定義;
和窗體的事件類似,類也有兩個基本的事件,Class_Initialize(類加載時觸發)和Class_Terminate(類卸載時觸發),這兩個事件都是private的。實際上,我們完全可以忽略這兩個事件――只要你記得完善類的方法和屬性。
類同樣可以定義自己的事件,它和方法的程序編寫格式類似,只不過需要WithEvents關鍵字進行參數聲明,而且事件不能有任何命名參數或者可選參數,它也沒有返回值。
實際上,結構良好的方法和屬性完全可以替代結構復雜的類的事件。
(三)類的方法、事件和屬性的編程實例;
本程序的設計目的是,通過類控制窗體中文本框的內容的全部大寫、小寫和逆向排序轉化。
為了方便代碼的書寫和調用,我在類中引用了枚舉的編程方法。
以下代碼在類Class1:
OptionExplicit
PrivateWithEventsmyTXTAsTextBox
'方法的參數接口
PublicEnumsTYLE
Lcaseit'小寫屬性
Lbigit'大寫屬性
NLogoit'逆向排序屬性
EndEnum
'自定義枚舉,用來實現屬性的自動賦值
PrivatemvarBiaozhiAssTYLE
'實現枚舉常量的連接
PublicFunctiondONE()AsString'
'DONE方法用來根據指定的枚舉屬性,對
'窗體文本框進行相應的字符轉化操作
'並且返回轉化後的字符串
IfmvarBiaozhi=NLogoitThen
dONE=StrReverse(myTXT)
'逆向排序
ElseIfmvarBiaozhi=LcaseitThen
dONE=LCase(myTXT)
'強制小寫轉化
Else
dONE=UCase(myTXT)
'強制大寫轉化
EndIf
EndFunction
'DONE方法結束
PublicPropertyLetBiaozhi(ByValvDataAssTYLE)
'獲得屬性的被賦的值
mvarBiaozhi=vData
EndProperty
PublicPropertyGetBiaozhi()AssTYLE
'傳遞屬性值到類中
SetBiaozhi=mvarBiaozhi
EndProperty
PublicSubAttach(itTEXTAsTextBox)
'連接類的方法
SetmyTXT=itTEXT
EndSub
PrivateSubClass_Initialize()
'本事件在類倍加載時激活
MsgBox"你好!本程序向您展示使用類的方法、屬性、事件進行編程的技術!"
EndSub
PrivateSubClass_Terminate()
'本事件在類被卸載時激活
MsgBox"你好!記得在Class_Terminate中填寫對象撤銷後的代碼!"
EndSub
'類的代碼全部結束
(四)窗體代碼的引用編程;
在窗體FORM1中添加文本控件TEXT1、下拉列表控件COMBO1、命令按鈕COMMAND1(CAPTION="開始轉化"),調整三個控件到適當位置。
DimmyTAsNewClass1
'類的引用
PrivateSubForm_Load()
Combo1.Clear
Combo1.AddItem"字符串大寫轉化"
Combo1.AddItem"字符串小寫轉化"
Combo1.AddItem"字符串逆向排序"
Combo1.ListIndex=0
'在列表框中添加屬性選項
EndSub
PrivateSubCommand1_Click()
'當命令按鈕按下時激活類
myT.AttachText1
'方法參數聯接
SelectCaseCombo1.ListIndex
Case0
myT.Biaozhi=Lbigit
Case1
myT.Biaozhi=Lcaseit
Case2
myT.Biaozhi=NLogoit
EndSelect
'根據列表框的選擇,給類的Biaozhi屬性賦值
'注意,在編程環境中,上述屬性值自動添加
Text1.Text=myT.dONE
'返回排序結束後的字符串
EndSub
PrivateSubForm_Unload(CancelAsInteger)
SetmyT=Nothing
End
'良好的編程習慣
EndSub
怎麼樣,我們的代碼看起來如此的簡潔,這種感覺就象是在使用一個控件,不僅可以隨心所欲的調用,而且方便的使用了vb的自動提示功能。
(五)關於類的編程技術的總結;
嚴格的說,類是vb編程中的一個相當有用的技術,同樣也是學習和掌握中的難點,類在大型軟件工程中應用是非常廣泛和卓有成效的,但是,在小型軟件開發中,為了提高軟件的效率和代碼的清晰度,應該避免使用較多的類模塊,控件和聯接庫,取代以標准模塊。
本文所示例的代碼比較簡單,卻覆蓋了關於模塊編程技術的方方面面,希望初學者能夠有所借鑒,也希望程序員能夠共同探討。我們應該相信,無論多麼復雜的高樓大廈都是由普普通通的方磚堆砌而成的,同樣,無論所麼復雜的軟件工程都是由基本的程序語句所構成的,編程愛好者、程序員和分析員的區別只是在於,用同樣的程序語句構建的程序的不同而已。->