面向对象程序设计基础.ppt_第1页
面向对象程序设计基础.ppt_第2页
面向对象程序设计基础.ppt_第3页
面向对象程序设计基础.ppt_第4页
面向对象程序设计基础.ppt_第5页
已阅读5页,还剩52页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据库应用 经管类,第七章 面向对象程序设计基础 Object-Oriented Programming (OOP),2,信息管理学院数据库应用课程组,代码的可重用性,问题: 面向过程的程序设计主张将程序看作一系列函数的集合,或者直接就是一系列对电脑下达的指令。 结构化程序设计认为:一个系统是由模块和模块间的调用构成。其中模块是具备独立功能的程序片断。 如何提供重用性,提高代码的质量。 OOP编程方法强调代码的可重用性。OOP的观点:系统是由对象和对象间的交互构成。 什么是对象? 后面可以看到,在VFP编写GUI(Graphical User Interface,图形化用户界面)程序时,对象基本由VFP提供,我们只需编写交互。,3,信息管理学院数据库应用课程组,7.1 面向对象的基本概念,面向对象的系统观认为,一个系统是由若干对象和对象间的交互构造而成。它反映了基于面向对象的方法如何构造系统。 面向对象程序设计(Object-oriented programming,缩写:OOP),指一种程序设计范型,同时也是一种程序开发的方法论。它将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性、灵活性和扩展性。 参考中科永联高级技术培训中心Object Oriented Programming 到Wiki(维基百科)了解面向对象的程序设计,4,信息管理学院数据库应用课程组,7.1.1 OOP的核心概念,对象 属性 行为 接口 消息 类,5,信息管理学院数据库应用课程组,1. 对象(Object),简单地说,对象就是现实或抽象世界中具有明确含义或边界的事物。例如一个学生、一辆汽车、一条狗、一把尺子。 面向对象系统观认为对象由对象属性和对象行为构成,即对象是属性和行为的封装体。 面向对象程序设计中的每一个对象都应该能够接受数据、处理数据并将数据传达给其它对象,因此它们都可以被看作一个小型的“机器”,或者说是负有责任的角色。,消息,6,信息管理学院数据库应用课程组,2. 属性(Attribute)和属性值,属性是为刻画对象的一个方面,其所具有的数据称为属性值。 简单的来说,一个人就是一个对象,一个尺子也是个对象。当这些对象可以用数据直接表示时,我们就称他为属性,例如:尺子的度量单位可以是厘米,公尺或英尺,这个度量单位就是尺子的属性。 例如学生“江华”的籍贯为“江西赣州”。这里“江西赣州”为学生“江华”的籍贯属性取值。属性取值不同,可以使对象具有不同的状态。,7,信息管理学院数据库应用课程组,3. 行为(Method),行为是对象具有的一种处理能力。 如人可以吃饭、喝水、思考问题、参加劳动 如学生“江华”可以去“注册学籍”、“选修课程”,这些操作表示这个对象具有的行为。 如尺子可以度量长度 VF根据行为的触发方式不同,行为又分为事件和方法。 事件:对用户操作的响应。 健盘输入、鼠标点击、焦点变化 方法:对象具有的其它行为特征 刷新窗口、窗口隐藏、状态失效,8,信息管理学院数据库应用课程组,4. 接口(Interface),简单地说,接口就是特殊的属性和行为,它表示一个对象对外提供的服务。 对外服务包括:对象向其他对象公开的属性和行为。 对于一个VFP对象来说,就是那些对外公开的属性和行为。 由于接口中的属性和行为为其它对象所知道,故其它对象通过发送消息到该对象来实现对象间的交互。,9,信息管理学院数据库应用课程组,5. 消息(Message),消息传递机制:一个对象通过接受消息、处理消息、传出消息或使用其他类的方法来实现一定功能,这叫做消息传递机制(Message Passing)。 消息实现了对象间的交互。 一个对象通过接口向外界公布其提供的服务,其它对象通过发送消息来与这个对象进行交互,可能有结果返回到发送消息的对象,也可能没有结果返回发送消息的对象。 消息的描述除了和对象公布的属性和行为有关外,它还有特定的格式。 有关VF消息格式参请阅7.2节相关介绍。,10,信息管理学院数据库应用课程组,6. 类(Class),类(Class)定义了一类事物的抽象特点。通常来说,类定义了事物的属性和它可以做到的(它的行为)。 举例来说,“人”这个类会包含人的一切基础特征,例如姓名、体重、身高等属性特征和吃饭、睡觉等的行为能力。类对行为和属性描述被称为类的“成员”。 我们来看定义“人”类的伪代码:,类 人 开始 属性成员: 姓名 体重 身高 行为成员: 吃饭() 睡觉() 结束,11,信息管理学院数据库应用课程组,6. 类(Class) cont.,在面向对象系统和程序中,具有相同结构和功能的对象一般用类进行描述,并把对象称之为所属类的实例。简单地说,类描述的是具有相同属性和行为的一组对象(或对一组对象的相同属性和行为的描述)。 面向对象的处理问题方法提出将具有相同属性和行为对象抽象到类的方法。 类和对象的关系 类是对象的抽象,而一个具体对象是某个类的实例。可以将一个图章看成是一个类,而图章所盖出的图章印是一个对象。由于一个图章可以盖出多个图章印,即一个类可以被实例化为多个对象。 如“人”这个类定义了世界上所有的人,而张三、李四、这些则是“人”类的实例,12,信息管理学院数据库应用课程组,7.1.2 类或对象的特性,类和对象有许多特性重点是: 封装性、自治性、可标识性、状态性。 还有OO书籍中常见的继承性、多态性、抽象性。,13,信息管理学院数据库应用课程组,1. 对象的可标识性,每个对象都有自己的标识号(英语为Identifier,简写为ID)。 例如,如果图章具有自动改变序号功能,则每个实例化出来的图章印,虽具有相同的属性和操作,但它们具有不同的标识号序号不同。 例如,每个人都有姓名 例如,每个学生都有学号,14,信息管理学院数据库应用课程组,2. 对象的封装性,对象的封装性表现在对象将属性和行为封装在对象中。 对象封装的好处:是可以隐藏对象内部的实现细节,即所谓的信息隐蔽原则,也可以理解为黑箱。 信息隐蔽原则使得人们在使用一个对象时,只关心它提供的功能,不关心对象的功能是如何实现。 信息隐蔽原则可以避免由于某个对象的属性或行为的改变对其它对象的影响,通过独立的分治原则可以减低问题的复杂性。,15,信息管理学院数据库应用课程组,3. 对象的状态性,对象的状态性是通过给对象的属性赋值来表现的。例如,学生“江华”对象。这里类为“学生”,类“学生”的姓名属性值为“江华”。,16,信息管理学院数据库应用课程组,4. 对象的自治性,由于对象是属性和行为的封装。对象状态的改变是由该对象本身实施的。即其它对象通过发送消息,请求对象改变其状态,对象的状态是否改变取决于对象当前的状态,在某些状态下可能无法改变对象的状态。,17,信息管理学院数据库应用课程组,5. 类的继承性,面向对象的概念中,我们讨论了类与对象间的关系,类与类之间是否存在关系呢?在语义上,一个类与另一个类之间可能存在继承关系。 继承性的好处是可以减少代码冗余。实现一次编码,多处使用的特性,即在减少系统开发工作的同时,可以减少系统的维护工作量。这是面向对象编程方式带来的好处。,18,信息管理学院数据库应用课程组,例子,“汽车”类是一个抽象的类,它具有一般汽车具有的属性和行为,它被称为父类(基类) “小汽车”类代表“汽车”类下面的一个分类,这里被称为子类,子类继承了父类所有的属性和行为。即“小汽车”类具有“汽车”类所具有的所有属性和行为。也可以扩展自己的属性和行为,19,信息管理学院数据库应用课程组,例子,类“学生”继承自类“人”,继 承,江华,王丽,20,信息管理学院数据库应用课程组,6. 对象的多态性,将同样的消息发给同一个对象,根据对象当前所处状态的不同,对象可能给出不同的响应,这称为对象的多态性。 多态性的好处是实现:同样的调用接口可以实现不同的功能。 例如:老师的“上课”和学生“上课”,功能不同,21,信息管理学院数据库应用课程组,7.2 VF对面向对象方法的支持,根据面向对象的观点,构造一个系统的过程,是根据给出的实际问题,抽象出相关的名词术语,即先刻画该系统中的各个核心概念类。 在刻画完成各个类具有的属性和行为后,再将类实例化为类的对象,进一步描述这些对象间的交互,即这些对象间消息的关系,来描述和构造一个系统。,22,信息管理学院数据库应用课程组,VF对象示例,表单或窗口,23,信息管理学院数据库应用课程组,Visual FoxPro内置基类,基类:Visual FoxPro 内部定义的类,可用作其他用户自定义类的基础。例如,Visual FoxPro 表单和所有控件就是基类,您可以在此基础上创建新类,增添自己需要的功能。,子类:以其他类定义为起点,对某一对象所建立的新类。新类将继承任何对父类所做的修改。,24,信息管理学院数据库应用课程组,控件类,容器类,容器:包容其他相似类的 Visual FoxPro 基类。例如,一个表单类中可以包含一组控件类,将这些类作为一个整体进行操作。,控件:放在一个表单上用以显示数据、执行操作或使表单更易阅读的一种图形对象,如文本框、矩形或命令按钮等。Visual FoxPro 控件包括复选框、编辑框、标签、线条、图象、形状等等。,25,信息管理学院数据库应用课程组,VFP基类名称,26,信息管理学院数据库应用课程组,VFP基类名,27,信息管理学院数据库应用课程组,1. 可视对象与非可视对象,VFP应用程序包括可见的用户界面和不可见的数据加工处理。即可视的对象和非可视的对象。 可视对象(页框、选项按钮组、文本框、复选框、组合框和命令按钮等)构成用户与计算机交互的界面, 计算机通过这些界面元素向用户提出问题,用户通过选择或回答界面中的元素选项来回答计算机的提问。即通过这些标准元素实现用户与计算机的对话。 非可视的对象主要用来完成用户数据的处理,即非可视对象主要用来完成数据的统计累加等有关按某种流程的操作。,28,信息管理学院数据库应用课程组,2. 容器对象和控件对象,根据对象出现的位置不同,Visual FoxPro将对象分为容器类和控件类。 容器类对象可以包含其它容器类对象或控件对象,作为它们的父对象。 例如,Visual FoxPro中表单是容器类,这里表单就是我们通常的窗口或窗体,表单中允许摆放各种容器和控件,如命令按钮,页框(当然页框也是容器)。,29,信息管理学院数据库应用课程组,Visual FoxPro 中的对象分类,容器和控件的区别: 容器可以作为其他对象的父对象。例如,一个表单作为一个容器,是放在其中的复选框的父对象。 控件可以包含在容器中,但不能作为其他对象的父对象。例如复选框就不能包含其他任何的对象。,30,信息管理学院数据库应用课程组,Visual FoxPro容器类包含的对象,31,信息管理学院数据库应用课程组,3. 事件和方法(1),事件和方法都是Visual FoxPro对象的行为。事件和方法的区别是调用方式不同。 事件的调用方式是隐式的。事件的调用或触发是由用户的操作来实现的。 例如:命令按钮上存在鼠标的单击事件,当用户使用鼠标指向该命令按钮并单击鼠标左键时,将触发预先在单击事件中定义的行为。通常一个对象包括很多事件,例如图7.5所示的为命令按钮部分事件,图中含Event的均表示事件。 方法必须显式调用 如表单的release方法,32,信息管理学院数据库应用课程组,3. 事件和方法(2),编写事件代码时,需要注意两条规则: 每个对象的事件触发是独立的,容器对象(如窗体、选项组等)不能处理它所包含的对象的事件。 例如,在窗体上放置一个命令按钮。当点击命令按钮时,不会执行窗体的Click事件,而仅执行命令按钮的Click事件。 如果某个对象没有相应的事件处理代码,则系统会逐层向上检查其父类是否有与此事件相关的事件代码,若有则执行,而该层以上的与此事件相关的代码不会被执行。 如果该对象有事件代码,则系统只执行它的代码,而不会再向它的上层去寻找相应的事件代码,即不会再执行其父类的事件代码。 如果在该对象的事件代码中使用Dodefault()函数,则系统会向上寻找执行其父类的事件代码。,33,信息管理学院数据库应用课程组,Visual FoxPro中的常用事件,34,信息管理学院数据库应用课程组,Visual FoxPro中的常用事件,35,信息管理学院数据库应用课程组,4. 属性及其功能,Visual FoxPro对象有许多属性,属性值决定对象的状态或外观。 例如命令按钮有属性Enabled,其取值为.T. (True) 或.F. (False)。当命令按钮的Enabled属性为.T.时,命令按钮是有效的,当命令按钮的Enabled属性为.F.时,命令按钮是失效的(灰色状态)。,36,信息管理学院数据库应用课程组,常见属性,37,信息管理学院数据库应用课程组,常见属性,38,信息管理学院数据库应用课程组,常见属性,39,信息管理学院数据库应用课程组,常见属性,40,信息管理学院数据库应用课程组,常见属性,41,信息管理学院数据库应用课程组,常见属性,42,信息管理学院数据库应用课程组,5. VFP属性的赋值两种方法,一种是在程序设计时设置属性,即选中需设定属性的对象,再通过属性对话框直接修改属性值加以设置。如图7.7中所示的命令按钮Caption属性为“Command1”,你可以直接输入为“确定”。 另一种方法是程序运行时给对象属性赋值实现的。,43,信息管理学院数据库应用课程组,设计时刻设置属性,在属性对话框中直接输入即可。,44,信息管理学院数据库应用课程组,如何给对象的属性赋值,45,信息管理学院数据库应用课程组,对象的属性赋值,每个对象具有唯一的标识符ID。在VFP中,对象的标识符是通过对象属性Name标识的。要引用VFP中的对象就必须知道对象的Name,但由于VFP中对象分为容器对象和非容器对象。为引用某个特定对象的属性,我们就必须理解VFP对象引用的表示方法。 VFP规定从顶层容器对象开始加以引用,以点号分隔。 表单名.命令按钮名.属性名 = 属性值 ThisFmand1.Enabled = .F. “命令按钮在表单”失效。 表单名.页框名.页面名.命令按钮名.属性名 = 属性值 ThisForm.Pageframe1.Page1.Command1.Enabled = .F. 使得“命令按钮在页面1”失效。,46,信息管理学院数据库应用课程组,VFP对象属性赋值的通用格式,perty = Setting 这里objectvariable是对象变量名,通常它与表单文件(扩展名为SCX)的文件名同名。 form表示表单名。 control表示控件,如果控件是个容器,则可以包含其它控件。 property表示属性名。 Setting表示要赋值的属性值,它可以是一个表达式。 总之,若想给一个对象的某一属性赋值,需要确定该对象和包含它的容器层次间的关系,再使用由点号 (.) 分隔的容器、控件和属性来处理该对象的属性赋值。,47,信息管理学院数据库应用课程组,Visual FoxPro对象引用关键字,48,信息管理学院数据库应用课程组,6. 对象的方法引用,objectvariable.form.control.method 这里objectvariable是对象变量名,通常它与表单文件(扩展名为SCX)的文件名同名。 form表示表单名。 control表示控件,如果控件是个容器,则可以包含其它控件。 method表示方法名。,49,信息管理学院数据库应用课程组,7.3 OOP编程语言核心问题,VFP提供的类库 有哪些基类、一般属性、一般事件 类什么时候实例化对象。(在进行表单或窗口设计时,将类实例为对象,之后编写对象间的交互) VF对象的分类: 可视对象与非可视对象 容器对象与非容器对象 对象属性的引用方法 对象方法的引用方法,50,信息管理学院数据库应用课程组,控件焦点与Tab序,焦点是接收用户鼠标或键盘输入的能力。当控件具有焦点时,才能接收用户的输入。 比如,在有几个文本框的表单窗口中,只有得到焦点的那个文本框才接收由键盘输入的文本。 当对象得到焦点时,它将产生GotFocus事件;当对象失去焦点时,它将产生LostFocus事件。,51,信息管理学院数据库应用课程组,控件焦点与Tab序,在表单设计器中将控件放到表单上后,Visual FoxPro自动给每个控件(但绘图控件如直线、椭圆等除外)都赋予一个TabIndex值。该值决定了缺省情况下程序运行后用户按Tab键时输入焦点的跳转次序。,52,信息管理学院数据库应用课程组,VFP中关于类的操作,问题:关于类有什么操作。 1. 类的实例化 VFP中标准的内置类实例化对象的过程=为程序设计GUI界面 当你打开一个表单设计器时,表单类就被实例化为一个表单对象。 当从表单控件窗口将一个控件摆放到表单上时,就是将一个控件类实例化为一个控件对象。,53,信息管理学院数据库应用课程组,VFP中关于类的操作,2. 创建自己的类(自修) 3. 继承VFP中定义的类,以增加新方法或属性。 例子参见教科书7.3.2部分。(自修),54,信息管理学院数据库应用课程组,第7

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论