Visual Basic程序设计教程 第11章

上传人:E**** 文档编号:89399279 上传时间:2019-05-24 格式:PPT 页数:41 大小:357KB
返回 下载 相关 举报
Visual Basic程序设计教程 第11章_第1页
第1页 / 共41页
Visual Basic程序设计教程 第11章_第2页
第2页 / 共41页
Visual Basic程序设计教程 第11章_第3页
第3页 / 共41页
Visual Basic程序设计教程 第11章_第4页
第4页 / 共41页
Visual Basic程序设计教程 第11章_第5页
第5页 / 共41页
点击查看更多>>
资源描述

《Visual Basic程序设计教程 第11章》由会员分享,可在线阅读,更多相关《Visual Basic程序设计教程 第11章(41页珍藏版)》请在金锄头文库上搜索。

1、11.1 类的创建与应用,11.2 系统对象,11.3 文件系统对象模型,第11章 面向对象的编程,退出,11.1 类的创建与应用,11.1.1类模块的基本概念,11.1.2 类的创建过程,返回,退出,11.1.3 对类的访问,11.1.1类模块的基本概念,在面向对象的程序设计中,类是进行数据封装和数据隐藏的工具。 类是对象的归纳和抽象。 类与过程既有共同之处,也有着本质的区别。 在VB6.0中,类是种通用代码,通过类模块建立。它是关于某个对象的外观(即属性)和性能(即方法)的描述。 类模块与窗体十分类似,只是在运行期间类模块总是不可见的,而窗体是可见的,可以说类模块是一种没有可视界面的控件。

2、每个类模块定义一个类,类模块中的Sub和Function函数过程是类的方法,类模块中的模块层变量和属性过程是类的属性。 用类模块定义类的主要任务就是建立在运行期间由对象使用的属性和方法。面向对象程序设计的主要概念之一,就是把与特定对象有关的所有数据和过程集合在一起,这就是把所有对象的属性和方法定义在一个类模块中的原因。,11.1.2 类的创建过程,创建类的基本步骤为:,(1)插入一个类模块,(2)定义类的属性,(3)添加类的方法,(4)响应缺省事件和创建自定义事件,例11-1:某单位根据销售人员的销售额决定奖金额。在数据文件“c:nemployee.dat”中存放着雇员编号、姓名、销售额和奖金

3、。创建一个应用程序,当单击窗体上的“销售情况查询”按钮时,要求用户在InputBox框中输入姓名和密码来查询有关资料。参见图11-1。 下面结合这一实例,介绍类的创建过程和使用方法。,1.插入一个类模块 新建一个工程,单击“工程 | 添加类模块”命令,在“添加类模块”对话框中的“新建”标签中选择“类模块”,插入类模块,可以在“工程资源管理器”中看到其图标,新类的缺省“名称”属性为Class1,这里将其改为bonusClass,且保存到磁盘上时默认名为bonusClass.Cls。,图11-1运行界面,图11-2 类的创建,2.定义类的属性 (1)使用公共变量 使用公共变量定义类的属性应在类模块

4、的声明部分进行,其格式为: Public 属性名 As 类型 (2)使用属性过程 使用属性过程定义属性的步骤: (1)单击“工程 | 添加过程”命令,打开 “添加过程”对话框。 (2)在名称栏类输入过程的名称employee,该名称将成为创建对象后的属性名。 (3)选中“属性”单选按钮后,单击“确定”按钮,在代码窗口将显示该属性过程的框架,参见图11-3。,图11-3 “添加过程”对话框 图11-4 类模块中属性过程框架,下面就是采用属性过程在该程序的类模块bonusClass中定义lemployee属性和lpassword属性: Private memployee() As String P

5、rivate mpassword() As String Public Property Get lemployee() As String() lemployee = memployee End Property Public Property Let lemployee(arr() As String) memployee = arr End Property Public Property Get password() As Variant lpassword = mpassword End Property 从上面的代码可知,lemployee属性是可读写的,lpassword属性是只

6、读的。这里,在类模块bonusClass的声明部分,将memployee和mpassword声明为字符数组变量(当然可以使用一般变量,如本例中如果不同的用户使用同一个密码,就可以将声明部分lpassword()后的()去掉),用于在属性过程之间传递数据,而对类模块之外的应用程序而言是不可见的,因而类模块中的数据具有隐蔽性。 Lemployee属性是可读写的,因而可以在类模块外部改变其属性值,而在类模块之外对lpassword属性的改变是无效的。,3.添加类的方法 窗体和图片框具有Print方法,列表框和组合框具有AddItem方法。同样,由类创建的对象也可以具有方法。为类添加的方法就是在类模块

7、中添加公共过程。使用Public Sub子过程创建的方法没有返回值,而采用 Public Function函数过程创建的方法可以有返回值。也可以在类模块中创建私有过程,但是只能在类模块内部调用,在外部是不可见的。 下面在bonusClass类模块中创建displayemployee方法,该方法用于显示雇员的编号、姓名、销售额和奖金数据。 Public Function displayemployee() As String Dim mdisplay As String RaiseEvent Salenum 激发Salenum事件 mdisplay = “雇员号:“ & memployee(1)

8、 & vbCrLf mdisplay = mdisplay & “姓名:“ & memployee(2) & vbCrLf mdisplay = mdisplay & “销售额:“ & memployee(3) & vbCrLf mdisplay = mdisplay & “奖金:“ & memployee(4) & vbCrLf If memployee(1) “ Then displayemployee = mdisplay Else MsgBox “没有您的数据或密码错误!“ End If End Function,系统自身为创建类提供的事件为类的缺省事件,这类事件有两种,即Initia

9、lize事件和Terminate事件。此外,用户也可以在类模块中自定义事件。 (1) 缺省事件 在类模块代码窗口的“对象”框中选择“Class”,将自动创建Initialize事件过程的框架,此时在“过程”框中选择“Terminate”,将创建Terminate事件过程的框架。 在本例中,可以为用户密码进行初始化设置以及初始化用户数据,其代码为: Private Sub Class_Initialize() ReDim mpassword(1 To 4) ReDim memployee(1 To 4) mpassword(1) = “111111“ : mpassword(2) = “2222

10、22“ mpassword(3) = “333333“ : mpassword(4) = “444444“ memployee(1) = “ : memployee(2) = “ memployee(3) = 0 : memployee(4) = 0 End Sub 一旦由创建类一个对象,程序将首先执行Initialize事件过程,为密码属性附值。,4.类模块的缺省事件和自定义事件,11.1.3 对类的访问,只有在程序中创建了类对象后,才能为类对象设置属性值,调用其方法和响应事件过程(即为类对象编写事件过程代码),这就是对类的访问。具体步骤包括声明类对象变量、创建类对象,使用类对象的属性、方法

11、和响应事件过程,如有必要,还应释放对类对象的引用。 由于类没有可视化的界面,因此访问类时,一般要借助窗体或窗体上的控件。 1.声明对象变量 在创建类的对象时,应如同前面章节介绍的创建窗体类对象变量一样,应在创建前声明对象变量,其格式为: Dim 对象变量名 As 类名 本例的对象声明为: Private WithEvents mybonus As bonusClass,2.创建对象 仅仅声明了一个对象变量后,并没有为对象变量指明具体的对象,因此对象变量的值为“Noting”。如执行 Print TypeName(mybonus) 语句,将在窗体上显示Noting。 可以使用Set语句创建具体的

12、对象,其格式为: Set 对象变量=New 类名 Set mybonus=New bonusClass 一旦在内存中为对象指明了存储单元后,就可以使用多个对象变量指向同一个对象。如在上述创建对象的基础上,还声明了另一个对象变量: Private WithEvents youbonus As bonusClass 则下面的Set语句 Set youbonus= bonusClass 将对象变量youbonus指向上次创建的同一个bonusClass对象。 除了采用先声明对象,然后使用Set语句创建对象的方法来创建对象外,还可以直接在声明对象时“隐式”地创建对象,其格式为: Dim 对象变量名 A

13、s New类名,3.使用对象 创建了类对象后,就可以像使用标准控件一样使用类对象,只不过类对象是不可见的。 在本例中,响应自定义事件Salenum的代码为: Private Sub mybonus_Salenum() 响应Salenum事件过程 ReDim carr(1 To 4) As String Dim newname As String, newpassword As String * 6 newname$ = InputBox(“请输入你的姓名“) newpassword$ = InputBox(“请输入你的密码“) Open “c:employee.txt“ For Random

14、As #1 Len = Len(nemployee) s = LOF(1) / Len(nemployee) For i = 1 To s Get #1, i, nemployee carr(1) = nemployee.enumber : carr(2) = nemployee.ename carr(3) = nemployee.esallnumber : carr(4) = nemployee.ebonus If Trim(nemployee.ename) = newname And newpassword = mybonus.lpassword(i) Then mybonus.lempl

15、oyee = carr 为属性赋值 Exit For Else Erase mybonus.lemployee End If Next Close #1 End Sub, 在标准模块中建立自定义变量: Type mdemployee enumber As String * 10 epassword As String * 6 ename As String * 20 esallnumber As Long ebonus As Currency End Type Dim nemployee As mdemployee 在窗体声明部分声明窗体级变量 Private WithEvents mybon

16、us As bonusClass 在窗体声明部分声明类对象变量 窗体加载事件代码: Private Sub Form_Load() Set mybonus = New bonusClass 创建类对象 End Sub 命令按钮单击事件代码: Private Sub Command1_Click() Print mybonus.displayemployee 调用类的方法 End Sub,4.释放对象 如果在程序中不再需要某个类对象变量,可以使用语句 Set 类对象名=Nothing 来释放对象变量所占的内存空间。 为进一步地理解类模块中各属性、方法和事件的内部运行机制及其相互关系,可以按F8键,使用逐语句执行的方式运行应用程序。也可以按F4键,打开对象浏览器窗口来查看类的各个成员。如图11-5为本例中的bonusclass类的成员,包括属性lemployee、lpassword,方法displayemployee,缺省事件Class_Initialize,自定

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号