面向对象可视化编程基础.ppt
第 10 章 面向对象可视化编程基础,面向对象程序设计的主要特点是其抽象方法接近于人的自然思维方式,很容易被应用人员所接受,它的最大优点是开发效率高、代码重用率高。,10.1 面向对象程序设计的基本概念 10.1.1 对象和类 10.1.2 继承、封装和多态 10.1.3 属性、事件和方法10.2 Visual FoxPro中类的操作 10.2.1 Visual FoxPro的基类 10.2.2 创建类 10.2.3 类的设置 10.2.4 类的修改10.3 Visual FoxPro中对象的操作 10.3.1 由类创建对象 10.3.2 创建对象的引用 10.3.3 为对象设置属性 10.3.4 调用方法程序 10.3.5 触发事件,教学内容,1对象(Object)对象是面向对象编程的基本元素。对象是反映客观事物属性及行为特征的描述。由于客观世界中的实体通常都既具有静态的属性,又具有动态的行为,所以在面向对象程序设计中的对象被定义为由属性和相关方法组成的包。属性用来表示对象的状态,方法用来描述对象的行为。,10.1 面向对象程序设计的基本概念,10.1.1 对象和类,2类(Class)类是一组对象的属性和行为特征的抽象描述。在Visual FoxPro系统中,类就象是一个模板,对象都是由类生成的,类定义了对象所有的属性、事件和方法,从而决定了对象的属性和它的行为。类是静态概念,对象是动态概念。通常,我们把基于某个类生成的对象称为这个类的实例。Visual FoxPro中有以下三种类:基类、子类、用户自定义类,1继承性(Inheritance)类的继承性指通过继承关系利用已有的类构造新类。在创造对象时,可以利用父类派生出一个子类。子类不但具有父类的全部属性和方法,而且还允许用户根据需要修改对已有的属性和方法进行修改,或者添加新的属性和方法。,10.1.2 继承、封装和多态,2封装性(Encapsulation)类的封装性指类的内部信息对用户是隐蔽的。封装的目的是信息隐藏,把对象的内部代码隐藏起来。用户只需知道该对象具有什么功能以及如何使用该对象,而不必了解这些功能是如何实现的。3多态性(Polymorphism)类的多态性指相同的语言结构可以代表不同的实体,或者是指对不同的实体进行操作。多态性使得高层的代码只写一次,而通过提供不同的底层服务来满足代码复用的要求。,1属性(Property)属性用来表示对象的状态。对象的每一种属性,都是与其他对象加以区别的特性,都具有一定的含义,并赋予一定的值。对象的属性值既能在设计时刻也能在运行时刻进行设置。,10.1.3 属性、事件和方法,2事件(Event)事件是一种预先定义好的特定动作。事件集合是固定的,用户不能创建新的事件。3方法(Method)方法也称方法程序,是对象能够执行的操作,也即类中所定义的服务。方法集合可以由用户无限扩展。“方法”与“事件”既有相似之处,也有不同。,基类可以分成容器类和控件类。相应地,可分别生成容器(对象)和控件(对象)。1容器类 从容器类派生的对象可以包容其他对象,并且允许访问这些对象。Visual FoxPro中的容器类:表单集、表单、表格、(表格)列、页框、页、命令按钮组、选项按钮组、工具栏、容器、控件。2控件类 从控件类派生的对象不能容纳其他对象,它没有容器类灵活。,10.2 Visual FoxPro中类的操作,10.2.1 Visual FoxPro的基类,1用类设计器创建类 2用命令创建类 CREATE CLASS 新类名 OF 新类所在库名 AS 父类名 FROM 父类所在类库名,10.2.2 创建类,图10.2“新建类”对话框,1设置类对象的属性值 2设计类对象的方法程序,10.2.3 类的设置,10.2.4 类的修改,注意:对类的修改将影响所有的子类和基于这个类的所有对象。,10.3 Visual FoxPro中对象的操作,10.3.1 由类创建对象,由类创建对象可使用函数:CreateObject(),其命令格式为:对象名=CreateObject(类名),对象的嵌套层次关系:如图10.6。如果要引用某个对象,需要指明对象在嵌套层次中的位置。表10.3 容器层次中的对象引用属性或关键字,10.3.2 创建对象的引用,对象的引用有两种方式:绝对引用和相对引用。1绝对引用 从最高容器开始逐层向下直到某个对象为止的引用称为绝对引用。2相对引用 从正在为编写事件代码的对象出发,通过逐层向高一层或低一层直到另一对象的引用称为相对引用。,10.3.3 为对象设置属性,属性可以在设计时设置也可在运行时设置,但也有一些属性是只读的。在“属性”窗口中进行设置。使用命令设置对象属性:对象的父类名.当前对象名.属性名=属性值设置对象的多个属性:WITH 路径 属性 ENDWITH,调用方法程序的语法为:父类名.对象名.方法名(参数表)注意:在表达式中,有返回值的方法程序必须以圆括号结尾。传递给方法程序的参数必须放在方法程序名后面的圆括号中。,10.3.4 调用方法程序,只有当事件发生时,对应的事件代码才被执行。由系统触发事件、由用户触发事件 触发事件的命令格式为:父类名.对象名.事件名(参数表)基类的事件集合是固定的,不能进行扩充。每个类都可识别固定的默认事件集合,它的最小事件集包括Init、Destroy和Error事件(show)。,10.3.5 触发事件,在容器对象的嵌套层次中,事件的处理遵循独立性原则,即每个对象识别并处理属于自己的事件。例外:对于选项按钮组与命令按钮组来说,若组中个别按钮没有编写事件处理代码,则当事件发生时将执行组事件的处理代码。,