第6章 面向对象程序设计

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

6.1面向对象程序设计的基本概念6.1.1面向对象程序设计VisualFoxPro不但支持传统的面向过程的程序设计,而且也提供了面向对象的可视化程序设计的功能。面向过程的程序设计采取结构化的程序设计方法,程序是由传递参数的程序和函数的集合组成,每个过程处理它的参数,并可能返回某个值,这种程序是以过程为中心的。程序员是基于过程来组织模块的,这必然会导致程序的结构与实际应用领域中的结构相差很大。面向对象的程序设计方法是一种系统化的程序设计方法。它允许抽象化、模块化的分层结构,具有动态性、继承性和封装性。例:分别用面向过程和面向对象的程序设计方法设计一个程序:用户向计算机输入两个数a,b后,要求计算机能输出a+b的和c。ClearStore0toa,b,c@2,0say”请输入a的值:”geta@4,0say”请输入b的值:”getbReadc=a+b?”c=a+b=”,c(1)新建表单(2)在表单中添加3个用户输入a,b和显示c的值的文本框text1,text2,text3,2个标签label1,label2.(3)将label1和label2的Caption属性分别设置为“+”和“=”,3个文本框的value属性都设置为0。(4)在text2的lostfocus事件中添加代码:thisform.text3.value=thisform.text1.value+thisform.text2.value(5)保存并运行表单面向对象设计方法的优点:程序执行界面与Windows应用程序完全相同,属于图形化界面,操作简单,界面友好;程序员编写的代码少,基本控件VFP已经提供,开发效率高;程序属于事件驱动,对控件的相应事件添加方法程序即可。以数据为中心而不是以服务(功能)为中心,具有较强的稳定性面向对象与面向过程的最大区别是:前者关心的是所要处理的数据,而后者首先关心的是功能第6章面向对象程序设计6.1.2面向对象的基本概念1.对象(Object)对象可以是现实世界中的任何物体,例如一扇窗户可以作为对象,一辆汽车可以作为对象,一台计算机可以作为对象。构成程序的基本单位和运行实体。例如:表单,文本框,按纽,标签等。VFP中的对象是系统将某些属性(数据)和对该属性(数据)的操作代码封装起来的模块,是有特殊属性(数据)和行为方式(方法)的逻辑实体。对象=数据+作用于数据上的操作对象都具有一定的属性、特征,并可以产生一定的行为。对象的核心概念就是通常所说的封装性、继承性和多态性。2.类类是对一组相似对象的性质描述,这些对象具有相同种类的属性和方法。类决定了对象的特征,所有对象的属性、事件和方法程序在定义类时被指定。有了类的定义后,就可以基于类生成这类对象的任何一个对象。第6章面向对象程序设计3.属性属性即对象的特性,是对象的外观及行为的特征。在VisualFoxPro中,各种对象具有70多个属性。对象的属性可以在建立对象时由其所属的类(或子类)中继承,也可以在对象创建或运行时进行修改与设置。4.事件事件是可能发生在对象上的事情,即用户或者系统触发对象所作的一个特定操作。对象可以识别和响应的行为与操作,用户可以编写相应的代码对此进行响应。在VisualFoxPro中,事件集不能象方法集那样,可以无限扩展,事件集是相对固定的,用户不能再创建新的事件。第6章面向对象程序设计6.方法方法是对象可以执行的动作,是封装在对象内部的,在任何时候都不能独立存在于对象之外。在VisualFoxPro中提供了50多种不同的方法,每种方法都有自己的名称,称为方法名。VisualFoxPro中不同的对象具有不同的方法,与事件不同的是,方法程序集合可以无限扩展,除了在各个类中已定义的方法外,可以根据需要自定义方法(向类中添加新方法),以完成相应的操作,新建的方法属于表单或表单集。第6章面向对象程序设计6.1.3事件驱动机制事件驱动:指程序运行时始终处于等待某个事件的发生状态,一旦某个事件被触发时,系统马上就去执行与该事件对应的方法程序或过程,待事件过程执行完毕后,系统又处于等待某个事件的发生状态。第6章面向对象程序设计VisualFoxPro事件发生顺序的规则:运行表单时总是先触发表单的load事件,然后触发表单的Init事件。表单中所有控件的Init事件在表单的Init事件之前触发。表单的Destroy事件先于它所包含的控件对象的Init事件触发。释放表单时,Unload事件是最后一个触发的事件。当拖动一个控件时,系统将忽略其他鼠标事件。在拖放操作中MouseUp和MouseMove事件不会发生。Valid和When事件有返回值,默认为.T.。若从When事件返回.F.或0,控件将不能被激活;若从Valid事件返回.F.或0,则不能将焦点从控件上移走。第7章表单6.2类6.2.1类的特点1.封装性类的封装性是指将类的特性及其方法程序加以隐蔽,全部封装在类的内部,不让其复杂性暴露在外面。封装性保证了模块具有较好的独立性,使得程序的维护和修改比较容易。对应用程序的修改仅限于类的内部,因而可以将修改程序带来的影响减少到最低程度。2.继承性继承是指在基于现有的类创建新类时,新类继承了现有的类的属性和方法,此外,新类中还可以有自己所特有的新的属性和方法。3.多态性多态性是指允许不同类的对象对同一消息作出响应。第6章面向对象程序设计6.2.2基类和子类每个基类都有自己的属性、事件和方法。由于基类只考虑通用特征和功能,难以满足用户的各种要求,用户常常要从基类中派生出一个类。从基类派生出来的类称作子类,也称作自定义类。基类称作父类。一个子类还可以作为父类进一步派生出新的子类。基类存放在安装时的默认路径下(C:\programfiles\Microsoftvisualstudio\VisualFoxPro98\ffc\_base.vcx)。第6章面向对象程序设计6.2.3VisualFoxPro中的类对象是在类的基础上建立起来的,所以对象的种类是由类决定的。VisualFoxPro中的类分为两大类型:容器类和控件类。1.容器类容器类派生的对象可以包含其他对象,并且允许访问这些对象。2.控件类控件类派生的对象是一个相对独立的整体,不能包含其他对象。控件类是可以包含在容器类中并由用户派生的VisualFoxPro基类。第6章面向对象程序设计6.3对象6.3.1对象的常用属性从功能上看,属性可以分为布局和修饰属性、数据属性、状态属性和其他属性。1.布局属性(1)Alignment属性指定与控件有关的文本对齐方式,设置值为数值(0、1、2,…)。对于不同的控件,其设置值和含义不完全相同,通常0-左对齐,1-右对齐,2-中间对齐,3-自动方式。(2)AlwaysOnTop属性指定表单是否永远处于所有窗口的最上层而不被其他窗口覆盖。设置值为逻辑值(.T.或.F.),缺省值为.F.。第6章面向对象程序设计(3)AutoCenter属性指定表单是否处于VisualFoxPro主窗口或桌面的最中间。设置值为逻辑值(.T.或.F.),缺省值为.F.。(4)AutoSize属性指定控件是否根据其内容的长短自动调整大小。设置值为逻辑值(.T.或.F.),缺省值为.F.。(5)Desktop属性指定表单是处于VisualFoxPro主窗口中还是处于桌面中。设置值为逻辑值(.T.或.F.),缺省值为.F.(处于VisualFoxPro主窗口中)。第6章面向对象程序设计(6)Height和Width属性Height属性用于指定屏幕上某个对象的高度;Width属性用于指定屏幕上某个对象的宽度。设置值为数值,缺省单位为像素。(7)Left和Top属性Left属性用于指定控件最左边相对于其父对象的位置;Top属性用于指定控件顶边相对于其父对象顶边的位置。设置值为数值,缺省单位为像素。第6章面向对象程序设计2.修饰属性(1)BackColor、ForeColor属性BackColor属性用于指定对象内文本和图形的背景色;ForeColor属性用于指定对象内文本和图形的前景色。例如,要设置表单Form1中文本框Text1的前景色为红色、背景色为黑色,则代码为:ThisForm.Text1.foreColor=RGB(255,0,0)ThisForm.Text1.BackColor=RGB(0,0,0)(2)BackStyle属性指定对象的背景色是否透明。设置值为数值(0或1),缺省值为1(不透明)。如果本属性设置为0(透明),则BackColor属性的设置被忽略。(3)BorderStyle属性指定对象的边界风格,设置值为数值(0、1、2、)。对于不同的控件,其设置值和含义都是不同的。第6章面向对象程序设计(4)Caption属性该属性用于指定对象的标题。如要把表单Form1的标题设置为“学生”,则代码为:ThisForm.Caption=“学生”(5)Curvature属性用于指定Shape控件的拐角曲率,设置值为数值。0为没有曲率,建立的是直线拐角;1-98为圆角拐角,值越大,曲率越大,99为最大曲率,创建圆或椭圆。(6)FontName和FontSize属性FontName属性用于指定显示文本时的字体名称;FontSize属性用于指定显示文本时的字体大小。(7)Picture属性指定显示在控件中的位图文件(.BMP)或图标文件(.ICO)。第6章面向对象程序设计3.数据属性(1)ButtonCount和Buttons属性ButtonCount属性用于指定命令按钮组或选项按钮组中包含的按钮数;Buttons属性用于指定命令按钮组或选项按钮组中第几个按钮的数组,数组的下标介于1~ButtonCount之间。例如,现有一个命令按钮组CommandGroup1,它包含四个命令按钮,如果要设置第二个命令按钮的标题为“确定”,则代码为:Thisform.CommandGroup1.Buttons(2).Caption=“确定”(2)Columncount和Columns属性Columncount属性用于指定表格、组合框和列表框中包含列的数目;Columns属性用于指定表格、组合框和列表框中第几列的数组,数组的下标介于1~Columncount之间。第6章面向对象程序设计(3)ControlCount和Controls属性ControlCount属性用于指定容器对象中包含的控件数目;Controls属性用于指定容器对象中第几个控件的数组,数组的下标介于1~ControlCount之间。例如,现有一个容器对象Container1,它包含四个文本框对象,如果要设置第二个文本框的值为“ABC”,则代码为:Thisform.Container1.Controls(2).value=“ABC”(4)FormCount和Forms属性FormCount属性用于指定表单集中包含的表单数目;Forms属性用于指定表单集中第几个表单的数组,数组的下标介于1~FormCount之间,利用该属性可以方便地对表单集中的每个表单进行操作。第6章面向对象程序设计(5)PageCount和Pages属性PageCount属性用于指定页框中包含的页数;Pages属性用于指定页框中第几个页面的数组,数组的下标介于1~PageCount之间。例如,现有一个页框PageFrame1,它包含三个页面,如果要设置第二个页面的标题为“学生”,则代码为:Thisform.PageFrame1.Pages(2).Caption=“学生”(6)ControlSource属性该属性用于指定数据绑定对象的数据源,数据源可以是字段或变量。例如,文本框Text1要显示课程名,则它的ControlSource属性将跟课程表的课程名数据绑定。第6章面向对象程序设计(7)R

1 / 74
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功