|
對(duì)程序員和編程愛(ài)好者來(lái)說(shuō),VB中類(lèi)的技術(shù)是學(xué)習(xí)中的一個(gè)難點(diǎn),在大型軟件的開(kāi)發(fā)過(guò)程中, 模塊(Moudle) 、控件(Activeocx) 、鏈接庫(kù)( Active dll) 和類(lèi)( Classmoudle) 構(gòu)成了系統(tǒng)化、高效化的軟件工程,而類(lèi)的技術(shù)是控件和鏈接庫(kù)技術(shù)的基礎(chǔ),因此掌握類(lèi)的理論和編程方法是非常有意義的。
(一)類(lèi)的基本定義和應(yīng)用概述; 類(lèi)是包含了方法、屬性、數(shù)據(jù)成員的高級(jí)代碼模塊,它既在模塊的范疇之內(nèi),又是一個(gè)沒(méi)有圖 形界面的Activeocx,程序員可以象使用控件一樣使用它,但卻不能看到它,值得注意的是,類(lèi)是不能繼承的。 類(lèi)能夠使我們高效的完成對(duì)某一個(gè)或者某幾個(gè)特定的對(duì)象的復(fù)雜操作,對(duì)象的動(dòng)作就是類(lèi)的方法,對(duì)象的屬性就是類(lèi)的屬性過(guò)程。相對(duì)而言,如果編程的對(duì)象是一組事物,那么,我們采用標(biāo)準(zhǔn)模塊的方式是非常合適的,在下列兩種情況下,應(yīng)該使用類(lèi)進(jìn)行代碼處理: ?。?)創(chuàng)建大量性質(zhì)相近的對(duì)象; ?。?nbsp;2)提高代碼的封裝性。 類(lèi)的創(chuàng)建非常簡(jiǎn)單, 在進(jìn)行代碼編寫(xiě)的時(shí)候,在 “工程”菜單中選擇“ 添加類(lèi)模塊” 項(xiàng)目,就可以添 加一個(gè)空白的類(lèi)。 類(lèi)文件一般以.cls 作為擴(kuò)展名保存。 (二)類(lèi)的方法的實(shí)現(xiàn); 類(lèi)的方法類(lèi)似于動(dòng)態(tài)鏈接庫(kù)的接口函數(shù),它能夠接受其他窗體代碼的指定類(lèi)型參數(shù),并且傳遞 到類(lèi)中。一般來(lái)說(shuō)類(lèi)的方法是能夠指定是否有返回值的。它在類(lèi)中通常是一個(gè)public過(guò)程。請(qǐng)看下面的代碼示例,它使一個(gè)密碼框拒絕非字母的輸入: (1 )類(lèi)cls的代碼; Option Explicit '變量檢查 Private WithEvents mytxt As TextBox '本類(lèi)中的方法接受和控制一個(gè)text密碼框 Dim isNUM As Boolean '類(lèi)的模塊級(jí)變量 Public Sub Attach(itTEXT As TextBox) '接受外部變量到mytxt中 Set mytxt = itTEXT End Sub Private Sub mytxt_KeyUp(KeyCode As Integer,Shift As Integer) isNUM = (KeyCode >= 65) And (KeyCode <= 90) ' 測(cè)試密碼框的鍵盤(pán)輸入是否是英文字母 If isNUM = False Then Beep mytxt.Text = "" ' 如果輸入不是英文字母則響鈴并且清空密碼框內(nèi)容 MsgBox"非法字符輸入! " End If Debug.Print mytxt.Text ' 調(diào)試輸出密碼框內(nèi)容 End Sub '類(lèi)的代碼結(jié)束 ( 2)類(lèi)的引用; 已經(jīng)編寫(xiě)完成的類(lèi)可以經(jīng)過(guò)兩種格式進(jìn)行引用, 第一種方式:Private(public或者 Dim) myCLS (指定的類(lèi)名)As Newcls(編寫(xiě)完成的類(lèi)名); 第二種方式較多用于程序編寫(xiě)風(fēng)格較“老” 的程序員: 首先在窗體代碼中進(jìn)行模塊級(jí)聲明 ――DimmyCLS As cls, 然后在具體代碼過(guò)程中進(jìn)行具體定義 ――Setmycls = Newcls。 這兩種方式的效率和代碼的簡(jiǎn)潔性方面可能會(huì)有所差別,但在筆者的編程實(shí)踐中,并沒(méi)有什么特別的感覺(jué),不過(guò)我較多使用第一種方式,因?yàn)樗鼤?shū)寫(xiě)起來(lái)更加方便。 另外,在代碼結(jié)束的時(shí)候,使用SetmyCLS = Nothing來(lái)取消類(lèi)的資源占用是一種非常好的編程習(xí)慣。 |
|
|