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