2012-9-8
1
第6章 对象模型与事件模型
6.1 面向对象的程序设计概述
结构化程序设计
? 本质:功能设计 ? 方法:自顶向下、功能分解,从外部功能上模
拟客观世界 ? 开发过程:从“做什么”到“如何做” ? 例:演示!
? 求1~100之和。( “做什么”) ? S=0 for I=1 to 100 s=s+I next I ?s(―如何做”)
? 优点:系统结构性强、便于设计和理解 ? 缺点:维护困难
2012-9-8 3
6.1 面向对象的程序设计概述
6.1.1 面向对象的程序设计方法
? 方法:基于问题对象的自底向上的功能综合,从内部
结构上模拟客观世界 ? 开发过程:从“用什么做”到“要做什么” ? 例:
演示表单“介绍OOP‖求1~100之和
? 表单、对象(“用什么做”) ? 事件过程( “要做什么”) 利用类的继承性更新 设计出程序的基本单
位:类和对象 ? 优点
系统的功能
? 以对象为中心的
问题求解方法简化程序设计,更接近现 实世界,可降低开发和维护的费用 ? 提高程序代码的可重用性 ? 可以和各种模型自然的融合
2012-9-8 4
6.1 面向对象的程序设计概述
6.1.2 类和对象
? 类:定义了对象特征以及对象外观和行为的模板,
它刻划了一组具有共同特性的对象 ? 对象:是类的一个实例(数据,过程)
OOP中,程序由一个或多个类组成,在程序运行时视需 要创建该类的各个对象(实例)
? 类是静态概念,对象是动态概念 对象是基于某种类所创建的实例,包括了数据和过程
? 控件与对象 一个运行表单上的控件就是一个对象
? 应用程序对象 表单( Form )、表单集( FormSet )、控件( Control )
2012-9-8
5
6.1 面向对象的程序
设计概述
1. 类
基类:VFP
系统提供的内部定义的类,可用于自定 义类的基础(表单、控件(就是VFP3.0的控 制)) 子类:是以其它类定义为起点,为某一种对象所建 立的新类。子类将继承任何对父类所做的修 改 用户自定义类:与基类相似,由用户定义,可用 于派生子类,但无可视化表示形式
2012-9-8 6
6.1 面向对象的程序设计概述
? 类的特点(通过类可以简化应用程序设计) ? 继承性(inheritance)
? 子类沿用父类特征的能力(黄种人与白种人) ? 如果父类特征发生改变,则子类将继承这些新特征
? 多态性(polymorphism) ? 一些关联的类包含同名的方法程序,方法
程序的内容可以不同 ? 相同的操作作用于多种类型的对象上获得不同的结果,增强系统 的灵活性、维护性和扩充性 ? 封装性 (encapsulation) ? 说明了包含和隐藏对象信息的能力 ? 高内聚,低耦合 ? 抽象性(abstraction) ? 提取一个类或对象与众不同的特征,而不对该类或对象的所有信 息进行处理 2012-9-8 7
6.1 面向对象的程序设计概述
? 对象(Object) ? 每个对象都具有属性及与之相关的事件和方法
? 属性(Property) 定义对象的特征或某一方面的行为 ? 对象的有些属性值可修改 ? 设计阶段 ? 运行阶段(Show) ? 对象的有些属性值不可修改 ? 例:Value ? 分类 ? 只读(不可以修改:Baseclass)
? 单值(直接输入:caption) ? 二值(下拉列表中选择,也可以双击,True,False:Minbutton)
? 多个值(下拉列表中选择:Borderstyle)
2012-9-8 8
6.1 面向对象的程序设计概述
? 事件(Event) 是由对象识别的一个动作 ? 可编写相应的代码,对动作进行响应 ? 事件可由用户的动作、程序代码或系统产生 ? 对象的事件集合是固定的,用户不能创建新的事件 ? 例:Click,Keypress(抽奖) ? 方法(Method) 是对象能够执行的一个操作 ? 方法是与对象相关联的过程,也称方法程序
? 方法可由用户自己创建
? 例:Release
2012-9-8
9
6.2.1 VFP的基类
1标签 2文本框 3编辑框 4命令按钮 5命令按钮组 6选项按钮组 7复选框 8组合框 9
列表框 10微调框 11表格 12图像 13计时器 14页框 15 OLE容器控件 16 OLE绑定型控件 17线条 18形状 19容器 20分隔符* 选项按钮* 标头* 列* 页面* 自定义 控件 工具栏 表单 表单集
1-20为标准控件(控件箱中带) 绿色背景: