Visual Basic程序设计 教学课件 ppt 作者 刘瑞新 VB11

上传人:E**** 文档编号:89183487 上传时间:2019-05-20 格式:PPT 页数:30 大小:350.50KB
返回 下载 相关 举报
Visual Basic程序设计 教学课件 ppt 作者 刘瑞新 VB11_第1页
第1页 / 共30页
Visual Basic程序设计 教学课件 ppt 作者 刘瑞新 VB11_第2页
第2页 / 共30页
Visual Basic程序设计 教学课件 ppt 作者 刘瑞新 VB11_第3页
第3页 / 共30页
Visual Basic程序设计 教学课件 ppt 作者 刘瑞新 VB11_第4页
第4页 / 共30页
Visual Basic程序设计 教学课件 ppt 作者 刘瑞新 VB11_第5页
第5页 / 共30页
点击查看更多>>
资源描述

《Visual Basic程序设计 教学课件 ppt 作者 刘瑞新 VB11》由会员分享,可在线阅读,更多相关《Visual Basic程序设计 教学课件 ppt 作者 刘瑞新 VB11(30页珍藏版)》请在金锄头文库上搜索。

1、本章主要内容: 类的创建 在程序中访问类,第11章 面向对象的编程,11.1 类的创建 无论是简单的类还是复杂的类,其创建步骤基本一致,一般分为4个步骤:插入一个类模块、定义类的属性、添加类的方法、响应缺省事件和创建自定义事件。 下面以一个工资卡(SalaryCar)为例,说明类的创建过程。设工资卡由银行于每月的15日将工资向卡内入账,持卡的职工随时可以通过自动取款机,在正确回答了密码后从卡中取款。 根据工资卡的特点,新建类应有的属性为:账号(No)、密码(PassWord)、余额(Balance)、入账日期(AddDate)。 新建类应具有的方法为:取款(Draw)、入账(Add)。 用户定

2、义事件有:一旦超过了入账日期,就要发出入账日期到的事件(DateUp)。,11.1.1 插入一个类模块 插入一个类模块的步骤为: 创建一个标准EXE工程,执行“工程”菜单中的添加“类模块”命令,选择“新建”选项卡中的“类模块”。 单击“打开”按钮,如图11-1所示,即可在当前工程中插入一个类模块。 在工程管理器中可以看到该类模块,如图11-2所示。其缺省名称为“Class1”,用户可以根据需要在属性窗口中进行更改。当保存工程时类模块的信息将保存在后缀为.cls的文件中。,11.1.2 定义类的属性 1. 使用公共变量 创建属性最简单的方法就是使用公共变量,只要在类模块的声明段声明它们即可,其语

3、法格式如下: Public 属性名 As 类型 例如:Public No As String 设置类的账号属性为字符型。 2. 使用属性过程 在类中建立属性最安全、最灵活的方法是使用属性过程。属性过程具有封装功能,一般在应用于下列场合时应当使用属性过程: l 属性为只读或一旦设置就不能更改的情况。 l 属性已设置的值需要合法性验证。,l 属性的设置可导致一些对象状态的改变或改变其他属性及内部变量值。 尤其属性过程提供了建立只读属性的功能,这在使用公共变量时是不可能的。系统提供的3种可用的属性过程,见表11-1。 表11-1 可用的属性过程,建立属性过程可以执行“工具”菜单下的“添加过程”命令,

4、选择“属性”,填入“名称”(这个名称将成为对象的属性名),本例填入了“DateAdd”表示入账日期,单击“确定”按钮完成添加操作,如图11-3所示。,此时在类模块的代码窗口中将自动出现图11-4所示的属性代码框架。属性过程一般都是成对出现(具有相同属性名的Property Get过程和Property Let过程),表示该属性可读可写。如果只有Property Get过程,则表示该属性为只读属性,也就是说应用程序不能直接修改该属性的值,若要更改必须通过类方法编程来实现。缺省情况下,VB认为所有的属性及参数均为Variant类型,可以在代码窗口中进行修改,也可以不使用添加过程对话框而直接在代码窗

5、口中输入。 在本例中,属性PassWord和Balance为只读属性,持卡人不能直接更改,属性DateAdd可读可写,程序代码如下: Private mPassWord As String Private addPassWord Private mDateAdd As Date Private mBalance As Currency,Public Property Get DateAdd() As Date DateAdd = mDateAdd End Property Public Property Let DateAdd(ByVal NewDate As Date) 规定每月15日为入账

6、日期,同时要比较前次入账的日期关系,以避免同日重复入账 If NewDate mDateAdd And Day(NewDate) = 15 Then mDateAdd = NewDate End If End Property Public Property Get Balance() As Currency Balance = mBalance End Property Public Property Get PassWord() As String PassWord = mPassWord End Property,11.1.3 添加类的方法 类的方法定义了由类创建的全部对象的行为,每个对

7、象可以随后执行这些行为。例如,PictureBox控件有Move方法,所以在窗体上的图片框可以调用该方法将对象移动到其他位置。对用户来说,完全不必关心Move方法的编程是怎么实现的,只要按照该方法规定的语法格式直接调用接口来使用,这就是被封装了的方法。 用户需要为自定义类创建方法时,需要在类模块中添加公共过程。若该方法没有返回值则可以使用Public Sub子过程,否则就应当使用Public Function函数过程。在类模块内添加的Private Sub或Private Function过程,只能在模块内部调用,对类模块的使用者来说是不可见的。 在下例中为Class1添加了取款(Draw)和

8、入账(Add)两个方法。,在Draw方法中,通过持卡人输入密码和取款额为参数,并且在取款时要对密码和取款额进行合法性检查。对Add方法按规定每月15日向持卡人加入新的款项,需要对当前日期进行合法性检验。 在Add方法中验证银行工作人员输入入账密码,并控制当月工资额不能为0。符合条件时,添加存款余额并记录本次入账日期。 有关过程如下: Public Sub Draw(ByVal NewPassWord As String, ByVal DrawMoney As Currency) If NewPassWord mPassWord Then MsgBox “密码错误“, 48, “警告“ Exit

9、 Sub End If,If DrawMoney mBalance Then MsgBox “本银行不允许透支“, 48, “警告“ Exit Sub End If mBalance = mBalance - DrawMoney End Sub Public Sub Add(ByVal AddMoney As Currency, ByVal NewDate As Date, ByVal aPassWord As String) AddMoney用来返回工作人员输入的当月工资额,NewDate返回本次入账日期 aPassWord返回工作人员输入的入账密码 If aPassWord addPass

10、Word Then MsgBox “密码错误,请重新输入“, 48, “警告“ Exit Sub End If,If AddMoney = 0 Then MsgBox “没有输入当月工资额“, 48, “警告“ Exit Sub End If If Day(NewDate) = 15 And NewDate mDateAdd Then 验证入账日期的合法性 mBalance = mBalance + AddMoney mDateAdd = NewDate Else MsgBox “本月工资已入账,不得重复操作“, 48, “警告“ End If End Sub 当取款人输入的密码不正确或取款额

11、超过了余额,均会产生一个错误。可以使用Err对象的Raise方法将错误传递回调用程序,这将生成一个可以被调用程序捕获的出错信息。这里为了方便使用了弹出信息框(MsgBox)的处理方法。,11.1.4 响应缺省事件和自定义事件 1. 响应缺省事件 由系统创建的类模块缺省事件有两个:Initialize(初始化)和Terminate(结束)。前者在对象建立时被激发,领先于其他任何设置属性或执行方法的动作,后者则是在对象结束时激发。通常Initialize事件被应用于类属性的初始化,Terminate事件则往往用来处理类模块的结尾工作。 可以在类模块代码窗口的左边对象列表中选择“Class”,在右边

12、事件列表中选择对应的事件,选择后系统会自动创建该事件的代码框架。,在本例中利用Initialize事件过程对密码、存款余额和入账日期进行初始化,代码如下: Public Sub Class_Initialize() mBalance = 1000 设置存款余额 aPassWord=“123456“ 设置入账操作密码,由银行工作人员掌握 mPassWord = “abcdef“ 设置用户密码 mDateAdd = #5/24/2005# 设置上次执行入账操作的日期 End Sub 当由类产生一个对象时,此对象首先要自动执行Initialize事件,使得持卡人的工资卡上对应属性得到赋值。,2. 自

13、定义事件 事件与属性、方法最大的区别在于属性和方法对应的代码是类模块的设计者预先设计好的,类模块的使用者调用什么方法,系统就自动调用相应的代码。而对于事件,类模块的设计者只能决定何时激发事件,对于事件本身应该执行一些什么操作,是有类模块的使用者来决定的。例如对于文本框控件TextBox来说,它的SetFocus方法是预先设计好的,而它的KeyPress事件是有TextBox的使用者自行处理的,使用者决定当该事件触发时执行什么操作。可以看出,对象的属性和方法的具体实现步骤均被封装在对象的内部,只有事件可以被发送到对象的外部。对象可以产生不同的事件,应用程序根据不同的事件做出不同的响应。,在类模块

14、中添加事件需要完成以下两项工作: l 在类模块的声明段使用Event语句声明类中的公共事件。 l 在类模块代码的适当位置使用RaiseEvent语句激发该事件。 在本例中,每月15日向工资卡中添加工资款到余额中,若超过日期一定天数(10天)尚未入账,则产生一个DateUp事件,通知银行执行入账操作,注意代码中有下划线的部分。 程序代码如下: 在声明段声明事件过程 Public Event DateUp() 修改Draw(取款)方法,添加下面代码中加有下划线的部分,Public Sub Draw(ByVal NewPassWord As String, ByVal DrawMoney As Cu

15、rrency) If Date - mDateAdd 10 Then RaiseEvent DateUp If NewPassWord mPassWord Then MsgBox “密码错误“, 48, “警告“ Exit Sub End If If DrawMoney mBalance Then MsgBox “本银行不允许透支“, 48, “警告“ Exit Sub End If mBalance = mBalance - DrawMoney End Sub,11.2 在程序中访问类 要使用一个类的新对象时,需要完成以下工作: l 向工程中添加类模块 l 声明对象变量 l 创建对象 l 使

16、用对象的属性、方法和响应对象的事件过程 l 释放对对象的引用 下面以使用前面设计好的Class1类为例,创建一个工资卡管理应用程序。由于类没有可视化的界面,所以程序员必须在窗体上建立有关控件来建立程序界面。,工资卡管理程序具有如下的功能: l 对持卡人通过输入密码、取款额调用Draw(取款)方法。 l 对银行可在规定的日期(每月的15日)调用Add(入账)方法向卡中添加当月工资额,并同时对入账日期进行设置。 l 若超过10天还未入账,触发DateUp(过期)事件,自动执行入账操作。 在利用类创建对象前首先应当创建一个标准EXE工程,而后执行“工程”菜单中的“添加类模块”命令,在“现存”选项卡中选择希望插入的类模块文件(如本例的“类使用示例.cls”)后,单击“打开”按钮,如图11-5所示。插入的类模块在工程管理器中可以看到,并可以使用右键快捷菜单对其进行相应的操作。,在编写程

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

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

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