top
Loading...
關于VisualBasic6.0類開發(上)

對程序員和編程愛好者來說,VB中類的技術是學習中的一個難點,在大型軟件的開發過程中,模塊(Moudle)、控件(Active ocx)、鏈接庫(Active dll)和類(Class moudle)構成了系統化、高效化的軟件工程,而類的技術是控件和鏈接庫技術的基礎,因此掌握類的理論和編程方法是非常有意義的。

(一)類的基本定義和應用概述

類是包含了方法、屬性、數據成員的高級代碼模塊,它既在模塊的范疇之內,又是一個沒有圖形界面的Active ocx,程序員可以象使用控件一樣使用它,但卻不能看到它,值得注意的是,類是不能繼承的。
類能夠使我們高效的完成對某一個或者某幾個特定的對象的復雜操作,對象的動作就是類的方法,對象的屬性就是類的屬性過程。相對而言,如果編程的對象是一組事物,那么,我們采用標準模塊的方式是非常合適的,在下列兩種情況下,應該使用類進行代碼處理:

(1)創建大量性質相近的對象;

(2)提高代碼的封裝性。

類的創建非常簡單,在進行代碼編寫的時候,在“工程”菜單中選擇“添加類模塊”項目,就可以添加一個空白的類。

類文件一般以.cls作為擴展名保存。

(二)類的方法的實現

類的方法類似于動態鏈接庫的接口函數,它能夠接受其他窗體代碼的指定類型參數,并且傳遞到類中。一般來說類的方法是能夠指定是否有返回值的。它在類中通常是一個public過程。請看下面的代碼示例,它使一個密碼框拒絕非字母的輸入:

(1)類cls的代碼;

Option Explicit'變量檢查

Private WithEvents mytxt As TextBox

'本類中的方法接受和控制一個text密碼框

Dim isNUM As Boolean

'類的模塊級變量

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)

'測試密碼框的鍵盤輸入是否是英文字母

If isNUM = False Then

Beep

mytxt.Text = ""

'如果輸入不是英文字母則響鈴并且清空密碼框內容

MsgBox "非法字符輸入!"

End If

Debug.Print mytxt.Text

'調試輸出密碼框內容

End Sub

'類的代碼結束

(2)類的引用

已經編寫完成的類可以經過兩種格式進行引用,第一種方式:Private(public或者dim) myCLS(指定的類名) As New cls(編寫完成的類名);第二種方式較多用于程序編寫風格較“老”的程序員:首先在窗體代碼中進行模塊級聲明——Dim myCLS As cls,然后在具體代碼過程中進行具體定義—— Set mycls = New cls。這兩種方式的效率和代碼的簡潔性方面可能會有所差別,但在筆者的編程實踐中,并沒有什么特別的感覺,不過我較多使用第一種方式,因為它書寫起來更加方便。另外,在代碼結束的時候,使用 Set myCLS = Nothing來取消類的資源占用是一種非常好的編程習慣。

在窗體form1中(窗體有一個密碼框控件text1,passworldchar="*")添加以下代碼:

Option Explicit

Private myCLS As New cls

'引用cls

Private Sub Form_Load()

myCLS.Attach Text1

'啟動類

End Sub

'在代碼結束時記得釋放資源

Private Sub Form_Unload(Cancel As Integer)

Set myCLS = Nothing

End

End Sub

本文代碼展示了類的方法的代碼編寫過程和調用方式(盡管它和類的事件非常相似),它的效果是,如果密碼框中被輸入了非字母,則系統振鈴,并刪除密碼框中的原來的數據——在一定程度上保護密碼。
類的方法可以不需要任何參數,這一點類似一個public的函數或者過程,它也是類中使用最廣泛的。在下一篇文章中我將討論,如何使用類的屬性、事件和方法進行綜合編程。(未完待續)

作者:http://www.zhujiangroad.com
來源:http://www.zhujiangroad.com
北斗有巢氏 有巢氏北斗