




已阅读5页,还剩12页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第6章 面向对象程序设计基础程序设计人员在进行面向对象的程序设计时,不再是单纯地从代码的第一行一直编到最后一行,而是考虑如何创建类和对象,利用对象来简化程序设计,并提高代码的可重用性。6.1 面向对象编程概述面向对象的编程(object oriented programming, OOP)是编程的科学与艺术。在20世纪70年代,为了提高程序员的编程效率和简化程序的结构,出现了面向过程编程。但是,在面向过程编程的实践中,仍然存在许多问题,于是又逐渐演变发展到了OOP。在面向过程的程序设计中,程序代码被分为模块和函数,并由它们组成“黑盒”。这些黑盒用于隐藏信息以防止无用的或非授权的访问,而使程序员无须了解它们内部的复杂性。在理论上,黑盒不应越出它的边界而修改不属于它管辖范围内的数据,也不应该将任何副作用引入程序。不幸的是,在现实中很难做到这一点。被引入系统的副作用在数目上通常随着程序的规模的扩大而成比例增大,程序越大,在代码中出现的错误也就越多。面向过程的程序设计通常采用把现实问题转化为计算机语的办法来编写程序。然而,面向对象编程则试图识别再现实世界中可能存在的对象,依此构造出相应的数据模型,展示对象间的相互关系,并编写相应的程序。在面向对象编程中,对象是由叫做类的数据结构来定义的。下面简单解释对象和类这两个概念。1.对象 (object)对象仅是类(class)的运行实例,它可以是任何具体事物。例如现实生活中的计算机、电话机、电视等。如在hello项目中创建的表单、标签和命令按钮,均为对象。2.类(class)类是一种对象的归纳和抽象。类就像是一张图纸或一个模具,所有对象均是由它派生出来的,它确定了由它生成的对象所具有的属性、事件和方法。例如,电话就是一个类,它抽取了各种电话的共同特性,与此同时一个对象就是具体的一部电话。又如在hello项目中,表单对象是表单类的实例,所以创建表单对象后。它就具有了表单标题、大小、位置等属性,同时也具有了鼠标单击、双击等事件及其相应的方法。类就像建筑上的钢筋、砖头、楼板等组件,程序员可以方便地将类“拿来”,直接用在自己的应用程序中,从而极大地提高软件的开发速度和质量。为了方便,VF6中提供了许多类(即系统类),使用系统类可完成绝大部分的编程工作,而且还可利用系统类中的基类创建自定义类。3.类与对象的关系类和对象关系密切,但并不相同。类包含了有关对象的特征和行为信息,它是对象的蓝图和框架。例如,电话的电路结构和设计布局可以是一个类,而这个类的实例对象,便是一部电话。类决定了对象的特征,类实例化成为对象。4.对象的属性对象的属性是指控件、字段或数据库对象的特征。可以对属性进行设置,以定义对象的特征或某一方面的行为。在VF6中,可以用“属性”窗口修改一个对象的属性。每个对象都有属性。例如,一部电话有一定的颜色和大小。当把一部电话放在办公室中,它又有了一定的位置,而它的听筒也有拿起和挂上两种状态。在VF6中,创建的对象也具有属性,这些属性由对象所属于的类决定。属性值既能在设计时设置也可以在运行时进行设置。表6.1 列出了一个复选框可能有的属性。表6.1 复选框的属性属性说明属性说明Caption复选框旁边的说明性文字MousePointer在复选框内鼠标指针的形状Enabled复选框能否被用户选择top复选框顶边的位置ForeColor 标题文本的颜色visible指定复选框是否可见Left复选框左边的位置 5.对象的事件和方法1)事件每个对象都可以对被称为事件的动作进行识别和响应。事件可以由一个用户动作产生,如单击鼠标或按下一个键;也可以由程序代码或系统产生,如计时器。在多数情况下,事件是通过用户的交互操作产生的。例如,对于一部电话来说,当用户拿起听筒时,便激发了一个事件。同样地,当用户拨号打电话时,也激发了若干事件。在VF6中,可以激发事件的用户动作包括单击鼠标、移动鼠标和按键。例如,在hello项目中,单击“显示翻译”命令按钮,便激活了该命令按钮的Click Event,系统便执行该事件方法中的代码,即在表单中显示“你好,信息世界!”,并将该命令按钮设置为不可用;单击表单,便激活了表单的Click Event,系统便执行该事件方法中的代码,即在表单中显示Hello Word!,并将“显示翻译”命令按钮重新设置为可用状态。2)方法方法是对象相关联的过程,但又不同一般的VF6过程。方法紧密地和对象连接在一起,并且与一般VF6过程的调用方式也有所不同。事件可以具有与之相关联的方法。例如,为Click 事件编写的方法代码将在Click事件激发时被执行。方法也可以独立于事件而单独存在,此类方法必须在代码中被显示地调用。事件集合虽然范围很广,但却是固定的。用户不能创建新的事件,然而方法的集合却可以无限扩展。表6.2和表6.3分别列出了与复选框相关联的一些事件和方法。表6.2 与 复选框相关联的事件事件说明Click用户单击复选框GotFocus用户选择复选框LostFocus用户选择其他控件表6.3 与复选框相关联的一些方法程序方法程序说明Refresh复选框中的值被更新,以反映隐含数据源的数据变化SetFocus焦点被置于复选框,好像用户刚使用Tab键选中复选框在VF6中所有默认的方法和事件都对应了一个过程,且系统已为它们定义了一个默认过程。如不改变,系统将执行这些默认过程。在VF6中,消息是对方法的实际调用。注意:在OOP术语中,消息是对方法的调用。而Windows 消息是Windows用以在操作环境之间和活动进程间进行通信的内部机制。6.2 VF6中的类和对象对于一个对象内的属性和方法,可以抽象处理,将它们封闭在一个类的内部,使得当用户用到一个类或者由类创建一个新对象时,它本身已具有了一定的属性和方法。6.2.1 VF6的概述为了提高软件生产力,VF6提供了大量的类。VF6提供的类分为3类,即基类(Base Class)、基础类(Foundation Class)和向导类(Wizard Class)。1. 基类基类是VF6提供的基本类。这些类按可视性可分为可视类和非可视类,可视类通常使用相应图标表示,如命令按钮用图标表示。基类还可以进一步分为控件类和容器类。表6.4 给出了常用VF6的基类。表6.4 VF6的常用基类类名说明可视性类名说明可视性Checkbox复选框是Lable标签是Column网格控件上的列*是Line线条是ComboBox组合框是ListBox列表框是CommandButton命令按钮是OleControlOLE类是CommandGroup命令按钮组是OptionButton选项按钮*是Container容器类是OptionGroup选项组是Control控制类是Page页面*是Cursor游标类(临时表)PageFrame页框是Custom自定义类ProjectHook项目DataEnvironment数据环境类Relation关系EditBox编辑框是Separatoe空白空间是Form表单是Shape形状是FormSet表单集是Spinner微调是Grid网格是TextBox文本框是Header网格列的标题*是Timer计时器Image图像是ToolBar工具栏是其中,在“说明”中带“*”的4个基类是作为父容器类的组成部分存在的,所以不能在“类设计器”中作为父类来创建子类。所有的VF6基类都有如表6.5所示的最小事件集和如表6.6所示的最小属性集。表6.5 VF6基类的最小事件集事件说明Init当对象创建时激活Destroy当对象从内存中释放时激活Error当类中的事件或方法发生错误时激活表 6.6 VF6基类的最小属性集属性说明Class该类属于何种类型BaseClass该类是由何种基类派生出来,例如From、CommandButton或Custom等ClassLibrary该类从属于哪种类库ParentClass对象所属于的父类。若该类直接由Visual FoxPro基类派生而来,则属性值与属性值相同2. 基础类基类是最基本的类,如同系统函数。使用基类仍然需要很大的程序设计工作量,为此VF6还提供了98个基础类,全部以类库方式提供,在.ffc文件夹下,分布在14个类库中,如表6.7所示。表6.7 基础类库类别说明可视类类别说明可视类Application应用_app.vcxInternet因特网_hyperlink.vcxAutomation自动图形_autgraph.vcxMenus菜单_table2.vcxButtons按钮_miscbtns.vcxMultinedia多媒体_multimedia.vcxDataNavigation数据浏览_datanav.vcxOutput输出_reports.vcxData Query数据查询_dagaquery.vcxText Formatting文本格式化_format.vcxData/Time日期/时间_datatime.vcxUser Controls用户控件_ui.vcxDialogs对话_dialogs.vcxUtilities使用程序register.vcx3. 向导类在VF6中提供了许多向导,这些向导可以帮助初学者快速入门。这些向导内部的支持部分是以向导类的形式存在的,同时提供给用户使用,在.wizard文件夹下可浏览到这些类。6.2.2 容器与非容器VF6的类有两大主要类型,因此VF6对象也分为两大类型,即容器类和控件类。1.容器类容器类是指可容纳别的对象的类。如表单属于容器类,因为可以将其他对象,如命令按钮、标签、复选框、编辑框等放在它的内部。表6.8列出了每个容器类所能包含的对象。表6.8 容器类所能包含的对象容器能包含的对象命令按钮组命令按钮容器任意控件控件任意控件自定义任意控件、页框、容器和自定义对象表单集表单、工具栏表单页框、任意控件、容器和自定义对象网格列表头和除表单集、表单、工具栏、计时器和其他列以外的其余任一对象网格网格列选项按钮组选项按钮页框页面页面任意控件、容器和自定义对象项目文件、服务程序工具栏任意控件、页框和容器2.控件类控件类的封装比容器类更为严密,但因此也丧失了一些灵活性。控件类没有AddObject方法。VF6的对象,基于它们的类的性质,可分为两类。1) 容器可以作为其他对象的父对象,例如,表单作为一个容器,是放在它上面的标签的父对象。2) 控件可以包含在容器中,但不能作为其他对象的父对象。例如,编辑框就不能包含任何其他对象。6.2.3 VF6中对象的引用引用对象分为两种引用方式,第一种方式是绝对引用,第二种是相对引用。绝对引用可以在任何地方使用,而相对引用只能使用在本对象的方法中。对象引用的是内存中的对象变量,可以通过赋值把一个对象的引用赋给另一个变量。对象的引用并不是对象本身,而是指向相应对象真实信息的指针。1) 绝对引用语法:Parent.Object.Property或 Parent.Object.Method功能:在属性操作或调用方法中绝对引用对象Object。其中:Parent为父对象名。例如,在hello项目中也可以使用绝对引用如下所示。form1.Label1.Caption=”你好,信息世界!” &设置标签的标题属性,form1为表单的名字form1.RELEASE &调用RELEASE方法释放表单2) 相对引用在类设计中,引用对象可以采用一种相对引用的方式。相对引用分为This、ThisForm、ThisFormSet、Parent、ActiveControl和ActiveForm等几种。 This This表示当前对象,其语法为This.| ThisForm ThisForm表示当前表单。表单是一个容器控件,稍后讨论。 ThisFormSet ThisFormSet表示当前表单集。表单集是表单的集合。Parent Parent用于引用一个控件所属的容器,其语法格式为Control. ParentActiveControl ActiveControl用于引用对象上的活动控件,其语法格式为.ActiveControl.=ActiveForm ActiveForm用于引用表单集中的活动表单,其语法格式为.ActiveForm.=或. ActiveForm.例如,在hello项目(此项目参见6.4小节),使用相对引用改变标签的标题值。ThisForm.Label1.Caption=”你好,信息世界!” &设置标签的标题属性ThisForm.RELEASE &调用RELEASE 方法释放表单6.2.4 VF6中对象属性的设置VF6中对象包含自己的属性,以作为描述对象状态的静态数据。对象的属性设置可以在设计时进行,也可以在运行时进行,其设置分为直接设置和结构化设置。1)直接设置对象属性在程序中可用以下语法来进行设置。语法:Parent.Object.PropertyValue功能:该当前对象Object的属性Property设置值Value。其中,Parent为父对象名。例如,下列语句设置frmPhoneLog 表单中txtDate文本框的各种属性。frmPhoneLog.txtDate.Value=DATE() &显示当前日前frmPhoneLog.txtDate.Enable=.T. &控件有效frmPhoneLog.txtDate.ForceColor=RGB(0,0,4) &黑色文本frmPhoneLog.txtDate.BackColor=RGB(192,192,192) &灰色背景在上例的属性设置中,frmPhoneLog是最高层的容器对象。如果frmPhoneLog包含在一个表单集(详见7.2.3节)frmPhoneLog中,则需要在父路径上指明,例如frsContacts. frmPhoneLog.txtDate.Value=DATE()2)结构化设置属性WITHENDWITH结构简化了设置多个属性的过程。例如,在表单集的表单中,要设置表格列的多个属性,可以使用下列结构。WITH thisFormSet. frmForm1.grdGrid1.grcColumn1.width=5.Resizable=.F. ForceColor=RGB(0,0,0). BackColor=RGB(255,255,255).SelectOnEntry=.T.ENDWITH6.2.5 响应事件当事件发生时,该事件的过程代码将被执行。例如,当用户单击命令按钮时,命令按钮的Click事件的过程代码将被执行。也可以在编程中调用与某一事件相关的过程。例如frmPhoneLog.Ative &执行frmPhoneLog的activate事件代码,但并不激活该表单若要激活表单,应使用表单的Show方法(详见7.2.2节)。调用Show方法将显示并激活表单,同时Activate事件的过程代码也将被执行。frmPhoneLog. Show &Show()的含义详见7.2.2节6.2.6事件驱动模型事件驱动模型定义了用户与系统之间的交互何时发生以及如何进行,当系统响应用户的动作时,便会自动触发事件代码。例如,用户在控件上单击(click)时,系统就自动执行为该对象的click事件编写的代码。1. VF6中的事件概述表6.9中列出VF6能识别的常见事件,注意不同的对象有不同的事件,表中的事件适用于大多数的控件。表6.9 常用事件集事 件事件被激发后的动作Init对象初始化时,在对象显示之前的触发事件,可用来设置一个初始参数等Destroy从内存中释放对象Click用户用鼠标左键单击对象DblClick用户用鼠标左键双击对象RightClick用户用鼠标右键单击对象GotFocus对象接收焦点,由用户动作引起,如按键Tab或单击,或者在代码中使用SetFocus方法LostFocus对象失去焦点,由用户动作引起,如按键Tab或单击,或者在代码中使用SetFocus方法使焦点移到新的对象上KeyPress用户按下或放开按键MouseDown当鼠标指针停在一个对象上时,用户按下鼠标按钮MouseMove用户在对象上移动鼠标MouseUp当鼠标指针停在一个对象上时,用户放开鼠标按钮2. 事件的触发与停止事件的触发分为用户操作触发和在程序运行过程中触发。用户操作触发如单击,表示单击鼠标时,触发一个事件。程序运行过程中触发表示在程序运行过程中自动触发,如Error事件,表示当程序运行出现错误时自动触发。通常让程序允许事件触发使用READ EVENTS命令。如果不允许事件触发可以使用CLEARE EVENTS 命令。3. 容器层次和类层次的事件1)容器事件与控件事件为控件编写事件代码时,请注意以下两条基本规则:容器不处理与所包含控件相关联的事件。若没有与控件相关联的事件代码,则VF6在该控件所在的类的层次结构中逐层向上检查是否有与此事件相关联的代码。当用户以任意一种方式(使用Tab键、单击鼠标、将鼠标指针移至控件上等)与对象交互时,对象事件被触发。每个对象只接收自己的事件。例如,在hello项目中,由于“显示翻译”命令按钮位于表单上,所以当用户单击命令按钮时,不会触发表单的click事件,而只触发命令按钮的click事件。若没有与命令按钮相关联的click事件代码,尽管有与表单相关联的click事件代码,当用户单击命令按钮时,也不会执行与表单相关联的click事件代码。2)类与控件事件若表单上的控件基于一个自定义类(同样地,这个类本身也可能基于其他自定义类),当一个事件发生时,VF6首先在该控件中查看是否有与此事件相关联的事件代码,若找到,则执行它;否则,VF6将在类层次中向上逐层检查。无论VF6在类层次的哪个地方找到事件代码,都执行它,而该层以上的代码则不会被执行。用户可以将代码加入到事件过程中,可以使用DODEFAULT()函数显示地调用控件的父类代码;也可以使用NODEFAULT命令屏蔽父类的事件代码。4. 常见事件程序设计1)设计事件程序的原则在VF6中,某一件事件发生时,若没有与之间相关联的代码,则不会发生任何操作。对与绝大对数事件来说,用户不必编写代码,用户只需要对少数几个关键的事件编程即可。若要编写响应事件代码,可使用“表单设计器”的“属性”窗口或在相应的对象上双击,打开相应事件的代码编辑窗口后编写。一段代码应置于何处,是由事件发生的顺序决定的。请注意以下提示: 表单中所有控件的Init事件将在表单的Init事件之前执行,所以在表单显示以前,就可在表单的Init事件代码中处理表单上的任意一个控件。 若要在列表框、组合框或复选框的值改变时执行某代码,可将它编写在InteractiveChange事件(不是click事件)中,因为有时控件的值改变并不触发click事件,有时控件的值没改变,而click事件却会发生。 当拖动一个控件时,系统将会忽略其他鼠标事件。例如,在拖放操作中MouseUp和MouseMove事件不会发生。 Valid和When事件有返回值,默认为真(.T.)。若从When事件返回假(.F.)或0,则控件将不能被激活。若从Valid事件返回假(.F.)或0,则不能将焦点从控件上移走。63 一个应用程序VF6使用方法,操作灵活,功能完备,下边通过一个实例让初学者了解VF6面向对象的程序设计方法与功能。为简化设计,该应用程序只有一个表单,在该表单上有一个标签和两个命令按钮,运行表单时屏幕如图6.1所示,单击命令按钮“显示翻译”后,屏幕如图6.2所示;在表单的空白处单击后,其结果如图6.1所示:若单击“退出”命令按钮,则退出表单的运行状态。 图6.1 运行表单结果 图6.2 单击命令按钮和双击表单后的结果631建立项目文件1建立工作目录在D盘的根目录下建立一个hello目录。2建立并保存项目文件1)启动VF6任选一种启动方式,启动VF6。 2)清理工作环境在命令窗口输入命令CLOSE ALL 关闭所有工作区中所有类型的文件,但不释放内存变量CLEAR ALL 关闭所有文件及释放内存变量3)新建项目hello从“文件”菜单中选择“新建”命令,或直接单击工具栏上的“新建”按钮,打开“新建”对话框;在“新建”对话框的,选定“文件类型”为“项目”,单击“新建文件”按钮,将弹出“创建”对话框;在“创建”对话框“保存在”下拉列表中选择目录“D:hello,在“项目文件”编辑框中输入项目文件名hello:单击“保存”按钮,此时“创建”对话框关闭,“项目管理器”窗口打开。3建立并保存表单1)新建表单在“项目管理器”窗口中,展开“文档”选项卡,选定“表单”选项卡后单击“新建”按钮,打开“新建表单”对话框,如图6.3所示;图6.3 “新建表单”对话框单击“新建表单”,屏幕上出现表单设计界面(如果“属性”窗口没有出现,可以在“表单设计器”窗口上右击,并在弹出的快捷菜单中选择“属性”项;如果“表单控件”工具栏没有出现,可以选择“显示”“工具栏”,打开“工具栏”对话框,然后选定“表单控件”后单击“确定”按钮)。表单的Name 默认为Forml。此时,在“属性”窗口中的“对象”下拉列表中默认的对象为“Forml”,结果如图6.4所示。图6.4 表单设计器2)制作一个显示“Hello World!”标签创建标签 在“表单控件”上单击“标签”控件(将鼠标在表单控件的任意图标上停留,系统将显示该图标的含义),然后在表单Forml适当位置单击,就在表单上建立了一个标签,其Name默认为Labell。此时,在“属性”窗口中的“对象”下拉列表中默认的对象为“Labell”,依次设置标签的有关属性如表6.10表6.10 标签Label1的属性设置值属性含义设置值Caption标题Hello World!FontSize字号16FontBold是否采用粗体字.T.AutoSize能否随内容自动调整标签框大小.T.3)创建与设置“显示翻译”命令按钮创建命令按钮 从“表单控件”上单击“命令按钮”控件,然后在表单Forml适当位置单击,就在表单上建立一个命令按钮,其Name默认为Command1。此时,在“属性”窗口中的“对象”下拉列表中默认的对象为Command1,设置命令按钮的Caption属性为“显示翻译”,然后双击属性窗口中的Click Event,并在打开的代码编辑窗口中输入THISFORM.Label1.Caption=“你好,信息世界!”THIS.ENABLED=.f.以上两条命令的功能是:重新设置标签Label1的Caption值,即翻译其显示内容,然后将命令按钮设置为不可用。输入完成后,保存内容并退出代码编辑窗口。4)创建与设置“退出”命令按钮创建命令按钮 从“表单控件”上单击“命令按钮”控件,然后在表单Forml适当位置单击,就在表单上建立一个命令按钮,其Name默认为Command2。此时,在“属性”窗口中的“对象”下拉列表中默认的对象为Command2,设置命令按钮的Caption属性为“退出”,然后双击属性窗口中的Click Event,并在打开的代码编辑窗口中输入THISFORM.RELEASE以上命令的功能是释放表单,退出表单运行输出完成后,保存内容并退出代码编辑窗口。5)设置表单单击Forml 表单,此时,在“属性”窗口中的下拉列表中默认的对象为Forml,设置表单的 Caption属性为“表单演示”,然后双集表单的Click Kvent,并在打开的代码编辑窗口中输入THISFORM.Ladell.Caption=ello orld!THIS. Commandl. ENABLED=.T.以上两条命令的功能是:设置标签Labell的Caption值为“Hello World!”,然后将commandl 命令按钮重新设置为可用,即恢复表单的初始状态。输入完成后,保存内容并退出代码编辑窗口。 6)保存表单单击常用工具栏上的“保存”按钮,保存该表单(例如保存菜单的文件名为hello,其文件扩展名为SCX)。4运行表单 1)调试运行表单单击常用工具栏上的运行按钮!(也可用菜单来运行),进入运行表单界面,运行的初始画面如图6.1所示。2)操作表单在运行表单的界面上单击命令按钮“显示翻译”,可看到表单上的Hello World!变不“你好,信息世界!”,同时“显示翻译”命令按钮不可用(参见图6.2);在表单的空白处单击,操作界面恢复到初始状态。如果想退出表单,可单击“退出”命令按钮。5编译应用程序关闭hello表单。单击“项目管理器”窗口上的“连编”按钮调出“连编选项”对话框,从中选择“连编应用程序”,并选择“重新编译全部文件”复选框和“显示错误”复选框,单击“确定”按钮后在弹出的“ 另存为”对话框,将hello.app存放在“D:hello”目录中。此后,无论VF6是否打开,只要执行D:hello目录中的hello.app,就可以运行该程序。通过以上例子,可以看出在VF6中进行Windows程序设计时,只需要对操作对象的属性(如Caption、FontSize等)进行赋值,赋值在某一操作对象的事件(如单击事件Click Event)中进行,如在表单的Click Event事件中对标签Labell 的Caption 属性赋值(其命令为THISFORM.Labell.Caption=Hello world!)。在此,一个功能只需要一条命令即可实现。642创建应用程序的一般步骤根据以上例子,总结出在VF6中创建应用程序的一般步骤如下。清理工作环境,在命令窗口输入CLOSE ALL关闭所有工作区中所有类型的文件,但不释放内存变量CLEAR ALL关闭所有文件及释放内存变量,选择1号工作区新建工作目录和项目文件,进入相应的“项目管理器”窗口;在“项目管理器”中选择“数据”项,创建或加入数据库、表、视图及查询文件;选择“文档”加入表单、报表及标签;选择“其他”加入菜单、文本文件和其他文件;创建或设定项目的主控程序;设定非包含型文件,若在运行应用程序时需要修改数据库的内容,则应将这些数据库表标记为“排除”(默认状态),通过“项目”“排除”和“项目”“包括”命令改变;如果愿意,可以利用“项目”“编辑说明”命令功能分别为各个文件写一些对文件功能用途的注释说明,用作备注;单击“项目管理器”窗口上的“连编”按钮调出“连编选项”对话框,从中选择“重新连编项目”,并选择“重新编译全部文件”复选框和“显示错误”复选框。这样可以使用“项目管理器”,不管当前文件的状态,都先编译所有的文件,如果有错误就显示在一个编辑窗口中,没有错误不继续把所有文件综合生成一个单独的.APP或.EXE(专业版)程序文件。当以后再运行时就用不着各个单独的文件,只要一个程序文件和必要的数据库表就可以了。习 题 6一、 思考题1.面向对象程序设计方法和面向过程程序设计方法有何异同?2.名词解释:对象、类、子类、属性、方法、事件、消息、封装、继承、实例。3.简述类的基本组成及对象与类的异同。4.对象属性有几种方法设置?5.解释可视类、非可视类、容器类、控件类、基类、基础类。6.面向对象程序设计中有几种基本程序设计方法?7.类与子类、对象的关系是什么?8.方法与事件过程有什么区别?二、选择题1.面向对象的程序设计是近年来程序设计方法的主流方式,简称OOP。下面对于OOP的描述错误的是( )。(A) OOP以对象及其数据结构为中心。(B) OOP用对象表现事物,用类表示对象的抽象。(C) OOP用方法表现处理事物的过程。(D) OOP工作的中心是程序代码的编写。2.面向对象程序设计中程序运行的最基本实体是( )。(A)对象 (B)类 (C)方法 (D)函数3.现实世界中的每一个事物都是一个对象,任何对象都有自己的属性和方法。对属性的正确描述是( )。(A)属性只是对象所具有的内部特征(B)属性就是对象所具有的固有特征,一般用各种类型的数据来表示(C)属性就是对象所具有的外部特征(D)属性就是对象所具有的固有方法4.下面关于类的描述,错误的是( )。(A)一个类包含了相似的有关对象的特征和行为方法(B)类只是实例对象的抽象(C)类并不实行任何行为操作,它仅仅表明该怎么做(D)类可以按所定义的属性、事件和方法进行实际的行为操作5.每个对象都可以对一个被称为事件的动作进行识别和响应。下面对于事件的描述中错误的是( )(A)事件是一种预先定义好的特定的动作,由用户或系统激活(B)VF6基类的事件集合是由系统预先定义好的,是唯一的(C)VF6基类的事件也可以用户创建(D)可以激活事件的用户动作有按键、单击鼠标、移动鼠标等 6.当人们了解了对象可能发生的各种事件以后,最重要的就是如何编写事件代码。编写事件代码的方法中不正确的是( )(A)为对象的某个事件编写代码就是要编写一个扩展为PRG的程序,其主文件名就是事件名(B)为对象的某个事件编写代码就是要将代码写入对象的该事件过程中(C)在可以由定义了事件过程的类中继承(D)在属性窗口中选择该对象的事件并双击,在事件窗口中输入相应的事件代码7.“类”是面向对象程序设计的关键部分,创建新类不正确的方法是( )。(A)在.PRG文件中以编程方式定义类(B)从菜单方式进行“类设计器”(C)在命令窗口中输入CREAT CLASS命令,进入“类设计器”(D)在命令窗口中输入ADD CLASS 命令8.为表单Myform添加事件或方法代码,改变该表单中的控件cmd1的caption属性的正确命令是( )
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 软体家具咨询策划方案
- 安庆学校活动策划方案模板
- 木材加工设备投资效果综合分析报告
- 大棚后坡维护施工方案
- 鞋厂成本管理咨询方案
- 叫花鸡营销策划方案
- 初中活动方案策划书
- 临水建筑选址规划方案设计
- 音乐培训活动招生方案策划
- 卤味零食达人营销方案
- 国家临床版3.0手术操作编码(ICD-9-CM3)
- 发展汉语初级综合1:第3课课件
- 2021人工智能训练师职业技能标准(职业编码:4-04-05-05)
- 第二十章-颅内和椎管内血管性疾病
- 消防救援队伍作战训练安全行动手册
- 质保金支付申请表
- 苏科版一年级上册《心理健康教育》全一册全部教案(共9课)
- 建筑工程质量安全检查记录表
- 35kV变电站施工组织设计资料
- 保障农民工工资支付协调机制和工资预防机制
- 聚焦于人:人力资源领先战略
评论
0/150
提交评论