第七章 面向对象的程序设计.docx
第七章 面向对象的程序设计 第七章面向对象的程序设计 本章是面向对象的程序设计。与第五章介绍的面向过程的结构化程序设计不同,主要介 绍面向对象程序设计的基础知识,包括面向对象的基本概念以及Visual FoxPro支持的面向对 象的编程技术,详尽介绍了对各类控件的选择与使用方法。在对诸如表单等各类控件对象的设 计、操作上,面向对象的编程技术有自己的独特之处,但在所有对象的各种事件和方法的程序 代码设计中,仍然使用到结构化的程序设计方法。本章的主要内容是面向对象程序设计的理论 基础,其程序设计的基本目标是设计出能在可视化环境下运行的应用程序窗口界面表单。 7.1 学习提要 1学习目标与要求 通过本章学习,读者应达到以下要求: 了解对象、类等基本概念; 理解对象的属性、方法和事件; 熟练掌握表单的基本设计、操作和应用; 掌握常用控件的设计与使用。 熟练掌握常用事件、方法的过程代码的设计方法。 了解自定义类的创建和使用方法。 2重点与难点: 本章重点:对象与类以及属性、方法和事件等基本概念;表单的设计与应用;常用控 件属性、事件和方法的选择与运用。 本章难点:本章的重点即为本章的难点 3主要知识点 面向对象的概念 对象、类 属性、方法、事件 Visual FoxPro 中的基类 表单的创建与基本操作 表单的创建 使用“窗体设计器”或“表单向导”创建表单。 表单的修改、运行 使用“窗体设计器”编辑修改表单。使用菜单或命令方式运行表单。 表单的属性、事件和方法 表单常用属性的设置,表单的常用事件、常用方法。 设置表单的数据环境 数据环境的概念,数据环境的设置。 表单常用控件 表单常用控件的基本操作 控件对象的选定,移动位置,改变大小,剪切、复制与粘贴,删除,布局设置。 常用控件对象 标签控件,命令按钮与命令按钮组控件,文本框与编辑框控件,选项组和复选框控件,列表框和组合框控件,容器与表格控件,页框控件,计时器与微调控件,图像控件等。 控件对象的常用属性设置 Caption属性,Name属性,Alignment属性,ButtonCount属性,BackColor属性,BorderColor属性,BorderStyle属性,Enabled属性,ForeColor属性,InputMask属性,PasswordChar属性,Picture属性,Height属性,Width属性,Left属性,Top属性,Value属性,Visible属性,FontName属性,FontSize属性,ControlSource属性。 控件对象的常用事件的使用 Load事件,Init事件,Destroy事件,Unload事件,Error事件,Click事件, DblClick事件,RightClick事件。 控件对象的常用方法的使用 SetFocus方法,Release方法,Refresh方法,Show方法,Hide方法。 类的建立 使用“类设计器”创建类。 7.2 习题 一、单项选择题 1以下关于Visual FoxPro类的说法,不正确的是() A)类具有继承性 B)用户必须给基类定义属性,否则出错 C)子类一定具有父类的全部属性 D)用户可以按照已有的类派生出多个子类 2下列基类中是容器类的是() A)表单B)命令按钮C)列表框D)单选按钮 3下列关于“类”的叙述中,错误的是() A)类是对象的集合,而对象是类的实例 B)一个类包含了相似对象的特征和行为方法 C)类并不实行任何行为操作,它仅仅表明该怎样做 D)类可以按其定义的属性、事件和方法进行实际的行为操作 4下列说法中错误的是() A)事件既可以由系统引发,也可以由用户激发 B)事件集合不能由用户创建,是唯一的 C)事件代码能在事件引发时执行,但不能像方法一样被显式调用 D)每个对象只能识别并处理属于自己的事件 5下面关于属性、方法和事件的叙述错误的是() A)属性用于描述对象的状态,方法用来表示对象的行为 B)基于同一类产生的两个对象可以分别设置自己的属性值 C)在新建一个表单时,可以添加新的属性、方法和事件 D)事件代码也可以像方法一样被显式调用 6下列关于基类的说法不正确的是() A)Visual FoxPro提供的类都是基类 B)Visual FoxPro基类被存放在指定的类库中 C)Visual FoxPro基类是系统本身提供的 D)可以基于类生成所需要的对象,也可以扩展基类创建自己的类 7下列叙述中错误的是() A)Visual FoxPro中基类的事件可以由用户创建 B)Visual FoxPro中基类的事件是由系统预先定义好的,不可由用户创建 C)事件是一种事先定义好的特定的动作,由用户或系统激活 D)鼠标的单击、双击、移动和键盘上的按键均可激活某个事件 8下列关于编写事件代码的叙述中,错误的是() A)可以由定义了该事件过程的类的子类继承 B)为对象的某个事件编写代码,就是将代码写入该对象的这个事件过程中 C)为对象的某个事件编写代码,就是编写一个与事件同名的.PRG程序文件 D)为对象的某个事件编写代码,可以在该对象的属性对话框中选择该对象的事件,然后在出现的事件代码窗口中输入相应的事件代码 9下列关于属性、方法、事件的叙述中,错误的是()。 A)事件代码也可以像方法一样被显式调用 B)属性用于描述对象的状态,方法用于描述对象的行为 C)在一个对象中可以修改另一个对象的属性、方法和事件 D)基于同一个类产生的两个对象可以分别设置自己的属性值 10以下可以构成语句一项是() A)对象名.属性名B)对象名.方法名 C)对象名.过程名D)对象名.函数名 11能被对象所识别的动作与对象可执行的活动分别称为对象的是() A)方法、事件B)事件、方法 C)事件、属性D)过程、方法 12对象拥有()的全部属性。 A)表B)数据库C)类D)图形 13命令按钮组是() A)控件类对象B)容器类对象C)命令按钮D)表单对象 14如果要为控件设置焦点,则控件的Enabled属性和()属性必须为.T. A)Buttons B)Cancel C)Default D)Visible 15Show方法用来将() A)表单的Enabled属性设置为.F. B)表单的Visible属性设置为.F. C)表单的Enabled属性设置为.T. D)表单的Visible属性设置为.T. 16在Visual FoxPro中,如果一个控件的()属性值为.F. 将不能获得焦点。 A)Enabled 和ContorlSource B)Enabled和Click C)ContorlSource和Click D)Enabled或Visible 17下列属于容器类的控件有() A)组合框,命令按钮B)表单,表格 C)标签,页D)列表框,工具栏 18在表单MyForm的一个控件的事件或方法代码中,改变该表单的背景色为绿色的正确命令是() A)MyForm.Parent.BackColor=Rgb(0, 255, 0) B)Thisform.BackColor=Rgb(0, 255, 0) C)Thisform.Parent.BackColor=Rgb(0, 255, 0) D)This.BackColor=Rgb(0, 255, 0) 19表单的Name属性用于() A)作为保存表单时的文件名B)引用表单对象 C)显示在表单标题栏中D)作为运行表单时的表单名 20在文本框中要显示当前数据表中的“姓名”字段,应设置() A)Thisform.Text1.Value=姓名 B)Thisform.Text1.ControlSource=姓名 C)Thisform.Text1.Value=“姓名” D)Thisform.Text1.ControlSource=“姓名” 21在表单常用事件中,按照触发时机的不同先后排列,顺序应是() A)Init、Load、Destroy、Unload B)Init、Load、Unload 、Destroy C)Load、Init、Destroy、Unload D)Load、Init、Unload、Destroy 22下面对控件的描述不正确的是() A)可以同时选中一个表单上的多个控件 B)可以在列表框中进行多重选择 C)可以在一个选项组中选中多个选项按钮 D)可以在一个表单内的一组复选框中选其中多个 23表单向导可以创建() A)单表表单B)表C)类D)报表 24可用表单的()属性来设置表单的标题。 A)Style B)Text C)Caption D)Name 25以下哪个是控件类() A)Formset B)CommandGroup C)Form D)Timer 26选择列表框或组合框中的选项,双击鼠标左键,此时触发()事件。 A)Click B)DblClick C)Init D)KeyPress 27“窗体控件”工具栏用于在表单中添加()。 A)文本B)命令C)控件D)复选框 28使用()工具栏可以在表单上对齐和调整控件的位置。 A)调色板 B)布局C)表单控件 D)窗体设计器 29将“复选框”控件的 Value属性设置为()时,复选框显示为灰色。 A)0 B)1 C)2 D)3 30在窗体控件工具栏可以创建一个()控件来保存多段文本。 A)命令按钮 B)文本框C)列表框 D)编辑框 31以下关于文本框和编辑框的叙述中,错误的是() A)在文本框和编辑框中都可以输入和编辑各种类型的数据 B)在文本框中可以输入和编辑字符型、数值型、日期型和逻辑型数据 C)在编辑框中只能输入和编辑字符型数据 D)在编辑框中可以进行文本的选定、剪切、复制和粘贴等操作 32设计表单时,可以利用()向表单中添加控件。 A)窗体设计器工具栏B)布局工具栏 C)调色板工具栏D)窗体控件工具栏 33在 Visual FoxPro中,表单( Form)是指() A)数据库中各个表的清单B)一个表中各个记录的清单 C)数据库查询的列表D)窗口界面 34若果需要重新绘制表单或控件,并刷新它的所有值,引发的是()事件或方法。A)Click事件B)Release方法 C)Refresh方法D)Show方法 35确定列表框内的某个条目是否被选定应使用的属性是() A)Value B)ColumnCount C)ListCount D)Selected 36设计组合框时,通过设置()属性,可以用不同类型的数据源中的项填充组合框。A)RowSource B)RowSourceType C)Stype D)ColumnCount 37命令按钮组中有三个按钮 Command1,Command2、Command3,在执行如下代码后: mandGroup1.Value2 则() A)Command1被选中B)Command2被选中 C)Command3被选中D)Command1,Command2被选中 38要想使在文本框中输入数据时屏幕上显示的是“*”号,则该设置的属性是() A)Alignment B)Enabled C)Maxlength D)PasswordChar 39下面关于列表框和组合框的陈述中,正确的是() A)列表框和组合框都可以设置成多重选择 B)列表框可以设置成多重选择,而组合框不能 C)组合框可以设置成多重选择,而列表框不能 D)列表框和组合框都不能设置成多重选择 40在表单中加入一个复选框和一个文本框,编写Check1的Click事件代码如下:Thisform.Text1.VisiableThis.Value,则当单击复选框后,() A)文本框可见 B)文本框不可见 C)文本框是否可见由复选框的当前值决定 D)文本框是否可见与复选框的当前值无关 41假定一个表单里有文本框Text1和命令按钮组CommandGroup1,命令按钮组包含Command1和Command2两个命令按钮,如果要在Command1命令按钮的某个方法中访问文 本框的Value属性值,下面正确的是() A)This.ThisForm.Text1.Value B)This.Parent.Parent.Text1.Value C)Parent.Parent.Text1.Value D)This.Parent.Text1.Value 42向页框中添加对象,应该() A)用鼠标单击“控件”,直接在表单中单击 B)用鼠标单击“控件”,再单击鼠标右键 C)用鼠标单击“控件” D)用鼠标右击页框,在弹出的快捷菜单中选择“编辑”,再向页框中添加对象 43在Visual FoxPro中,运行表单T1.SCX的命令是() A)DoT1 B)Run Form T1 C)DoFormT1 D)Do T1.scx 44下列关于数据环境的说法中错误的是() A)如果添加到数据环境中的表之间具有在数据库中设置的永久关系,这种关系也会 自动添加到数据环境中 B)如果表之间没有永久关系,也不可以在数据环境设计器中为这些表设置关系 C)编辑关系主要通过设置关系的属性来完成,要设置关系属性,可以先单击表示关 系的连线选定关系,然后在属性窗口中选择关系属性来设置 D)通常情况下,数据环境中的标或视图会随着表单的打开或运行而打开,并随着表 单的关闭或释放而关闭 45在窗体设计器环境下,打开“数据环境设计器”窗口的方法有很多,以下错误的是()A)单击“窗体设计器”工具栏上的“数据环境”按钮 B)选择“显示”菜单中的“数据环境”命令 C)在“窗体设计器”的工作窗口中单击鼠标右键,在弹出的快捷菜单中选择“数据 环境”命令 D)选择“文件”菜单中的“打开”命令,在弹出的对话框中选择“数据环境”单选 项 46不可以作为文本框控件数据来源的是() A)备注型字段B)内存变量C)字符型字段 D)数值型字段 47在表单中加入两个命令按钮 Command1和 Command2,编写 Command1的 Click事件 的代码如下: mand2.Enabled.F.则当单击 Command1后,() A)Command1命令按钮不能激活 B)Command2命令按钮不能激活 C)Command1命令按钮不可见D)Command2命令按钮不可见 48在窗体设计器环境中,要选定某选项组中的某个选项按钮,正确的操作是() A)双击要选择的选项按钮 B)单击属性窗口对象下拉列表中的该选项按钮的对象名 C)右击选项组并选择“编辑”命令,再单击要选择的选项按钮 D)以上(B)(C)都可以 49表单中可包含各种控件,其中组合框的默认 Name属性是() A)Command1 B)Label1 C)Check1 D)Combo1 50要使某表单中的文本框 Text1显示 jsqk.dbf中姓名字段的值,应将该文本框的() 属性设置为“jsqk.xm”。 A)ControlSource B)Source C)RecordSource D)RowSource 51关于编辑框,下列叙述不正确的是() A)可以输入或编辑字符型数据B)可以输入多段文本 C)可以与备注型字段绑定D)可以与通用型字段绑定 52当单击表单的“首记录”按钮时,表单显示第一条记录内容,同时该按钮变为灰色不能使用的按钮,应在其 Click事件代码中将()属性的值赋值为.F.。 A)Visible B)Enabled C)Value D)Caption 53给表单中的文本框 Text1设置焦点的正确方法是() A)Thisform.Text1.Refresh B)Thisform.Text1.Release C)Thisform.Text1.Setfocus D)Thisform.Text1.Show 54下列关于创建类的叙述中,错误的是() A)可以选择菜单命令,进入“类设计器” B)类库文件的扩展名为.vcx C)类库文件的扩展名为.prg D)可以在命令窗口输入 Create Class命令,进入“类设计器” 55在当前目录下有 m.prg和 m.scx两个文件,在执行命令 Do m后,实际运行的文件是 () A)m.prg B) m.scx C)随机运行D)都运行 二、填空题 1类是一组具有相同属性和相同操作的对象的集合,类中的每个对象都是这个类的一个。 2Visual FoxPro的基类有两种,即:和。 3Visual FoxPro提供了一批,用户可以在它们的基础上定义自己的类和子类。 4类是对象的集合,它包含了相似的有关对象的特征和行为方法,而则是类的 实例。 5在Visual FoxPro中,在创建对象时发生的事件是;从内存中释放对象时发生 的事件是;用户使用鼠标双击对象时发生的事件是。 6在Visual FoxPro中释放和关闭表单的方法是 7一组具有相同数据和相似操作的对象的集合称为。 8Visual FoxPro系统中用描述对象的状态,用描述对象的行为。 9是预先定义好的特定动作,由用户或系统激活,在某个特定的时刻发生。 10在程序中为了显示已创建的Myform表单对象,应使用。 11在属性窗口中,有些属性的默认值在列表框中以斜体显示,其含义是。 12如果要把一个文本框对象的初值设置为当前日期,则在该文本框的Init事件中设置代码为。 13在Visual FoxPro中提供两种表单向导:创建基于一个表的表单时可选择, 创建基于两个具有一对多关系的表单时可选择。 14表格是一种容器对象,一个表格对象有若干对象组成。 15若想让计时器开始工作,应将属性设置为真。 16文本框控件的Value属性的默认值是。 17表单的信息保存于表单文件和文件中,前者的扩展名为,后者的扩 展名为。 18要为控件设置焦点,其属性和必须为.T.。 19数据环境是一个,它定义了表单或表单集使用的,以及表单所要求 的表之间的,它可以包括、和。 20在表单中添加控件后,可以通过相应的为其设置常用属性,也可以通过属性 窗口为其设置各种属性。 21在一个表单对象中添加两个按钮Command1和Command2,单击每个按钮会作出不同的操作,必须为这两个按钮编写的事件过程名称分别是和。 22编辑框控件与文本框控件最大的区别是:在编辑框中可以输入或编辑文本, 而在文本框中只能输入或编辑文本。 23要使标签显示指定的文字,应对其属性进行设置;要使指定的文字自动适应 标签区域的大小,则应将其属性设置为逻辑真值。 24将控件与备注型字段绑定的方法是:在控件的ControlSource属性中指定。 25This是对的引用,Thisform是对的引用,Parent是对的引用。 26如果要同时选定多个控件,应先按住健,再单击各个要选定的控件。 27定义列表框或者组合框的列表项的来源,应设置和属性。 (a) 习题图7.1 (b) 28如习题图7.1所示,用标签、文本框、命令按扭构成一个表单Form1。表单运行之初,标签显示“当前系统日期:”,文本框中显示当前系统日期。在文本框中单击左键将显示当前系 统日期,单击右键将显示当前系统时间,标签显示内容也随之而变;单击“清除”按钮,文本 框中的结果将被清除;单击“退出”按钮,将退出表单的运行。 表单的Init事件代码是 “清除”按钮的Click事件代码是 “退出”按钮的Click事件代码是 文本框的Click事件代码是 ; ,而 ; ; 的事件代码是。 三、设计题 1设计求阶乘的表单,如习题图7.2所示。 (1) 表单运行,两个文本框初值置 0。用户在Text1中输入一个整数,单 击计算按钮,如果输入的是一个非正 整数,显示消息对话框,提示用户“输 入非法数据,退出程序运行。”,并关 闭表单;如果输入的是一个正整数, 求出此数的阶乘,并显示在Text2中。 (2) 单击“退出”按钮,关闭表单。 2设计一个如习题图7.3所示, 可以选择不同字体进行显示的表单, 要求在文本框中输入文字后,单击某 个单选按钮,文本框内的文字即能以 指定的字体显示。 习题图7.2 3设计如习题图 7.4的(a)、(b)所 示的表单,用户分别在文本框中输入初 值和终值,单击“计算”按钮可计算 出初值和终值之间连续整数的和,结果 显示于结果文本框中。如:输入 12和 15,可计算出 12+13+14+15的和。表单 运行初时结果文本框不可用,当单击 “计算”按钮,结果文本框成为可用文 本框并显示结果;单击“清除”按钮, 将三个文本框的内容清零,并将焦点置 于初值文本框中,同时结果文本框重新 置为不可用。 习题图7.3(a) 习题图7.4 (b) 4设计如习题图 7.5所示表单,可以逐条记录翻页查看教师情况表内容。习题图7.5 5设计如习题图 7.6所示表单,用于对数据表 student.dbf进行处理。表单中有一个表格、 一个选项组、一个命令按钮组、两个文本框和一个命令按钮。要求在选项组中选择一门课程后 (如“英语”),单击“平均分”按钮,则在其右侧的文本框中显示该课程的平均成绩;单击“优 秀人数”按钮,则在右侧的文本框中显示成绩在 85分以上的学生人数;单击“退出”按钮, 则关闭表单。 student.dbf的结构如下表所示: 字段名类型宽度含义 xh C 10 学号 xm C 10 姓名 yw N 10 语文 sx N 5(小数位数 1)数学 yy N 5(小数位数 1)英语 习题图 7.6 6根据第 5题提供的 student.dbf数据表设计“数据查询”表单,如习题图 7.7所示。程 序功能为:在组合框中列出所有 学生的学号,从中选择一个学生 学号,单击“查询”按钮,显示 该学生的相关字段信息。单击 “退出”按钮,关闭表单。 7设计如习题图 7.8教师信 息管理系统的软件封面,该表单 包含一个标签显示“教师信息管 理系统”和一个从左到右移动的 标签字幕“欢迎使用本系统”。 习题图 7.7