《可视化程序设计第13章 面向对象编程简介.ppt》由会员分享,可在线阅读,更多相关《可视化程序设计第13章 面向对象编程简介.ppt(23页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、VisualBasic程序设计教程程序设计教程机械工业出版社同名教材配套电子教案2003 2003 年年 6 6月月第第1313章章 面向对象编程简介面向对象编程简介 13.113.1 基本概念基本概念13.1.1 13.1.1 13.1.1 13.1.1 对象和类对象和类对象和类对象和类 13.1.213.1.2对象变量对象变量对象变量对象变量 13.213.2 类的创建类的创建类的创建类的创建 13.2.113.2.1创建类模块创建类模块创建类模块创建类模块 13.2.213.2.2为类添加属性为类添加属性为类添加属性为类添加属性 13.2.313.2.3为类添加方法为类添加方法为类添加方
2、法为类添加方法 13.2.413.2.4为类添加事件为类添加事件为类添加事件为类添加事件 习题十三习题十三习题十三习题十三 13.1基本概念13.1.1对象和类1.对象2.类3.面向对象编程的特点面向对象编程有以下特点:对象是程序的主体:对象具有多态性:对象具有继承性:对象具有封装性:13.1.2对象变量对象变量的声明声明一个对象变量的语法格式为Dim|ReDim|Static|Private|Public变量名AsNew类名【例13-1】使用对象变量创建新窗体。设计步骤如下:(1)设计界面与设置属性参见图13-1左。图13-1“克隆”窗体(2)编写命令按钮Command1的Click事件代码
3、:PrivateSubCommand1_Click()DimobjFormAsNewForm1objForm.ShowEndSub运行程序,单击命令按钮,将不断地创建与原有窗体完全一样的新窗体,如图13-1右所示。2.对象变量的赋值对象变量赋值语句的语法格式为:Set变量名=对象【例13-2】使用对象变量引用按钮对象。设计步骤如下:(1)设计界面与设置属性参见图13-2左。图13-2引用按钮对象(2)编写窗体的MouseUp事件代码:PrivateSubForm_MouseUp(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)DimcmdA
4、sCommandButton声明对象变量cmd为按钮类型Setcmd=Command1将命令按钮Command1赋值给cmdcmd.Top=Y引用cmdcmd.Left=XEndSub运行程序,在窗体上单击鼠标,命令按钮将随着鼠标单击的位置移动,如图13-2右所示。3.特定对象变量与通用对象变量【例13-3】使用通用控件变量引用不同的控件。设计步骤如下:(1)设计界面与设置属性。(2)编写代码。首先编写窗体的Load事件代码,将各控件的Left属性保存在Tag属性中:PrivateSubForm_Load()ForEachobjInMe.Controlsobj.Tag=obj.LeftNext
5、EndSub然后编写窗体的然后编写窗体的Click事件代码:事件代码:PrivateSubForm_Click()StaticnAsInteger,yAsBooleanDimcntAsControl声明对象变量声明对象变量cnt为通用控件为通用控件y=NotySetcnt=Me.Controls(n)依次将不同的控件赋值给依次将不同的控件赋值给cntIfyThencnt.Left=cnt.Tag引用引用cntn=n+1Elsecnt.Left=0引用引用cntEndIfn=nMod3EndSub13.2类的创建类的创建13.2.1创建类模块创建类模块在工程中创建一个类模块的步骤为在工程中创建一
6、个类模块的步骤为:(1)选择选择“工程工程”菜单中的菜单中的“添加类模块添加类模块”菜单项,打开菜单项,打开“添加添加类模块类模块”对话框(图对话框(图13-4)。)。图图13-4“添加类模块添加类模块”对话框对话框13.2.2为类添加属性为类添加属性1.添加全局变量与局部变量添加全局变量与局部变量2.2.属性过程属性过程3.(1)PropertyLet过程的语法格式为过程的语法格式为4.Public|Private|FriendStaticPropertyLet属属性性名名(参数列表参数列表,值值)5.语句列语句列6.ExitProperty7.语句列语句列8.EndProperty(2)P
7、ropertyGet过程的语法格式为过程的语法格式为Public|Private|FriendStaticPropertyGet属属性性名名参数列表参数列表As类型类型语句列语句列属性名属性名=expressionExitProperty语句列语句列属性名属性名=expressionEndProperty(3)PropertySet过程的语法格式为过程的语法格式为Public|Private|FriendStaticPropertySet属属性性名名(参数列表参数列表,对象变量对象变量)语句列语句列ExitProperty语句列语句列EndProperty13.2.3为类添加方法【例13-4】
8、设计一个能画出五角星的类,并在窗体中调用。设计步骤如下:(1)首先设计类Class1。新建一个工程。为工程添加一个类模块Class1,参见13.2.1。在类模块的“通用”段声明变量如下:PrivatemXAsSingle用于局部复制X属性PrivatemYAsSingle用于局部复制Y属性PrivatemFrmAsObject用于局部复制Frm属性在类模块中添加用于设置窗体对象的属性过程:PublicPropertySetFrm(ByValvDataAsObject)SetmFrm=vDataEndPropertyPublicPropertyGetFrm()AsObjectSetFrm=mFr
9、mEndProperty在类模块中添加用于设置输出五角星横坐标的属性过程:在类模块中添加用于设置输出五角星横坐标的属性过程:PublicPropertyLetX(ByValvDataAsSingle)mX=vDataEndPropertyPublicPropertyGetX()AsSingleX=mXEndProperty在类模块中添加用于设置输出五角星纵坐标的属性过程:在类模块中添加用于设置输出五角星纵坐标的属性过程:PublicPropertyLetY(ByValvDataAsSingle)mY=vDataEndPropertyPublicPropertyGetY()AsSingleY=m
10、YEndProperty在类模块中添加输出五角星的方法:在类模块中添加输出五角星的方法:PublicSubstar(ByValnAsSingle)Constpi=3.14159Randomizem=Int(Rnd*16)colr=QBColor(m)mFrm.Line(X,Y)Step(n*Sin(pi/10),n*Cos(pi/10),colrmFrm.LineStep(n*Sin(pi/10),n*Cos(pi/10),colrmFrm.LineStep(n*Cos(2*pi/10),n*Sin(2*pi/10),colrmFrm.LineStep(n,0),colrmFrm.LineSt
11、ep(n*Cos(2*pi/10),n*Sin(2*pi/10),colrEndSub(2)设计窗体界面与设置属性如图13-5左所示。图图13-5设计程序界面与运行程序设计程序界面与运行程序(3)编写命令按钮的事件代码:编写命令按钮的事件代码:PrivateSubCommand1_Click()DimclasAsNewClass1Setclas.Frm=Meclas.X=Rnd*Me.ScaleWidthclas.Y=Rnd*Me.ScaleHeightclas.star500EndSub13.2.4为类添加事件为类添加事件程能够根据不同的事件做出不同的反应。程能够根据不同的事件做出不同的反应
12、。添加和处理事件的基本步骤如下:添加和处理事件的基本步骤如下:(1)在在定定义义类类的的类类模模块块声声明明部部分分,用用Event语语句句来来声声明明事事件件。事事件件可可以以带带有有多多个个参参数数,不不能能是是命命名名参参数数、可可选选参参数数或或ParamArray参数。事件没有返回值,而且总是全局的。参数。事件没有返回值,而且总是全局的。(2)在在类类模模块块中中的的适适当当地地方方,用用RaiseEvent语语句句来来引引发发事事件,并提供所需要的参数。件,并提供所需要的参数。(3)在在将将要要处处理理事事件件的的模模块块声声明明部部分分,使使用用WithEvents关关键字,添加
13、该类类型的变量。它必须是一个模块级的变量。键字,添加该类类型的变量。它必须是一个模块级的变量。(4)在在代代码码窗窗口口左左边边的的下下拉拉菜菜单单上上,选选择择声声明明为为WithEvents的的变变量量,在在代代码码窗窗口口右右边边的的下下拉拉菜菜单单上上,选选择择希希望望处处理理的的事事件件。使使用用所所提提供供的的参参数数,将将代代码码添添加加到到事事件件过程中。过程中。【例13-5】模仿计时器控件,设计一个计时器类,并在窗体中调用。设计步骤如下:(1)首先设计类Class1。新建一个工程。为工程添加一个类模块timClass,参见13.2.1节。在类模块的“通用”段声明变量如下:Pr
14、ivatemvarEnabledAsBoolean用于局部复制属性Enabled的变量PrivatemvarIntervalAsInteger用于局部复制属性Interval的变量PublicEventTimer()声明Timer事件在类模块中添加计时器类的Interval属性过程:PublicPropertyLetInterval(ByValvDataAsInteger)mvarInterval=vDataEndPropertyPublicPropertyGetInterval()AsIntegerInterval=mvarIntervalEndProperty在类模块中添加计时器类的在类模
15、块中添加计时器类的Enabled属性过程:属性过程:PublicPropertyLetEnabled(ByValvDataAsBoolean)mvarEnabled=vDataIfvData=TrueThenMe.Display调用类模块中的调用类模块中的Display方法方法EndIfEndPropertyPublicPropertyGetEnabled()AsBooleanEnabled=mvarEnabledEndProperty当当计计时时器器的的Enabled属属性性为为True时时,调调用用如如下下类类模模块块中中的的Display方法:方法:PublicSubDisplay()D
16、imstartAsSingleDimNIAsSinglestart=TimerNI=Me.Interval/1000DoIfTimerstart+NIThenDoEventsRaiseEventTimer引发引发Timer事件事件IfNotMe.EnabledThenExitSuEnabled属属性性为为False时时,结结束束方方法法NI=NI+Me.Interval/1000EndIfLoopEndSub(2)设计窗体界面与设置属性如图设计窗体界面与设置属性如图13-6左所示。左所示。(3)在窗体模块中编写代码。在窗体模块中编写代码。首首先先在在窗窗体体的的“通通用用”段段用用WithEv
17、ents关关键键字字声声明明“带带有有事事件件”的的对象变量:对象变量:PrivateWithEventsmmAstimClass在窗体的在窗体的Load事件代码中为对象变量赋值:事件代码中为对象变量赋值:PrivateSubForm_Load()Setmm=NewtimClassEndSub编写计时器对象的事件代码:编写计时器对象的事件代码:PrivateSubmm_Timer()Label1.Caption=Time()EndSub编写命令按钮编写命令按钮Command1的的Click事件代码,来打开或关闭计时器:事件代码,来打开或关闭计时器:PrivateSubCommand1_Clic
18、k()Command1.Caption=IIf(mm.Enabled,开始开始,暂停暂停)mm.Interval=100mm.Enabled=Notmm.EnabledEndSub运行程序,单击“开始”按钮,时钟开始显示,按钮改为“暂停”。单击“暂停”按钮,时钟停止,如图13-6右所示。图图13-6设计程序界面与运行程序设计程序界面与运行程序习题十三习题十三13.1试述VB中类与对象的关系。13.2设计一个能够输出立体字的类。在程序中调用,可以在窗体或图片框中输出,如图13-7所示。图图13-7习题习题13.213.3设计一个能够产生上升气泡的类。在程序中调用,产生接连不断的气泡。13.4在上题中增加一个计时器类,来自动调用气泡类。