VBA面向对象程序设计课件

PPT
  • 阅读 30 次
  • 下载 0 次
  • 页数 69 页
  • 大小 910.557 KB
  • 2022-11-24 上传
  • 收藏
  • 违规举报
  • © 版权认领
下载文档30.00 元 加入VIP免费下载
此文档由【小橙橙】提供上传,收益归文档提供者,本网站只提供存储服务。若此文档侵犯了您的版权,欢迎进行违规举报版权认领
VBA面向对象程序设计课件
可在后台配置第一页与第二页中间广告代码
VBA面向对象程序设计课件
可在后台配置第二页与第三页中间广告代码
VBA面向对象程序设计课件
可在后台配置第三页与第四页中间广告代码
VBA面向对象程序设计课件
VBA面向对象程序设计课件
还剩10页未读,继续阅读
【这是免费文档,您可以免费阅读】
/ 69
  • 收藏
  • 违规举报
  • © 版权认领
下载文档30.00 元 加入VIP免费下载
文本内容

【文档说明】VBA面向对象程序设计课件.pptx,共(69)页,910.557 KB,由小橙橙上传

转载请保留链接:https://www.ichengzhen.cn/view-44841.html

以下为本文档部分文字说明:

第9章VBA面向对象的程序设计面向对象的基本概念VBA面向对象的方法面向对象编程的综合应用面向对象的系统观不同于结构化程序设计思想,基于面向对象的系统观认为,一个系统是由若干对象和这些对象间的交互构造而成。

面向对象系统观反映了基于面向对象的方法如何构造软件系统。2022/11/242数据库应用9.1.1面向对象核心概念对象属性方法和事件接口消息类2022/11/243数据库应用对象对象就是现实或抽象世界中具有明确含义或边界的事物。例如学生“江华”就是一个对象。对象

是属性和方法(或事件)的封装体。VBA包括:窗体、命令按钮、组合框等对象。这些对象用来构成与用户交互的界面元素2022/11/244数据库应用对象示意图属性对象方法或事件接口消息2022/11/245数据库应用组合框对象的方法2022/11/246数据库应用2.属性

属性用来刻画对象所具备的特性,属性具有属性名和属性值两个部分。例如江华的籍贯为“江西赣州”“江西赣州”为学生“江华”的籍贯属性取值2022/11/247数据库应用属性属性取值不同,可以使对象具有不同的状态。对图形化界面中的命令按钮来说,属性用来控制其显示的特性,例如“

标题”属性的取值为“确定”,决定命令按钮上显示的文字为“确定”。命令按钮的“可用”属性决定命令按钮是否有效2022/11/248数据库应用命令按钮部分属性2022/11/249数据库应用3.方法和事件

方法(或事件)是对象具有的某种处理功能,在程序代码上表现为一个程序过程。例如学生“江华”的“注册学籍”、“选修课程”操作就是学生对象具有的方法。2022/11/2410数据库应用方法和事件不同之处对象的方法调用是使用特定格式的显式调用。事件的调用方式

是隐式的。即通常不存在一条语句来说明事件被调用。事件的调用或触发是由用户的操作来实现的,这被称为事件驱动。2022/11/2411数据库应用事件例子例如:命令按钮上存在鼠标的单击事件,当用户使用鼠标指向

该命令按钮并单击鼠标左键时,将触发在命令按钮上单击事件中预先编写的代码。2022/11/2412数据库应用命令按钮具有的事件通常一个对象包括很多事件,命令按钮具有的事件。2022/11/2413数据库应用4.

接口接口是对象的特殊属性和方法(或事件),它表示一个对象为其他对象提供的服务。这些服务包括一个对象向其他对象公开的属性和方法(或事件)。一个对象接口中的属性和方法(或事件)为其他对象所知道,故其他对象通过发送消息到该对象来实现对象

间的交互。2022/11/2414数据库应用5.消息消息实现了对象间的交互。一个对象通过接口向外界公布其提供的属性和方法(或事件),其他对象通过发送一个特定的消息来与这个对象进行交互,可能有结果返回到发送消息的对象,也可能没有结果返回发送消息的对象。消息的描述除了和对象公布的属性和方法(

或事件)有关外,它还有特定的格式。例如:Application.<上一级对象>!<下一级对象>.属性名=值2022/11/2415数据库应用6.类在面向对象程序设计中,为提高程序代码的重用,一个

特定对象的属性和方法(或事件)由一个特定类来定义。类可以视为生产多个具有相同属性和方法(或事件)的对象模板。一般利用类来组织相似的多个对象。2022/11/2416数据库应用类在面向对象系统和程序中,具有相同结构和功能的对象

一般用类进行描述,并把一个特定对象称为其所属类的实例。类描述的是具有相同属性和方法(或事件)的一组对象。2022/11/2417数据库应用类的例子例如:江华和杨阳都是学生,即他们是“学生”类的实例,他们都具有“学号”、“姓名”等属性,同时都具有“注册学籍”

、“选修课程”等操作方法。为此面向对象方法中提出将具有相同属性和方法(或事件)对象抽象到类的方法,即类是对象的抽象,而一个具体对象是某个类的实例。2022/11/2418数据库应用类的例子由于类与对象使用相同的描

述方式,即都具有属性和方法(或事件)。这使得类、对象的概念容易混淆。“学生”是一个类“学生A”则是“学生”类的一个对象。在面向对象概念中,类是对象的抽象,对象是类的实例。2022/11/2419

数据库应用9.1.2类或对象的特性对象的可标识性类或对象的封装性对象的状态性对象的自治性类的继承性2022/11/2420数据库应用对象的可标识性每个对象实例都有标识自己的名称(Name)或标识号(英语为I

dentifier,简写为ID)。例如,如果图章具有自动改变序号功能,则每个实例化出来的图章印,虽具有相同的属性和操作,但它们具有不同的标识号——序号不同。2022/11/2421数据库应用对象可标识性示例左侧

选中的复选框名称为Check0名称“Check0”被用来标识左侧的复选框对象。2022/11/2422数据库应用2.类或对象的封装性类(或对象)的封装性表现在对象将属性和方法(或事件)封装在对象中。对象封装的好处是可以隐藏对象内部的实现细节,即所谓的信息隐蔽原则,

也可以理解为黑箱。只关心它提供的功能,不关心对象的功能是如何编写实现。可以杜绝由于某个对象的方法(或事件)改变对其他对象的影响,通过独立的分治原则可以减低问题的复杂性。2022/11/2423数据库应用3.对象的状态性对象的状态性是通

过给对象的属性赋值来表现的。即对象的取值不同,对象就处于不同状态。例如,命令按钮是否可用。2022/11/2424数据库应用4.对象的自治性由于对象是属性和方法(或事件)的封装体。对象状态的改变是由该对象自身实施的

。即其他对象通过发送消息,请求一个对象改变其状态,该对象的状态是否改变取决于该对象当前的状态,在某些状态下可能无法改变该对象的状态,这称为对象的自治性。2022/11/2425数据库应用5.类的继承性面向对象的概念中,已经讨论了类与对象间的关系,类与类之间是否存在关系呢?一个类与

另一个类之间可能存在类继承关系。2022/11/2426数据库应用类继承的例子父类子类子类继承了父类的所有属性和方法(或事件)小汽车载客数客车载客数带卫生间否货车自卸否汽车自重载重颜色启动方式驱动方式继承2022/11/2427

数据库应用类继承的例子“汽车”类是一个抽象的类它具有一般汽车具有的属性和方法(或事件),这里它被称为父类(也被称为基类)。“小汽车”类代表“汽车”类下面的一个分类,这里被称为子类,子类继承了父类的所有属性和方法(或事件)

。2022/11/2428数据库应用类继承的例子由子类实例化所得对象的属性和方法(或事件)包括在子类中定义的属性和方法(或事件),在父(基)类中定义的属性和方法(或事件)。2022/11/2429数据库应用类继承的优点

类继承性的好处是可以减少代码冗余。实现一次编码,多处使用减少软件系统开发工作减少软件系统的维护工作量2022/11/2430数据库应用6.对象的多态性由于对象的自治性和状态性相同调用,可以返回不同结果。2022/11/2431数据

库应用7.面向对象编程过程对于面向对象程序设计语言来说,编写具备特定功能程序的过程大致分为三步:(1)根据给出的实际问题,抽象出相关的名词术语,再将这些名词变成该系统中的各个核心概念——类,类封装了其代表核心概念的属性和方法(或事件);(2)将类实例化为对

象;(3)描述这些对象间的交互,即这些对象间的消息关系。2022/11/2432数据库应用Access2007面向对象编程分层初级阶段中级阶段高级阶段2022/11/2433数据库应用(1)初级阶段用户不用编写自己的类代码;仅需将Access对象模型提供的类实例化为对象;再编写这些对

象间的交互部分的程序。2022/11/2434数据库应用(1)初级阶段初级阶段用户使用的类库是Access2007的对象模型它提供了几乎所有的Access2007界面构成元素的类库2022/11/2435数据库应用初级用户操作构造定制窗体的过程是将相应的(控件)类实例化为对应(控件)

对象的过程编写代码的过程描述多个对象间交互的过程。优点编程简单、编写程序代码可靠性高2022/11/2436数据库应用初级阶段特性初级阶段的程序编写主要强调对象的可标识性自治性状态性2022/11/2437数据库应用(2)中级阶段中级阶

段是在初级的基础上,增加了用户自定义类,但这个类不从其他类继承任何的属性和方法(或事件),它仅仅是一个简单的类。在这个阶段,用户除了初级阶段工作,还需要将自己编写的类先实例化为对象,再引用该对象

对应的属性和方法。2022/11/2438数据库应用(3)高级阶段高级阶段的工作是在中级阶段的基础上增加的用户自定义类涉及从其他类继承了属性和方法(或事件)。2022/11/2439数据库应用类与对象之间的关系类与类

关系类与对象关系对象与对象关系类与类间为继承关系。类可以实例化到多个对象;多个对象抽象到一个类。对象与对象间是交互关系。对象间交互就是消息,消息中引用对象属性和调用对象方法有严格格式父类子类继承类对象实例化抽象对象对象交互2022/11/2440数据库应用【例9-1】面向对象编程示例

2022/11/2441数据库应用当选中“可移动”复选框时,窗体可以移动;当没有选中该复选框时,窗体不可移动。单选按钮当单击“中文”单选按钮时,窗体标题显示为“面向对象程序设计示例一”;当单击“English”单选按钮时,窗体标题显示为“ADemon

strationforObject-OrientedProgram”。面向对象编程示例构造界面2022/11/2442数据库应用面向对象编程示例设置属性例如设置“标题”属性的取值2022/11/2443

数据库应用面向对象编程示例编写事件代码2022/11/2444数据库应用面向对象编程示例操作步骤“创建”选项卡→“窗体”组→“空白窗体”右击“窗体1”空白处→快捷菜单“属性”→“其他”选项卡→“弹出方式”“

是”“格式”选项卡→“标题”“面向对象程序设计示例一”右击窗体标题→快捷菜单“设计视图”将鼠标指针指向“主体”下侧,在出现上、下箭头状的鼠标指针是进行拖放操作,调整主体大小2022/11/2445数据库应用面向对象编程示

例操作步骤(续)“设计”选项卡→“控件组”→复选框“Check0”标签“Label1”→“标题”属性“可移动”“设计”选项卡→“控件组”→选项按钮“Option2”标签“Label3”→“标题”属性“中文”“设计”选项卡→“控件组”→选项按钮“Option4

”标签“Label5”→“标题”属性“English”2022/11/2446数据库应用面向对象编程示例操作步骤(续)右击窗体空白处→快捷菜单“事件生成器”→“选择生成器”对话框→“代码生成器”编写代码保存“窗体”为“面向对象程序设计示例一”右击窗体标题→快捷菜单“窗体视图”

2022/11/2447数据库应用面向对象编程示例窗体Load事件代码2022/11/2448数据库应用PrivateSubForm_Load()'将复选框默认值设置为选中状态。Me.Check0.Value=True'将中文选项按钮默认值设置为选中状态Me.

Option2.Value=True'将英文选项按钮默认值设置为未选中状态Me.Option4.Value=FalseEndSub面向对象编程示例复选框Click事件代码2022/11/2449数据库应用'这是

对复选框进行编写程序,以确定窗体是否可以移动。PrivateSubCheck0_Click()'若复选框为未选中状态,则设置窗体不可移动。IfMe.Check0.Value=FalseThenMe.Moveable=FalseEndIf'若复选框为选中状

态,则设置窗体可移动。IfMe.Check0.Value=TrueThenMe.Moveable=TrueEndIfEndSub面向对象编程示例选项按钮“中文”Click事件代码2022/11/2450数据库应

用'这是对中文选项按钮编写程序,以确定窗体标题为中文。PrivateSubOption2_Click()'选中“中文”选项按钮。Me.Option2.Value=True'不选中“English”选项按钮。Me.Option4.Value=False'设置窗体标题为中文。Me.Cap

tion="面向对象程序设计示例"EndSub面向对象编程示例选项按钮“English”Click事件代码2022/11/2451数据库应用'这是对英文选项按钮编写程序,以确定窗体标题为英文。PrivateSubOption4_Click()'选中“Enlish”选项按钮。Me.Option4.

Value=True'不选中“中文”选项按钮。Me.Option2.Value=False'设置窗体标题为英文。Me.Caption="ADemonstrationforOriented-ObjectProgram"EndSu

b面向对象程序说明(归纳)构造界面设置对象属性编写事件代码2022/11/2452数据库应用面向对象程序说明(归纳)构造界面2022/11/2453数据库应用序号窗体对象界面元素对象实例名称对象所属的类对象事件1窗体Form窗体Load2Check0复选框Click文字“可移动”Lab

el1标签3Option2选项按钮Click文字“中文”Label3标签4Option4选项按钮Click文字“English”Label5标签面向对象程序说明(归纳)设置对象属性2022/11/2454数据库

应用对象实例名称对象属性设置Form“标题”为“面向对象编程示例一”“弹出方式”为“是”Check0Label1“标题”设为“面向对象编程示例”Option2Label3“标题”设为“中文”Option4Lab

el5“标题”设为“Enlish”面向对象程序说明(归纳)编写事件代码2022/11/2455数据库应用对象名称对象事件事件功能FormLoad打开窗体时,将复选框标记为选中状态;将中文选项按钮标记为选中状态;将英文选项按钮标记为非选中状态。Check0Click若复选框为选中

状态,则设置窗体可移动。若复选框为未选中状态,则设置窗体不可移动。Label1Option2Click先设置“中文”选项按钮为选中状态,而“英文”选项按钮为不选中状态,再设置窗体标题为中文。Label3Option4Click先设

置“英文”选项按钮为选中状态,而“中文”选项按钮为不选中状态,再设置窗体标题为英文。Label5后面注意不再给出窗体界面构造过程,仅给出窗体界面和界面控件对应的名称。不给出标签属性设置过程由于标签控件在窗体界面中仅起提示信息的功能修改标签提示信息的属性为“标题”属

性。2022/11/2456数据库应用实例12022/11/2457数据库应用构造界面实例12022/11/2458数据库应用构造界面Text0Label1特别注意:(1)每布局一个“文本框”对象,都将自动增加一个“标签”对象!(2)事件代码中的对象名

称一定要与此处的对象名称保持一致。实例12022/11/2459数据库应用构造界面Text2Label3实例12022/11/2460数据库应用构造界面Text4Label5实例12022/11/2461数据库应用构造界面Text6Label7实例12022/11/246

2数据库应用构造界面Text8Label9实例12022/11/2463数据库应用构造界面Command10实例1设置对象属性2022/11/2464数据库应用对象实例名称对象属性设置Form“标题”为“

计算圆柱体底面积、侧面积和体积”“弹出方式”为“是”Label1“标题”设为“半径”Label3“标题”设为“高”Label5“标题”设为“底面积”Label7“标题”设为“侧面积”Label9“标题”设为“体积”C

ommand10“标题”设为“计算”实例1编写事件代码2022/11/2465数据库应用对象名称对象事件Command10ClickPrivateSubCommand10_Click()Constpi=3.14159DimrAsDouble,hAsDoubler

=Val(Me.Text0.Value)h=Val(Me.Text2.Value)Me.Text4.Value=pi*r*rMe.Text6.Value=2*pi*r*hMe.Text8.Value=pi*r*r*h

EndSub实例22022/11/2466数据库应用构造界面实例2设置对象属性2022/11/2467数据库应用对象实例名称对象属性设置Form“标题”为“求一元二次方程的根”“弹出方式”为“是”Label1“标题”设为“二次项系数A”Label3“标题”设为“

一次项系数B”Label5“标题”设为“常数项C”Label7“标题”设为“第一个根X1”Label9“标题”设为“第二个根X2”Command10“标题”设为“求解”实例2编写事件代码2022/11/2468数据库应用对象名称对象事件Text0LostFocusCommand10C

lickPrivateSubText0_LostFocus()DimaAsSinglea=Val(Me.Text0.Value)Ifa=0ThenMsgBox("二次项系数A不能等于0!")Me.Text0.SetFocusEndIf

EndSub2022/11/2469数据库应用PrivateSubCommand10_Click()DimaAsSingle,bAsSingle,cAsSingleDimsAsDouble,x2AsDoublea=Val

(Me.Text0.Value)b=Val(Me.Text2.Value)c=Val(Me.Text4.Value)s=b*b-4*a*cIfs<0ThenMsgBox("次方程无解!")Elsex1=(-b+Sqr(s))/2/ax2=(-b-Sqr(s))/2

/aMe.Text6.Value=x1Me.Text8.Value=x2EndIfEndSub

小橙橙
小橙橙
文档分享,欢迎浏览!
  • 文档 25747
  • 被下载 7
  • 被收藏 0
相关资源
广告代码123
若发现您的权益受到侵害,请立即联系客服,我们会尽快为您处理。侵权客服QQ:395972555 (支持时间:9:00-21:00) 公众号
Powered by 太赞文库
×
确认删除?