您的位置: 网站首页 > 程序开发 > Visaul FoxPro程序设计 > 第7章 面向对象程序设计 > 【7.1 面向对象程序设计简介】

7.1 面向对象程序设计简介

 

面向对象程序设计(Object Oriented ProgrammingOOP)是一种计算机编程架构。OOP 的一条基本原则是计算机程序由单个能够起到子程序作用的单元或对象组合而成。OOP达到了软件工程的三个主要目标:重用性、灵活性和扩展性。为了实现整体运算,每个对象都能够接收信息、处理数据和向其他对象发送信息。

本章主要内容

&        面向对象程序设计的基本概念及优点

&        对象的属性、事件和方法

&        掌握常用的事件和方法

7.1  面向对象程序设计简介

面向对象程序设计方式以对象和数据结构为程序设计的中心,而不是以操作和过程为中心。OOP方式用“对象”表示各种事物,用“类”表示对象的抽象,用“消息”实现对象之间的联系,用“方法”实现对象处理的过程。

Visual FoxPro不仅支持面向对象的程序设计方式,并且提供了一系列可视化的OOP开发工具,如类设计器、表单设计器、报表设计器和菜单设计器等。

7.1.1  面向对象程序设计中的基本概念

面向对象程序设计中的概念主要包括:对象(object)、类(class)、数据抽象(data abstraction)、数据封装(data encapsulation)、继承(inheritance)、多态性(polymorphism)、动态绑定(dynamic binding)、消息传递(message passing),通过这些概念面向对象的思想得到了具体的体现。

1.对象

对象是反映客观事物属性及行为特征的描述,每个对象都具有描述其特征的属性及附属于它的行为,是面向对象编程的基本元素,是“类”的具体实例。

Visual FoxPro中,包含在应用程序中的表单及各种控件都是对象,它是包含数据和代码的实体。界面上几乎所有“事物”大多数都是对象,窗口是对象,字段是对象,命令按钮也是对象。

与一般的对象不同的是,这些对象还具有属性和方法。例如,在后面要学习的表单设计中,就可以看到表单的样式、背景颜色、表单上面的按钮和文本框等都是表单所具有的属性,所以,属性是对象的物理性质,这些性质使得这些对象变得独一无二。

但是,对象所需的不仅仅是这些属性,它们还需要方法,方法是对象可以执行的动作。例如,将表单对象打开(Open)和关闭(Close)的操作是表单所具有的方法,无需再自己写打开与关闭代码,表单所具有的内置代码或默认代码将告诉Visual FoxPro如何打开和关闭它们。

事件是对象所能识别的一个动作,可以编写相应的代码对此进行响应。事件可以由一个动作产生,如单击鼠标或按下一个键盘按键;也可以由程序代码或系统产生,如计数器溢出事件等。

面向对象的程序设计实际上是在“组装”程序,每个对象中的代码对于许多编程人员来说不一定是透明的,因为编程人员更为关心的是它的功能和接口,也就是对象所具有的属性和方法。

2.类

所谓类,就是一组对象的属性和行为特征的抽象描述。或者说,类是具有共同属性、共同操作性质的对象集合。对象和类的概念是很相近的,但是它们又不相同:类是对象的抽象描述;对象是类的实例。类是抽象的,对象是具体的。

Visual FoxPro中,类就像是一个模板,对象都是由它生成的。类定义了对象所有的属性、事件和方法,从而决定了对象的属性和行为。

事实上,对象就是类类型(class type)的变量。一旦定义了一个类,就可以创建这个类的多个对象,每个对象与一组数据相关,而这组数据的类型在类中定义。类是用户定义的数据类型,但在一个程序设计语言中,它和内建的数据类型行为相同。

3.数据抽象

数据抽象指仅表现核心的特性而不描述背景细节的行为。类使用了抽象的概念,并且被定义为一系列抽象的属性,如尺寸、重量和价格,以及操作这些属性的函数。类封装了将要被创建对象的所有核心属性。因为类使用了数据抽象的概念,所以它们被称为抽象数据类型(ADT)。

4.数据封装

封装机制将数据和代码捆绑到一起,避免了外界的干扰和不确定性。它同样允许创建对象。简单地说,一个对象就是一个封装了数据和操作这些数据的代码的逻辑实体。

在一个对象内部,某些代码和(或)某些数据可以是私有的,不能被外界访问。通过这种方式,对象对内部数据提供了不同级别的保护,以防止程序中无关部分意外的改变,或错误地使用了对象的私有部分。

5.继承性

继承是可以让某个类型的对象获得另一个类型的对象属性的方法,它支持按级分类的概念。在OOP中,继承的概念很好地支持了代码的重用性(reusability),也就是说,用户可以向一个已经存在的类中添加新的特性,而不必改变这个类。可以通过从已存在的类派生一个新类来实现,这个新的类将具有原来那个类的特性以及新的特性。

例如,在电话设计过程中,电话的基本功能是:振铃、通话、挂机等。根据个人喜好、审美观、用途等的不同,可生产出各种样式和功能的电话,但它们都继承电话基类的特征,然后有自己的属性和功能,如不同的颜色、造型以及附加的功能等。

6.多态性

多态是OOP的另一个重要概念,多态的意思是事物具有不同形式的能力。例如,对于不同的实例,某个操作可能会有不同的行为,而这个行为依赖于所要操作数据的类型。如加法的操作,如果操作的数据是数值型,则它对几个数求和;如果操作的数据是字符串,则它将连接几个字符串。

多态机制使具有不同内部结构的对象可以共享相同的外部接口,虽然针对不同对象的具体操作不同,但通过一个公共的类,它们(那些操作)可以通过相同的方式予以调用。多态在实现继承的过程中被广泛应用。

简单来说,多态机制允许通过相同的接口引发一组相关但不相同的动作,通过这种方式,可以减少代码的复杂度。在某个特定的情况下应该作出怎样的动作,这要由编译器来决定,而不需要程序员手工干预。

7.动态绑定

绑定指的是将一个过程调用与相应代码链接起来的行为。动态绑定,就是指给定的过程调用相关联的代码只有在运行期才可知,它与多态和继承的联系极为紧密。一个多态引用的函数调用取决于这个引用的动态类型。

8.消息传递

一个面向对象的程序由许多对象组成,这些对象之间需要相互沟通。因此,在面向对象程序设计语言中,程序设计的主要步骤如下:

1)创建类,这些类定义了对象及其行为。

2)由类定义创建对象。

3)建立对象之间的通信。

对象之间通过收发信息相互沟通,这一点类似于人与人之间的信息传递。

对于某个特定对象来说,消息就是请求执行某个过程,因此,消息的接收对象会调用一个函数(过程),以产生预期的结果。传递消息的内容包括接收消息的对象名字、需要调用的函数名字,以及必要的信息。

7.1.2  面向对象程序设计的优点

面向对象程序设计(OOP)具有许多优点,无论是对于程序设计者或者用户来说都是如此。面向对象为软件产品扩展和质量保证中的许多问题提供了解决办法,这项技术能够大大提高程序员的生产力,并可提高软件的质量以及降低其维护费用。

其主要的优点如下:

1)通过继承,可以大幅度减少多余的代码,并扩展现有代码的用途。

2)用户可以在标准的模块上(这里所谓的“标准”指程序员之间彼此达成的协议)构建自己的程序,而不必一切从头开始,这可以减少软件开发时间并提高生产效率。

3)数据隐藏的概念帮助程序员们保护程序免受外部代码的侵袭。

4)允许一个对象的多个实例同时存在,而且彼此之间不会相互干扰。

5)允许将问题空间中的对象直接映射到程序中。

6)基于对象的工程可以很容易地分割为独立的部分。

7)以数据为中心的设计方法允许用户抓住可实现模型的更多细节。

8)面向对象的系统很容易从小到大逐步升级。

9)对象间通信所使用的消息传递技术与外部系统接口部分的描述更简单。

10)更便于控制软件复杂度。