为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

07面向对象程序设计基础

2011-12-17 50页 ppt 928KB 30阅读

用户头像

is_088046

暂无简介

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

历史搜索

    清空历史搜索