关于VisualBasic6.0类开发(下)
在VisualBasic6.0类的技术与应用(上)(以下简称上文)中,我们讨论了类的理论、类的创建和类的方法的编程实践,实际上,类之所以能够在软件工程中广泛应用,最主要的一点是它可以
   在VisualBasic6.0类的技术与应用(上)(以下简称上文)中,我们讨论了类的理论、类的创建和类的方法的编程实践,实际上,类之所以能够在软件工程中广泛应用,最主要的一点是它可以非常方便的封装许多编程需要的属性,这不仅使程序员在一定程度上克服控件(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编程中的一个相当有用的技术,同样也是学习和掌握中的难点,类在大型软件工程中应用是非常广泛和卓有成效的,但是,在小型软件开发中,为了提高软件的效率和代码的清晰度,应该避免使用较多的类模块,控件和联接库,取代以标准模块。
  
本文所示例的代码比较简单,却覆盖了关于模块编程技术的方方面面,希望初学者能够有所借鉴,也希望程序员能够共同探讨。我们应该相信,无论多么复杂的高楼大厦都是由普普通通的方砖堆砌而成的,同样,无论所么复杂的软件工程都是由基本的程序语句所构成的,编程爱好者、程序员和分析员的区别只是在于,用同样的程序语句构建的程序的不同而已。->
(一)类的属性的特征和定义;
类似于标准控件的属性,类的属性允许用户在指定的数据范围内进行赋值,这些值被类内的各个代码部分所共享。属性的获得和传递需要经过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编程中的一个相当有用的技术,同样也是学习和掌握中的难点,类在大型软件工程中应用是非常广泛和卓有成效的,但是,在小型软件开发中,为了提高软件的效率和代码的清晰度,应该避免使用较多的类模块,控件和联接库,取代以标准模块。
本文所示例的代码比较简单,却覆盖了关于模块编程技术的方方面面,希望初学者能够有所借鉴,也希望程序员能够共同探讨。我们应该相信,无论多么复杂的高楼大厦都是由普普通通的方砖堆砌而成的,同样,无论所么复杂的软件工程都是由基本的程序语句所构成的,编程爱好者、程序员和分析员的区别只是在于,用同样的程序语句构建的程序的不同而已。->
精彩图集
    
    精彩文章
    



