Visual FoxPro 第+章 围向对囊强序计 isual Gox Pro
Visual FoxPro 1 VisualFoxPro
Visual FoxPro 10.1面向对象的概念 102 Visual foxpro的面向对象支持 103面向对象的程序设计方法
Visual FoxPro 2 10.1 面向对象的概念 10.2 Visual FoxPro的面向对象支持 10.3 面向对象的程序设计方法
Visual FoxPro 10.1面向对象的概念 10.1.1对象与类 在面向对象程序设计( Object Oriented Programming,简称为OOP)中,对 象( Object)是组成程序的构件,就好象在面向过程的结构化程序设计 方法( Structured Programming)中的子程序和函数的作用一样。在结构 化程序设计方法中,程序设计人员把一个待求解的问题自顶向下进行分 解,以便形成一个个相对简单独立的子问题,然后用子程序或函数来解 决这些子问题,用子程序或函数之间的数据通信来模拟这些子问题间的 联系,最后把这些子程序或函数装配起来以形成解决问题的完整程序。 在面向对象的程序设计方法中,程序设计人员不是完全按过程对求解问 题进行分解,而是按照面向对象的观点来描述问题、分解问题,最后选 择一种支持面向对象方法的程序语言来解决问题。在这种方法中,设计 人员直接用一种称之为“对象”的程序构件来描述客观问题中“实体” 并用“对象”间的消息来模拟实体间的联系,用“类”来模拟这些实体 间的共性
Visual FoxPro 3 10.1.1 在面向对象程序设计(Object Oriented Programming,简称为OOP)中,对 象(Object)是组成程序的构件,就好象在面向过程的结构化程序设计 方法(Structured Programming)中的子程序和函数的作用一样。在结构 化程序设计方法中,程序设计人员把一个待求解的问题自顶向下进行分 解,以便形成一个个相对简单独立的子问题,然后用子程序或函数来解 决这些子问题,用子程序或函数之间的数据通信来模拟这些子问题间的 联系,最后把这些子程序或函数装配起来以形成解决问题的完整程序。 在面向对象的程序设计方法中,程序设计人员不是完全按过程对求解问 题进行分解,而是按照面向对象的观点来描述问题、分解问题,最后选 择一种支持面向对象方法的程序语言来解决问题。在这种方法中,设计 人员直接用一种称之为“对象”的程序构件来描述客观问题中“实体” , 并用“对象”间的消息来模拟实体间的联系,用“类”来模拟这些实体 间的共性。 10.1 面向对象的概念
Visual FoxPro 1对象( Object 在OO方法中,作为程序构件的“对象”是对现实世界中一个 实体的一种模拟工具。例如如要设计一个某高校学生学籍管 理软件,所涉及到的实体包括“学生”、“课程”、“专业” 等等。要模拟一个活生生的学生,需要使用一组特征数据 (如姓名、籍贯、性别、身髙、年龄等等)和一组行为规贝 (如该生对待某些外部事件的反映:受到表彰会怎样反映、 受到批评会怎样反映、受到屈辱会怎样反映、遇到同学的困 难时会怎样反映等)来模拟其静态特征和动态特征。OOP方 法正是用一组称为“属性”的数据模拟所描述实体(如学生) 的静态特征、而用一组称为“方法程序”的程序过程模拟该 实体对一些“事件”(如受到学校嘉奖)的反映。把模拟 个实体的“属性”数据和“方法程序”通过一定的形式进行 “封装”就建立起了一个OOP方法中的对象
Visual FoxPro 4 1.对象(Object) 在OOP方法中,作为程序构件的“对象”是对现实世界中一个 实体的一种模拟工具。例如如要设计一个某高校学生学籍管 理软件,所涉及到的实体包括“学生” 、 “课程” 、 “专业” 等等。要模拟一个活生生的学生,需要使用一组特征数据 (如姓名、籍贯、性别、身高、年龄等等)和一组行为规则 (如该生对待某些外部事件的反映:受到表彰会怎样反映、 受到批评会怎样反映、受到屈辱会怎样反映、遇到同学的困 难时会怎样反映等)来模拟其静态特征和动态特征。OOP方 法正是用一组称为“属性”的数据模拟所描述实体(如学生) 的静态特征、而用一组称为“方法程序”的程序过程模拟该 实体对一些“事件”(如受到学校嘉奖)的反映。把模拟一 个实体的“属性”数据和“方法程序”通过一定的形式进行 “封装”就建立起了一个OOP方法中的对象
Visual FoxPro 当然,如果对被管理的成千上万个学生都这样一个个完全独立 地设计“程序对象”,其工作量将会大得惊人,这实际上是 不可能的。OOP方法中,通过另一种称为“类”的工具对这 问题给出了一个巧妙的解决办法
Visual FoxPro 5 当然,如果对被管理的成千上万个学生都这样一个个完全独立 地设计“程序对象” ,其工作量将会大得惊人,这实际上是 不可能的。OOP方法中,通过另一种称为“类”的工具对这 一问题给出了一个巧妙的解决办法
Visual FoxPro 2类(Clas “类”是具有相同属性特征和行为规则的多个“对象”的一种 统一描述。对于一个学校的全体学生,描述其特征的数据模 式是相同的(当然不同“对象”的特征值会有不同)。行为 规则有不同的地方,也有相同的地方。如果我们侧重于描述 每个个体对一些诸如观看球赛、对待他人遇到意外事件的反 映等等,不同个体间的反映可能很不相同,描述其反映的 “方法程序”也许无法共享。但如果将行为的选择加以一些 限制,将引起学生反映的外部事件归纳为:
Visual FoxPro 6 2.类(Class) “类”是具有相同属性特征和行为规则的多个“对象”的一种 统一描述。对于一个学校的全体学生,描述其特征的数据模 式是相同的(当然不同“对象”的特征值会有不同)。行为 规则有不同的地方,也有相同的地方。如果我们侧重于描述 每个个体对一些诸如观看球赛、对待他人遇到意外事件的反 映等等,不同个体间的反映可能很不相同,描述其反映的 “方法程序”也许无法共享。但如果将行为的选择加以一些 限制,将引起学生反映的外部事件归纳为:
Visual FoxPro (1)一个新学年度到来时,学生的整体反映应该是缴费报导。 (2)当一个学年度不及格科目超过学校规定时,这一部分学 生应该留级或退学。 (3)完成规定科目的学习并考试合格者,学生的整体反映是 毕业离校。 在一般管理信息系统中,系统的使用者和设计者所关心的问题 正是这样一些共性问题而并非一些很个体的问题,这样设计 者就可以对个体的行为进行分析、归纳、抽象,形成整个群 体的共同行为规范,并把这种共同的行为规范用程序设计语 言描述成程序过程,和描述该群体的特征数据模式一起进 封装,这样就完成了OOP方法中一个“类”的设计
Visual FoxPro 7 (1)一个新学年度到来时,学生的整体反映应该是缴费报导。 (2)当一个学年度不及格科目超过学校规定时,这一部分学 生应该留级或退学。 (3)完成规定科目的学习并考试合格者,学生的整体反映是 毕业离校。 在一般管理信息系统中,系统的使用者和设计者所关心的问题 正是这样一些共性问题而并非一些很个体的问题,这样设计 者就可以对个体的行为进行分析、归纳、抽象,形成整个群 体的共同行为规范,并把这种共同的行为规范用程序设计语 言描述成程序过程,和描述该群体的特征数据模式一起进行 封装,这样就完成了OOP方法中一个“类”的设计
Visual FoxPro 在○OP方法中,“类”是对现实世界的一种高度抽象与概括, 而“对象”则是“类”的一个实例,“对象”一定具有其属 “类”的共同特征与行为规则,当然一个“对象”还可以具 有其属“类”未曾规定的特征和行为规则。这一点和现实生 活是非常相同的,这样的模拟和抽象比较符合人们的思维习 惯,这也正是○OP方法具有强大生命力,能够获得越来越多 的软件工作者欢迎并得到众多计算机开发商支持的一个基本 原因。 总之,从程序设计者的角度观察,“类”是一个数据模式和若 干个程序过程(称为“方法程序”、一般一种行为用一个程 序过程描述)经封装而形成的一个整体,它是使用信息技术 对现实世界的一种模拟与抽象,而“对象”则是“类”的 个实例,用程序设计语言来说,“对象”可以不精确的理解 为对一个“类”赋值的结果。“对象”是OOP方法中组成程 序一种构件
Visual FoxPro 8 在OOP方法中, “类”是对现实世界的一种高度抽象与概括, 而“对象”则是“类”的一个实例, “对象”一定具有其属 “类”的共同特征与行为规则,当然一个“对象”还可以具 有其属“类”未曾规定的特征和行为规则。这一点和现实生 活是非常相同的,这样的模拟和抽象比较符合人们的思维习 惯,这也正是OOP方法具有强大生命力,能够获得越来越多 的软件工作者欢迎并得到众多计算机开发商支持的一个基本 原因。 总之,从程序设计者的角度观察, “类”是一个数据模式和若 干个程序过程(称为“方法程序” 、一般一种行为用一个程 序过程描述)经封装而形成的一个整体,它是使用信息技术 对现实世界的一种模拟与抽象,而“对象”则是“类”的一 个实例,用程序设计语言来说, “对象”可以不精确的理解 为对一个“类”赋值的结果。 “对象”是OOP方法中组成程 序一种构件
Visual FoxPro 3事件与响应 “事件”是由外部实体作用在“对象”上的一个动作。在现实 生活中,某人出生、死亡、其电话震铃、设定的闹钟响了以 及过生日又长了一岁等等都称为一个事件,人们都会对这些 事件做出一定的反映:如电话震铃就要接听电话、设定的闹 钟响了可能就要去干一件什么事情,而过生日后可能要入学 了等等。在OOP方法中,作用在“对象”上的事件包括对象 的创立、释放、收到其他对象发来的“消息”等,对于一些 可视对象,如命令按钮等,其最常见的“事件”往往是一些 鼠标动作,如“单击”、“双击”、“拖放”或修改对象数 据等等。当作用在对象上的某个设定“事件”发生时,与该 事件相联系的“方法程序”(当然假设对象的设计者设计了 该程序并与对象一同封装)就运行并完成该程序的功能。 OOP就用这种机制来模拟对象对外部事件的反映并进而完成 由外部事件序列所规定的功能
Visual FoxPro 9 3. “事件”是由外部实体作用在“对象”上的一个动作。在现实 生活中,某人出生、死亡、其电话震铃、设定的闹钟响了以 及过生日又长了一岁等等都称为一个事件,人们都会对这些 事件做出一定的反映:如电话震铃就要接听电话、设定的闹 钟响了可能就要去干一件什么事情,而过生日后可能要入学 了等等。在OOP方法中,作用在“对象”上的事件包括对象 的创立、释放、收到其他对象发来的“消息”等,对于一些 可视对象,如命令按钮等,其最常见的“事件”往往是一些 鼠标动作,如“单击” 、 “双击” 、 “拖放”或修改对象数 据等等。当作用在对象上的某个设定“事件”发生时,与该 事件相联系的“方法程序”(当然假设对象的设计者设计了 该程序并与对象一同封装)就运行并完成该程序的功能。 OOP就用这种机制来模拟对象对外部事件的反映并进而完成 由外部事件序列所规定的功能
Visual FoxPro 4事件代码与方法代码 事件代码与方法代码都是定义在某个对象中的一个程序过程, 有时也把两者统称为方法代码。但狭义地说:事件代码可以 由一个“事件”触发运行,其过程名与事件名相同,而一般 方法程序没有一个与之对应的事件触发,必须靠其他程序调 用才能得以运行。因为不能为对象建立新的事件,所以一个 对象包含的事件代码是一定的,不能增加,而一个对象中所 包含的方法代码是可以任意增加的,就象在一个程序中可以 使用任意多个过程和函数一样。 10
Visual FoxPro 10 4. 事件代码与方法代码都是定义在某个对象中的一个程序过程, 有时也把两者统称为方法代码。但狭义地说:事件代码可以 由一个“事件”触发运行,其过程名与事件名相同,而一般 方法程序没有一个与之对应的事件触发,必须靠其他程序调 用才能得以运行。因为不能为对象建立新的事件,所以一个 对象包含的事件代码是一定的,不能增加,而一个对象中所 包含的方法代码是可以任意增加的,就象在一个程序中可以 使用任意多个过程和函数一样