




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、對程序員和編程愛好者來說,VB中類的技術(shù)是學(xué)習(xí)中的一個難點,在大型軟件的開發(fā)過程中,模塊(Moudle)、控件(Activeocx)、鏈接庫(Active dll)和類(Class moudle)構(gòu)成了系統(tǒng)化、高效化的軟件工程, 而類的技術(shù)是控件和鏈接庫技術(shù)的基礎(chǔ),因此掌握類的理 論和編程方法是非常有意義的。(一)類的基本定義和應(yīng)用概述;類是包含了方法、屬性、數(shù)據(jù)成員的高級代碼模塊,它既在模塊的范疇之內(nèi), 又是一個沒有圖形界面的 Activeocx,程序員可以象使用控件一樣使用它,但卻不能看到它,值得注意的是,類是不能繼承的。對象的動作就是類的類能夠使我們高效的完成對某一個或者某幾個特定的對象
2、的復(fù)雜操作, 方法,對象的屬性就是類的屬性過程。相對而言,如果編程的對象是一組事物,那么,我們 采用標(biāo)準(zhǔn)模塊的方式是非常合適的,在下列兩種情況下,應(yīng)該使用類進(jìn)行代碼處理:(1)創(chuàng)建大量性質(zhì)相近的對象;(2)提高代碼的封裝性。類的創(chuàng)建非常簡單,在進(jìn)行代碼編寫的時候,在工程”菜單中選擇添加類模塊”項目,就可以添加一個空白的類。類文件一般以.cis作為擴展名保存。二)類的方法的實現(xiàn);類的方法類似于動態(tài)鏈接庫的接口函數(shù), 它能夠接受其他窗體代碼的指定類型參數(shù),public且傳遞到類中。一般來說類的方法是能夠指定是否有返回值的。它在類中通常是一個過程。請看下面的代碼示例,它使一個密碼框拒絕非字母的輸入:
3、1)類 cls 的代碼;Option Explicit ' 變量檢查Private WithEvents mytxtAs TextBox'本類中的方法接受和控制一個text 密碼框Dim isNUM As Boolean'類的模塊級變量Public Sub Attach(itTEXTAs TextBox)'接受外部變量到 mytxt 中Set mytxtitTEXTEnd SubPrivate Sub mytxt_KeyUp(KeyCode As Integer, Shift As Integer)isNUM(KeyCode > = 65) And (Ke
4、yCode<=90)'測試密碼框的鍵盤輸入是否是英文字母If isNUMFalse ThenBeep mytxt.Text'如果輸入不是英文字母則響鈴并且清空密碼框內(nèi)容MsgBox " 非法字符輸入! "End IfDebug.Print mytxt.Text'調(diào)試輸出密碼框內(nèi)容End Sub'類的代碼結(jié)束(2)類的引用;已經(jīng)編寫完成的類可以經(jīng)過兩種格式進(jìn)行引用,第一種方式:dim) myCLS (指定的類名)As New cls (編寫完成的類名)程序編寫風(fēng)格較“老”的程序員:首先在窗體代碼Dim myCLS AsSet myclsP
5、rivate (public 或者 ;第二種方式較多用于中進(jìn)行模塊級聲明cls,然后在具體代碼過程中進(jìn)行具體定義 Newcls。這兩種方式的效率和代碼的簡潔性方面可能會有所差別,但在筆者的編程實踐中,并沒有什么特別的感覺,不過我較多使用第一種方式,因為它 書寫起來更加方便。另外,在代碼結(jié)束的時候, 類的資源占用是一種非常好的編程習(xí)慣。使用Set myCLSNothing來取消在窗體formi中(窗體有一個密碼框控件text1 , Passworldchar= "* ")添加以下代碼:Op ti onExp licitPrivate myCLS As New cls引用cls
6、Private Sub Form_Load()myCLS.Attach Text1啟動類End Sub'在代碼結(jié)束時記得釋放資源Private SubForm_ Un load(Ca ncelAsIn teger)Set myCLSNothi ngEnd本文代碼展示了類的方法的代碼編寫過程和調(diào)用方式 (盡管它和類的事件非常相似 ),它 的效果是,如果密碼框中被輸入了非字母,則系統(tǒng)振鈴,并刪除密碼框中的原來的數(shù)據(jù) 在一定程度上保護密碼。類的方法可以不需要任何參數(shù), 這一點類似一個 publiC 的函數(shù)或者過程, 它也是類中使用最 廣泛的。在下一篇文章中我將討論,如何使用類的屬性、事件和方
7、法進(jìn)行綜合編程 .在 Visual Basic 6.0 類的技術(shù)與應(yīng)用(上) (以下簡稱上文)中,我們討論了類的理論、 類的創(chuàng)建和類的方法的編程實踐, 實際上, 類之所以能夠在軟件工程中廣泛應(yīng)用, 最主要的 一點是它可以非常方便的封裝許多編程需要的屬性, 這不僅使程序員在一定程度上克服控件(OCX)和鏈接庫(dll )設(shè)計和調(diào)試中的復(fù)雜性,而且能夠提高程序代碼的簡潔和高效性一本文將討論完整的類的編程,包括方法、屬性和基本事件。一)類的屬性的特征和定義;類似于標(biāo)準(zhǔn)控件的屬性, 類的屬性允許用戶在指定的數(shù)據(jù)范圍內(nèi)進(jìn)行賦值, 這些值被類 內(nèi)的各個代碼部分所共享。屬性的獲得和傳遞需要經(jīng)過PrOpert
8、y Let 和 PrOperty Get語句進(jìn)行編程,當(dāng)然,我們首先需要在類中進(jìn)行全局或者模塊級的相應(yīng)變量定義。二)事件的屬性和基本定義;和窗體的事件類似,類也有兩個基本的事件, Class_Initialize (類加載時觸發(fā))和 Class_Terminate (類卸載時觸發(fā)),這兩個事件都是 private的。實際上,我們完全可以忽略 這兩個事件一要你記得完善類的方法和屬性。類同樣可以定義自己的事件,它和方法的程序編寫格式類似,只不過需要WithEvents關(guān)鍵字進(jìn)行參數(shù)聲明 ,而且事件不能有任何命名參數(shù)或者可選參數(shù),它也沒有返回值。實際上,結(jié)構(gòu)良好的方法和屬性完全可以替代結(jié)構(gòu)復(fù)雜的類的
9、事件。三)類的方法、事件和屬性的編程實例;本程序的設(shè)計目的是, 通過類控制窗體中文本框的內(nèi)容的全部大寫、 小寫和逆向排序轉(zhuǎn) 化。為了方便代碼的書寫和調(diào)用,我在類中引用了枚舉的編程方法。以下代碼在類 Class1:Option ExplicitPrivate WithEvents myTXT As TextBox'方法的參數(shù)接口Public Enum sTYLELcaseit ' 小寫屬性Lbigit ' 大寫屬性Nlogoit ' 逆向排序?qū)傩訣nd Enum'自定義枚舉,用來實現(xiàn)屬性的自動賦值Private mvarBiaozhi As sTYLE
10、39;實現(xiàn)枚舉常量的連接Public Function dONE() As String ''DONE 方法用來根據(jù)指定的枚舉屬性,對'窗體文本框進(jìn)行相應(yīng)的字符轉(zhuǎn)化操作'并且返回轉(zhuǎn)化后的字符串If mvarBiaozhiNlogoit ThendONEStrReverse(myTXT)'逆向排序ElseIf mvarBiaozhiLcaseit ThendONELCase(myTXT)'強制小寫轉(zhuǎn)化ElsedONEUCase(myTXT)MsgBox "你好!記得在 Class_Terminate 中填寫對象撤銷后的代碼!H'強
11、制大寫轉(zhuǎn)化End IfEnd Function'DONE 方法結(jié)束Public Property Let Biaozhi(ByVal vData As sTYLE)'獲得屬性的被賦的值mvarBiaozhivDataEnd PropertyPublic Property Get Biaozhi() As sTYLE'傳遞屬性值到類中Set BiaozhimvarBiaozhiEnd PropertyPublic Sub Attach(itTEXT As TextBox)'連接類的方法Set myTXTitTEXTEnd SubPrivate Sub Class_
12、Initialize()'本事件在類倍加載時激活MsgBox " 你好!本程序向您展示使用類的方法、屬性、事件進(jìn)行編程的技術(shù)!End SubPrivate Sub Class_Terminate()'本事件在類被卸載時激活End Sub'類的代碼全部結(jié)束四)窗體代碼的引用編程;在窗體 FORM1 中添加文本控件 TEXT1 、下拉列表控件 COMBO1 、命令按鈕 COMMAND1 (CAPTION= " 開始轉(zhuǎn)化 "),調(diào)整三個控件到適當(dāng)位置。Dim myT As New Class1'類的引用Private Sub Form_L
13、oad()Combo1.ClearCombo1.AddItem"字符串大寫轉(zhuǎn)化Combo1.AddItem"字符串小寫轉(zhuǎn)化Combo1.AddItem"字符串逆向排序Combo1.ListIndex= 0HHH'在列表框中添加屬性選項End SubPrivate Sub Command1_Click()'當(dāng)命令按鈕按下時激活類myT.Attach Text1'方法參數(shù)聯(lián)接Select Case Combo1.ListIndexCase 0myT.BiaozhiLbigitCase 1myT.BiaozhiLcaseitCase 2myT.BiaozhiNlogoitEnd Select根據(jù)列表框的選擇,給類的 Biaozhi屬性賦值'注意,在編程環(huán)境中,上述
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣播電視節(jié)目制作中的編劇策略考核試卷
- 信托公司財務(wù)風(fēng)險分析與控制考核試卷
- 疫情網(wǎng)課班會課件小學(xué)生
- 塑料薄膜在戶外運動裝備的應(yīng)用考核試卷
- 智能清潔電器的遠(yuǎn)程監(jiān)控技術(shù)考核試卷
- 機器人傳感器數(shù)據(jù)融合與應(yīng)用考核試卷
- 蘇州恒溫配送合同范本
- 土建及市政合同范本
- 拍攝視頻制作合同范本
- 毛坯公寓酒店合同范本
- 質(zhì)量管理軟件操作手冊
- 翰威特任職資格撰寫培訓(xùn)材料
- 大家排好隊說課
- 鐵氧體永磁材料
- 湘教版初中數(shù)學(xué)教材目錄
- 金蝶云星辰初級考試題庫
- GM/T 0107-2021智能IC卡密鑰管理系統(tǒng)基本技術(shù)要求
- 部編版七年級下冊語文第一單元課件
- 2023年山東省青島市統(tǒng)招專升本管理學(xué)自考真題(含答案)
- 文化產(chǎn)業(yè)政策與法規(guī)課件
- 人教版八年級下冊生物全冊教案完整版教學(xué)設(shè)計含教學(xué)反思
評論
0/150
提交評論