版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第9章 VBA面向对象的程序设计面向对象的基本概念VBA面向对象的方法面向对象编程的综合应用面向对象的系统观不同于结构化程序设计思想,基于面向对面向对象的系统观象的系统观认为,一个系统是由若干对象和这些对象间的交互构造而成。面向对象系统观反映了基于面向对象的方法如何构造软件系统。2022-2-22VBA面向对象程序设计9.1.1 面向对象核心概念对象属性方法和事件接口消息类2022-2-23VBA面向对象程序设计对象对象对象就是现实或抽象世界中具有明确含义或边界的事物。例如学生“江华”就是一个对象。对象是属性和方法(或事件)的封装体。VBA包括:窗体、命令按钮、组合框等对象。这些对象用来构成与
2、用户交互的界面元素2022-2-24VBA面向对象程序设计对象示意图2022-2-25VBA面向对象程序设计组合框对象的方法2022-2-26VBA面向对象程序设计2. 属性属性属性用来刻画对象所具备的特性,属性具有属性名属性名和属性值属性值两个部分。例如江华的籍贯为“江西赣州”“江西赣州”为学生“江华”的籍贯属性取值2022-2-27VBA面向对象程序设计属性属性取值不同,可以使对象具有不同的状不同的状态态。对图形化界面中的命令按钮来说,属性用来控制其显示的特性,例如“标题”属性的取值为“确定”,决定命令按钮上显示的文字为“确定”。命令按钮的“可用”属性决定命令按钮是否有效2022-2-28
3、VBA面向对象程序设计命令按钮部分属性2022-2-29VBA面向对象程序设计3. 方法和事件方法(或事件)方法(或事件)是对象具有的某种处理功能,在程序代码上表现为一个程序过程。例如学生“江华”的“注册学籍”、“选修课程”操作就是学生对象具有的方法。2022-2-210VBA面向对象程序设计方法和事件不同之处对象的方法调用方法调用是使用特定格式的显式调用。事件的调用事件的调用方式是隐式的。即通常不存在一条语句来说明事件被调用。事件的调用或触发是由用户的操作来实现的,这被称为事件驱动。2022-2-211VBA面向对象程序设计事件例子例如:命令按钮上存在鼠标的单击事件,当用户使用鼠标指向该命令
4、按钮并单击鼠标左键时,将触发在命令按钮上单击事件中预先编写的代码。2022-2-212VBA面向对象程序设计命令按钮具有的事件通常一个对象包括很多事件,命令按钮具有的事件。2022-2-213VBA面向对象程序设计4. 接口接口接口是对象的特殊属性和方法(或事件),它表示一个对象为其他对象提供的服务。这些服务包括一个对象向其他对象公开的属性和方法(或事件)。一个对象接口中的属性和方法(或事件)为其他对象所知道,故其他对象通过发送消息到该对象来实现对象间的交互。2022-2-214VBA面向对象程序设计5. 消息消息实现了对象间的交互。一个对象通过接口向外界公布其提供的属性和方法(或事件),其他
5、对象通过发送一个特定的消息来与这个对象进行交互,可能有结果返回到发送消息的对象,也可能没有结果返回发送消息的对象。消息的描述除了和对象公布的属性和方法(或事件)有关外,它还有特定的格式还有特定的格式。例如:Application.!.属性名 = 值2022-2-215VBA面向对象程序设计6. 类在面向对象程序设计中,为提高程序代码的重用,一个特定对象的属性和方法(或事件)由一个特定类来定义。类类可以视为生产多个具有相同属性和方法(或事件)的对象模板。一般利用类来组织相似的多个对象。2022-2-216VBA面向对象程序设计类在面向对象系统和程序中,具有相同结构和功能的对象一般用类进行描述,并
6、把一个特定对象称为其所属类的实例。类描述的是具有相同属性和方法(或事件)的一组对象。2022-2-217VBA面向对象程序设计类的例子例如:江华和杨阳都是学生,即他们是“学生”类的实例,他们都具有“学号”、“姓名”等属性,同时都具有“注册学籍”、“选修课程”等操作方法。为此面向对象方法中提出将具有相同属性和方法(或事件)对象抽象到类的方法,即类是对象的抽象类是对象的抽象,而一个具体对象是对象是某个类的实例类的实例。2022-2-218VBA面向对象程序设计类的例子由于类与对象使用相同的描述方式,即都具有属性和方法(或事件)。这使得类、对象的概念容易混淆。“学生”是一个类“学生A”则是“学生”类
7、的一个对象。在面向对象概念中,类是对象的抽象,对象是类的实例。2022-2-219VBA面向对象程序设计9.1.2 类或对象的特性对象的可标识性类或对象的封装性对象的状态性对象的自治性类的继承性2022-2-220VBA面向对象程序设计对象的可标识性每个对象实例都有标识自己的名称名称(Name)或标识号标识号(英语为Identifier,简写为ID)。例如,如果图章具有自动改变序号功能,则每个实例化出来的图章印,虽具有相同的属性和操作,但它们具有不同的标识号序号不同。2022-2-221VBA面向对象程序设计对象可标识性示例左侧选中的复选框名称为Check0名称“Check0”被用来标识左侧的
8、复选框对象。2022-2-222VBA面向对象程序设计2. 类或对象的封装性类(或对象)的封装性封装性表现在对象将属性和方法(或事件)封装在对象中。对象封装的好处是可以隐藏对象内部的实现细节,即所谓的信息隐蔽原则,也可以理解为黑箱。只关心它提供的功能,不关心对象的功能是如何编写实现。可以杜绝由于某个对象的方法(或事件)改变对其他对象的影响,通过独立的分治原则可以减低问题的复杂性。2022-2-223VBA面向对象程序设计3. 对象的状态性对象的状态性状态性是通过给对象的属性赋值来表现的。即对象的取值不同,对象就处于不同状态。例如,命令按钮是否可用。2022-2-224VBA面向对象程序设计4.
9、 对象的自治性由于对象是属性和方法(或事件)的封装体。对象状态的改变是由该对象自身实施的对象自身实施的。即其他对象通过发送消息,请求一个对象改变其状态,该对象的状态是否改变取决于该对象当前的状态,在某些状态下可能无法改变该对象的状态,这称为对象的自治性。2022-2-225VBA面向对象程序设计5. 类的继承性面向对象的概念中,已经讨论了类与对象间的关系,类与类之间是否存在关系呢?一个类与另一个类之间可能存在类继承关类继承关系系。2022-2-226VBA面向对象程序设计类继承的例子父类子类子类继承了父类的所有属性和方法(或事件)2022-2-227VBA面向对象程序设计类继承的例子“汽车”类
10、是一个抽象的类它具有一般汽车具有的属性和方法(或事件),这里它被称为父类(也被称为基类)。“小汽车”类代表“汽车”类下面的一个分类,这里被称为子类,子类继承了父类的所有属性和方法(或事件)。2022-2-228VBA面向对象程序设计类继承的例子由子类实例化所得对象的属性和方法(或事件)包括在子类中定义的属性和方法(或事件),在父(基)类中定义的属性和方法(或事件)。2022-2-229VBA面向对象程序设计类继承的优点类继承性的好处是可以减少代码冗余。实现一次编码,多处使用减少软件系统开发工作减少软件系统的维护工作量2022-2-230VBA面向对象程序设计6. 对象的多态性由于对象的自治性和
11、状态性相同调用,可以返回不同结果。2022-2-231VBA面向对象程序设计7. 面向对象编程过程对于面向对象程序设计语言来说,编写具备特定功能程序的过程大致分为三步:(1)根据给出的实际问题,抽象出相关的名词术语,再将这些名词变成该系统中的各个核心概念类类,类封装了其代表核心概念的属性和方法(或事件);(2)将类实例化实例化为对象;(3)描述这些对象间的交互交互,即这些对象间的消息关系。2022-2-232VBA面向对象程序设计Access 2007面向对象编程分层初级阶段中级阶段高级阶段2022-2-233VBA面向对象程序设计(1)初级阶段用户不用编写自己的类代码;仅需将Access对象
12、模型提供的类实例化为对象;再编写这些对象间的交互部分的程序。2022-2-234VBA面向对象程序设计(1)初级阶段初级阶段用户使用的类库是Access 2007的对象模型它提供了几乎所有的Access 2007界面构成元素的类库2022-2-235VBA面向对象程序设计初级用户操作构造定制窗体的过程是将相应的(控件)类实例化为对应(控件)对象的过程编写代码的过程描述多个对象间交互的过程。优点编程简单、编写程序代码可靠性高2022-2-236VBA面向对象程序设计初级阶段特性初级阶段的程序编写主要强调对象的可标识性自治性状态性2022-2-237VBA面向对象程序设计(2)中级阶段中级阶段是在
13、初级的基础上,增加增加了用户自定义类类,但这个类不不从其他类继承继承任何的属性和方法(或事件),它仅仅是一个简单的类。在这个阶段,用户除了初级阶段工作,还需要将自己编写的类先实例化为对象,再引用该对象对应的属性和方法。2022-2-238VBA面向对象程序设计(3)高级阶段高级阶段的工作是在中级阶段的基础上增加的用户自定义类涉及从其他类继承了属性和方法(或事件)。2022-2-239VBA面向对象程序设计类与对象之间的关系类与类关类与类关系系类与对象关系类与对象关系对象与对象关系对象与对象关系类与类间类与类间为继承关系。为继承关系。类可以实例化到多个对象;多个对象抽象到一个类。对象与对象间是交
14、互关系。对象间交互就是消息,消息中引用对象属性和调用对象方法有严格格式2022-2-240VBA面向对象程序设计【例9-1】面向对象编程示例2022-2-241VBA面向对象程序设计当选中“可移动”复选框时,窗体可以移动;当没有选中该复选框时,窗体不可移动。单选按钮当单击“中文”单选按钮时,窗体标题显示为“面向对象程序设计示例一”;当单击“English”单选按钮时,窗体标题显示为“A Demonstration for Object-Oriented Program”。面向对象编程示例构造界面2022-2-242VBA面向对象程序设计面向对象编程示例设置属性例如设置“标题”属性的取值2022
15、-2-243VBA面向对象程序设计面向对象编程示例编写事件代码2022-2-244VBA面向对象程序设计面向对象编程示例操作步骤“创建” 选项卡 “窗体”组“空白窗体”右击“窗体1”空白处 快捷菜单“属性” “其他”选项卡 “弹出方式”“是”“格式”选项卡 “标题”“面向对象程序设计示例一”右击窗体标题 快捷菜单“设计视图” 将鼠标指针指向“主体” 下侧,在出现上、下箭头状的鼠标指针是进行拖放操作,调整主体大小2022-2-245VBA面向对象程序设计面向对象编程示例操作步骤(续)“设计”选项卡 “控件组” 复选框“Check0”标签“Label1” “标题”属性“可移动”“设计”选项卡 “控
16、件组” 选项按钮“Option2”标签 “Label3” “标题”属性“中文”“设计”选项卡 “控件组” 选项按钮“Option4”标签“Label5” “标题”属性“English”2022-2-246VBA面向对象程序设计面向对象编程示例操作步骤(续)右击窗体空白处 快捷菜单“事件生成器” “选择生成器”对话框 “代码生成器” 编写代码保存“窗体”为“面向对象程序设计示例一”右击窗体标题 快捷菜单“窗体视图” 2022-2-247VBA面向对象程序设计面向对象编程示例窗体Load事件代码2022-2-248VBA面向对象程序设计Private Sub Form_Load() 将复选框默认值
17、设置为选中状态。 Me.Check0.Value = True 将中文选项按钮默认值设置为选中状态 Me.Option2.Value = True 将英文选项按钮默认值设置为未选中状态 Me.Option4.Value = FalseEnd Sub面向对象编程示例复选框Click事件代码2022-2-249VBA面向对象程序设计这是对复选框进行编写程序,以确定窗体是否可以移动。Private Sub Check0_Click() 若复选框为未选中状态,则设置窗体不可移动。 If Me.Check0.Value = False Then Me.Moveable = False End If 若复
18、选框为选中状态,则设置窗体可移动。 If Me.Check0.Value = True Then Me.Moveable = True End IfEnd Sub面向对象编程示例选项按钮“中文”Click事件代码2022-2-250VBA面向对象程序设计这是对中文选项按钮编写程序,以确定窗体标题为中文。Private Sub Option2_Click() 选中“中文”选项按钮。 Me.Option2.Value = True 不选中“English”选项按钮。 Me.Option4.Value = False 设置窗体标题为中文。 Me.Caption = 面向对象程序设计示例End Sub
19、面向对象编程示例选项按钮“English”Click事件代码2022-2-251VBA面向对象程序设计这是对英文选项按钮编写程序,以确定窗体标题为英文。Private Sub Option4_Click() 选中“Enlish”选项按钮。 Me.Option4.Value = True 不选中“中文”选项按钮。 Me.Option2.Value = False 设置窗体标题为英文。 Me.Caption = A Demonstration for Oriented-Object ProgramEnd Sub面向对象程序说明(归纳)构造界面设置对象属性编写事件代码2022-2-252VBA面向对
20、象程序设计面向对象程序说明(归纳)构造界面2022-2-253VBA面向对象程序设计序号序号窗体对象界面元素窗体对象界面元素对象实例对象实例名称名称对象所属对象所属的类的类对象事件对象事件1窗体Form窗体Load2Check0复选框Click文字“可移动”Label1标签 3Option2选项按钮Click文字“中文”Label3标签 4Option4选项按钮Click文字“English”Label5标签 面向对象程序说明(归纳)设置对象属性2022-2-254VBA面向对象程序设计对象实例名称对象属性设置Form“标题”为“面向对象编程示例一”“弹出方式”为“是”Check0Label1
21、“标题”设为“面向对象编程示例”Option2Label3“标题”设为“中文”Option4Label5“标题”设为“Enlish”面向对象程序说明(归纳)编写事件代码2022-2-255VBA面向对象程序设计对象名称对象事件事件功能FormLoad打开窗体时,将复选框标记为选中状态;将中文选项按钮标记为选中状态;将英文选项按钮标记为非选中状态。Check0Click若复选框为选中状态,则设置窗体可移动。若复选框为未选中状态,则设置窗体不可移动。Label1Option2Click先设置“中文”选项按钮为选中状态,而“英文”选项按钮为不选中状态,再设置窗体标题为中文。Label3Option4
22、Click先设置“英文”选项按钮为选中状态,而“中文”选项按钮为不选中状态,再设置窗体标题为英文。Label5后面注意不再给出窗体界面构造过程,仅给出窗体界面和界面控件对应的名称。不给出标签属性设置过程由于标签控件在窗体界面中仅起提示信息的功能修改标签提示信息的属性为“标题”属性。2022-2-256VBA面向对象程序设计实例12022-2-257VBA面向对象程序设计构造界面实例12022-2-258VBA面向对象程序设计构造界面Text0Label1特别注意:(1) 每布局一个“文本框”对象,都将自动增加一个“标签”对象!(2)事件代码中的对象名称一定要与此处的对象名称保持一致。实例120
23、22-2-259VBA面向对象程序设计构造界面Text2Label3实例12022-2-260VBA面向对象程序设计构造界面Text4Label5实例12022-2-261VBA面向对象程序设计构造界面Text6Label7实例12022-2-262VBA面向对象程序设计构造界面Text8Label9实例12022-2-263VBA面向对象程序设计构造界面Command10实例1设置对象属性2022-2-264VBA面向对象程序设计对象实例名称对象属性设置Form“标题”为“计算圆柱体底面积、侧面积和体积”“弹出方式”为“是”Label1“标题”设为“半径”Label3“标题”设为“高”Lab
24、el5“标题”设为“底面积”Label7“标题”设为“侧面积”Label9“标题”设为“体积”Command10“标题”设为“计算”实例1编写事件代码2022-2-265VBA面向对象程序设计对象名称对象事件Command10 ClickPrivate Sub Command10_Click() Const pi = 3.14159 Dim r As Double, h As Double r = Val(Me.Text0.Value) h = Val(Me.Text2.Value) Me.Text4.Value = pi * r * r Me.Text6.Value = 2 * pi * r * h Me.Text8.Valu
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 审计服务群众工作制度
- 审计局支部会议制度
- 审计局单位议事决策制度
- 公园治安绩效考核制度
- 农贸市场绩效考核制度
- 咖啡厅财务规章制度
- 审计内控制度模板范本
- 农村集体审计制度
- 农业保险承保审计制度
- 发票第三方审计制度
- 更换引流袋技术操作
- 部编版三年级下册语文课课练全册(附答案)
- 军用靶场设计方案
- 管理会计学 第10版 课件 第3章 本-量-利分析
- Unit 3 Zhong Nanshan- Part B(小学英语教学)闽教版英语五年级下册
- 消防维保方案(消防维保服务)(技术标)
- 车辆交通危险点分析预控措施
- QC成果提高SBS防水卷材铺贴质量一次合格率
- 大舜号海难事故案例分析
- TGRM 057.1-2023 非煤岩岩爆倾向性评价规范 第1部分:室内指标测定及等级分类
- 2023年安徽新闻出版职业技术学院单招考试职业技能考试模拟试题及答案解析
评论
0/150
提交评论