1 / 23

Visual Basic 程序设计教程

Visual Basic 程序设计教程. 第 13 章 面向对象编程简介. 13.1 基本概念 13.1.1 对象和类 13.1.2 对象变量 13.2 类的创建 13.2.1 创建类模块 13.2.2 为类添加属性 13.2.3 为类添加方法 13.2.4 为类添加事件 习题十三. 13.1 基本概念 13.1.1 对象和类 1. 对象 2. 类 3. 面向对象编程的特点 面向对象编程有以下 特点 : 对象是程序的主体: 对象具有多态性:

shaun
Download Presentation

Visual Basic 程序设计教程

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Visual Basic 程序设计教程

  2. 第13章 面向对象编程简介 13.1基本概念 13.1.1 对象和类 13.1.2 对象变量 13.2类的创建 13.2.1 创建类模块 13.2.2 为类添加属性 13.2.3 为类添加方法 13.2.4 为类添加事件 习题十三

  3. 13.1 基本概念 • 13.1.1 对象和类 • 1.对象 2. 类 3. 面向对象编程的特点 • 面向对象编程有以下特点: • 对象是程序的主体: • 对象具有多态性: • 对象具有继承性: • 对象具有封装性: • 13.1.2 对象变量 • 对象变量的声明 • 声明一个对象变量的语法格式为 • {Dim | ReDim | Static | Private | Public}〈变量名〉As [New]〈类名〉

  4. 【例13-1】使用对象变量创建新窗体。 设计步骤如下: (1) 设计界面与设置属性参见图13-1左。 图13-1 “克隆”窗体

  5. (2) 编写命令按钮Command1的Click事件代码: Private Sub Command1_Click() Dim objForm As New Form1 objForm.Show End Sub 运行程序,单击命令按钮,将不断地创建与原有窗体完全一样的新窗体,如图13-1右所示。

  6. 2. 对象变量的赋值 对象变量赋值语句的语法格式为: Set〈变量名〉=〈对象〉 【例13-2】使用对象变量引用按钮对象。 设计步骤如下: (1) 设计界面与设置属性参见图13-2左。 图13-2 引用按钮对象

  7. (2) 编写窗体的MouseUp事件代码: Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) Dim cmd As CommandButton ' 声明对象变量cmd为按钮类型 Set cmd = Command1 ' 将命令按钮Command1赋值给cmd cmd.Top = Y ' 引用cmd cmd.Left = X End Sub 运行程序,在窗体上单击鼠标,命令按钮将随着鼠标单击的位置移动,如图13-2右所示。

  8. 3. 特定对象变量与通用对象变量 【例13-3】使用通用控件变量引用不同的控件。 设计步骤如下: (1) 设计界面与设置属性。 (2) 编写代码。 首先编写窗体的Load事件代码,将各控件的Left属性保存在Tag属性中: Private Sub Form_Load() For Each obj In Me.Controls obj.Tag = obj.Left Next End Sub

  9. 然后编写窗体的Click事件代码: Private Sub Form_Click() Static n As Integer, y As Boolean Dim cnt As Control ' 声明对象变量cnt为通用控件 y = Not y Set cnt = Me.Controls(n) ' 依次将不同的控件赋值给cnt If y Then cnt.Left = cnt.Tag ' 引用cnt n = n + 1 Else cnt.Left = 0 ' 引用cnt End If n = n Mod 3 End Sub

  10. 13.2 类的创建 13.2.1 创建类模块 在工程中创建一个类模块的步骤为: (1) 选择“工程”菜单中的“添加类模块”菜单项,打开“添加类模块”对话框(图13-4)。 图13-4 “添加类模块”对话框

  11. 13.2.2 为类添加属性 • 添加全局变量与局部变量 • 2. 属性过程 • (1) Property Let过程的语法格式为 • [Public | Private | Friend] [Static] Property Let〈属性名〉([参数列表,]〈值〉) • [〈语句列〉] • [Exit Property] • [〈语句列〉] • End Property

  12. (2) Property Get过程的语法格式为 [Public | Private | Friend] [Static] Property Get〈属性名〉[参数列表] [As〈类型〉] [〈语句列〉] [〈属性名〉= expression] [Exit Property] [〈语句列〉] [〈属性名〉= expression] End Property (3) Property Set过程的语法格式为 [Public | Private | Friend] [Static] Property Set〈属性名〉([参数列表,]〈对象变量〉) [〈语句列〉] [Exit Property] [〈语句列〉] End Property

  13. 13.2.3 为类添加方法 【例13-4】设计一个能画出五角星的类,并在窗体中调用。 设计步骤如下: (1) 首先设计类Class1。新建一个工程。为工程添加一个类模块Class1,参见13.2.1。在类模块的“通用”段声明变量如下: Private mX As Single ' 用于局部复制X属性 Private mY As Single ' 用于局部复制Y属性 Private mFrm As Object ' 用于局部复制Frm属性 在类模块中添加用于设置窗体对象的属性过程: Public Property Set Frm(ByVal vData As Object) Set mFrm = vData End Property Public Property Get Frm() As Object Set Frm = mFrm End Property

  14. 在类模块中添加用于设置输出五角星横坐标的属性过程:在类模块中添加用于设置输出五角星横坐标的属性过程: Public Property Let X(ByVal vData As Single) mX = vData End Property Public Property Get X() As Single X = mX End Property 在类模块中添加用于设置输出五角星纵坐标的属性过程: Public Property Let Y(ByVal vData As Single) mY = vData End Property Public Property Get Y() As Single Y = mY End Property

  15. 在类模块中添加输出五角星的方法: Public Sub star(ByVal n As Single) Const pi = 3.14159 Randomize m = Int(Rnd * 16) colr = QBColor(m) mFrm.Line (X, Y) –Step(n * Sin(pi / 10), –n * Cos(pi / 10)), colr mFrm.Line –Step(n * Sin(pi / 10), n * Cos(pi / 10)), colr mFrm.Line –Step(–n * Cos(2 * pi / 10), –n * Sin(2 * pi / 10)), colr mFrm.Line –Step(n, 0), colr mFrm.Line –Step(–n * Cos(2 * pi / 10), n * Sin(2 * pi / 10)), colr End Sub

  16. (2) 设计窗体界面与设置属性如图13-5左所示。 图13-5 设计程序界面与运行程序 (3) 编写命令按钮的事件代码: Private Sub Command1_Click() Dim clas As New Class1 Set clas.Frm = Me clas.X = Rnd * Me.ScaleWidth clas.Y = Rnd * Me.ScaleHeight clas.star 500 End Sub

  17. 13.2.4 为类添加事件 程能够根据不同的事件做出不同的反应。 添加和处理事件的基本步骤如下: (1) 在定义类的类模块声明部分,用Event语句来声明事件。事件可以带有多个参数,不能是命名参数、可选参数或ParamArray参数。事件没有返回值,而且总是全局的。 (2) 在类模块中的适当地方,用RaiseEvent语句来引发事件,并提供所需要的参数。 (3) 在将要处理事件的模块声明部分,使用WithEvents关键字,添加该类类型的变量。它必须是一个模块级的变量。 (4) 在代码窗口左边的下拉菜单上,选择声明为WithEvents的变量,在代码窗口右边的下拉菜单上,选择希望处理的事件。使用所提供的参数,将代码添加到事件过程中。

  18. 【例13-5】模仿计时器控件,设计一个计时器类,并在窗体中调用。【例13-5】模仿计时器控件,设计一个计时器类,并在窗体中调用。 设计步骤如下: (1) 首先设计类Class1。新建一个工程。为工程添加一个类模块timClass,参见13.2.1节。在类模块的“通用”段声明变量如下: Private mvarEnabled As Boolean ' 用于局部复制属性Enabled的变量 Private mvarInterval As Integer ' 用于局部复制属性Interval的变量 Public Event Timer() ' 声明Timer事件 在类模块中添加计时器类的Interval属性过程: Public Property Let Interval(ByVal vData As Integer) mvarInterval = vData End Property Public Property Get Interval() As Integer Interval = mvarInterval End Property

  19. 在类模块中添加计时器类的Enabled属性过程: Public Property Let Enabled(ByVal vData As Boolean) mvarEnabled = vData If vData = True Then Me.Display ' 调用类模块中的Display方法 End If End Property  Public Property Get Enabled() As Boolean Enabled = mvarEnabled End Property 当计时器的Enabled属性为True时,调用如下类模块中的Display方法: Public Sub Display() Dim start As Single Dim NI As Single start = Timer NI = Me.Interval / 1000 Do

  20. If Timer > start + NI Then DoEvents RaiseEvent Timer ' 引发Timer事件 If Not Me.Enabled Then Exit Su ' Enabled属性为False时,结束方法 NI = NI + Me.Interval / 1000 End If Loop End Sub (2) 设计窗体界面与设置属性如图13-6左所示。 (3) 在窗体模块中编写代码。 首先在窗体的“通用”段用WithEvents关键字声明“带有事件”的对象变量: Private WithEvents mm As timClass 在窗体的Load事件代码中为对象变量赋值: Private Sub Form_Load() Set mm = New timClass End Sub

  21. 编写计时器对象的事件代码: Private Sub mm_Timer() Label1.Caption = Time() End Sub 编写命令按钮Command1的Click事件代码,来打开或关闭计时器: Private Sub Command1_Click() Command1.Caption = IIf(mm.Enabled, "开始", "暂停") mm.Interval = 100 mm.Enabled = Not mm.Enabled End Sub

  22. 运行程序,单击“开始”按钮,时钟开始显示,按钮改为“暂停”。单击“暂停”按钮,时钟停止,如图13-6右所示。运行程序,单击“开始”按钮,时钟开始显示,按钮改为“暂停”。单击“暂停”按钮,时钟停止,如图13-6右所示。 图13-6 设计程序界面与运行程序

  23. 习题十三 13.1 试述VB中类与对象的关系。 13.2 设计一个能够输出立体字的类。在程序中调用,可以在窗体或图片框中输出,如图13-7所示。 图13-7 习题13.2 13.3 设计一个能够产生上升气泡的类。在程序中调用,产生接连不断的气泡。 13.4 在上题中增加一个计时器类,来自动调用气泡类。

More Related