面向对象程序设计引入概念

2017-03-24 11:40:09131

面向对象程序设计引入的另一个重要概念就是类,类是定义对象特征以及对象外观和行为的模板。所有对象的属性、事件和方法程序在定义类时被指定。所有对象均由类派生而来。    面向对象程序设计引入的另一个重要概念就是类,类是定义对象特征以及对象外观和行为的模板。所有对象的属性、事件和方法程序在定义类时被指定。所有对象均由类派生而来。

   类的重要性质之一是它能根据先前的类生成一个新类,即子类。子类可拥有派生它的类的全部属性和方法,还可以在此基础上加入新的属性和方法。例如,“人”可看作基类,而“教师”和“研究生”都可看作是“人”的子类。类所具有的封装、继承等特征提高了代码的可重用性和可维护性。

   在visual foxpro中,“表单设计器”窗口中的控件可看作是visual foxpro已设计好的标准控件类。通过将类实例化,可得到控件对象。当在表单中画一个控件时,就将类转化为对象,即创建了一个控件对象。例如,“表单设计器”窗口中的文本框控件类确定了所有文本框应具有的属性、方法和事件。在表单中画两次文本框控件,就可创建两个文本框对象,这就是类的实例化。他们继承了文本框类的属性,如具有高度、宽度等属性,也继承了移动、光标定位到文本框等方法,还可响应单击、双击等事件。

   在传统的面向过程的应用程序中,由应用程序来控制执行哪一部分代码和按何种顺序执行代码。程序从第一行代码开始执行,按应用程序中预定的路径执行,必要时调用过程。

visual foxpro的表单采用时间驱动的工作机制。在事件驱动的应用程序中,可以把各种窗口、空间都看作对象,代码不是按照预定的路径执行,而是在对象响应不同的事件时执行不同的代码片段。事件可以由用户操作触发,也可以由来自操作系统或其他程序的消息触发,甚至由应用程序本身的消息触发。事件触发的顺序决定了代码执行的顺序,因此应用程序每次运行时所经过的代码的路径都是不同的。例如,用户在控件1上单击鼠标左键时,系统自动执行在控件1的click事件中编写的代码。同样的,如果单击鼠标左键的事件发生在控件2上,也可以执行控件2的click事件中的代码。用户单击不同的控件,会引起系统执行不同的事件代码。用户单击控件的次序不一样,执行不同事件的代码的次序也就不一样。

   总的说来,用户的两种动作可以引发事件:一种动作是键盘操作,他们是由用户的键盘操作而引发的事件;另一种动作是鼠标操作,如鼠标移动、拖动、单击和双击等用户操作引发的鼠标事件。由系统引发的事件则往往是启动窗体、卸载窗体、对象获得焦点或失去焦点时发生的一系列的有序的事件,这些事件的发生时刻和发生次序是有规律可循的。此外,程序在执行中代码也可以触发事件。

   可以想象,处理各种对象、事件和消息的所有可能的组合将有惊人的工作量,幸运的是,visual foxpro封装了所有这些低层消息处理,许多消息由visual foxpro自动处理了,其他作为事件过程由编程者自行处理。这样可以快速创建强大的应用程序而无需设计不必要的细节。