接触过计算机高级语言的人都听说过面向对象编程(即OOP),但究竟什么是面向对象编程呢?这个问题就不是刚刚接触计算机的初学者所能完全理解的了.为了帮助大家理解面向对象的编程,我们这里用VB作为开发工具,以一个相对较小的例子来看一看VB中怎样使用面向对象的编程方法。
什么是面向对象的编程方法呢? 总的说来面向对象的编程方法的核心就是:封装性、继承性和多态性。下面我们作一个简单的介绍:
封装性也就是说要将对象的信息(也就是对象的属性)和对象所能执行的动作(也就是对象的方法)包装起来,这样就可以让使用者可以用深入不了解内部的运作原理,就可以对其进行操作。举个简单的例子,在VB中我们要使用的一个控件,我们不必了解其中给一个属性是怎样传给对象的,也不要知道当我们调用一个对象控件的方法时,对象在其中为我们作了些什么,我们所要作的仅仅是要符合它的使用规范对其进行简单的使用即可。
继承性则是说,一个对象可以在一个或多个已有对象的基础上,通过继承这些对象具有的属性,方法和事件,并添加自己的属性方法和事件,使其功能更加强大。而其中对已有对象的属性,方法和事件的拥有,就是继承性的精髓所在。比如在V B中有一个TEXTBOX控件可以处理简单的文本信息,同时还有一个RICH TEXTBOX控件,很明显后一个控件是在前一个的基础上建立起来的,但在功能上后一个除了具备前一个控件的功能外,还具有远远强于前者的更加丰富的功能。
多态性,简单的说,就是在许多种不同的对象中,可以使用相同的方法,但是同样的方法能为各个对象执行不同的任务.也就是说程序能在运行时根据不同的对象,运行是用于当前对象的方法.例如,几乎所有的控件都包含一个move方法.当一个控件调用这个方法时,程序能够准确的知道是那一个控件在使用这个方法,从而执行此控件特定的任务.
可以看到面向对象的编程方法关键就是为了提高代码的可重用性,从而减少代码的长度,减轻程序员的负担。
那么在VB中怎样进行面向对象的编程呢?其实说出来也很简单。在V B的工具箱中的每一个控件从实质上说都是一个类,其中包含了这个类的所有的属性,事件和方法。当你将一个控件放置在V B工程的窗体上时,开发工具自动为你创建这个控件类的一个实例,通过这个实例你可以方便的使用它的另一种属性,事件和方法。另一种,就是不使用可见的控件而是从“工程”中“引用”一个类的,并在代码中显示的定义这个类的一个实例,就可以想用控件一样对其属性,事件和方法进行灵活的控制了。
我们这篇文章将用类的方法完成一个扫雷游戏的编写,更主要的是在其中我们可以看到怎样建立一个自己的类,以及在工程中使用这个类。
一、我们现来看一看怎样建立一个类 在VB中建立一个类要使用Class Module(类模块).一个类模块相当于一个简单的程序对象.当一个类模块建立起来后,我们就可以在程序的其他窗体中,定义一个类的实例,然后就像使用一个对象一样访问它的属性,调用它的方法.下面是一个简单的例子.
对于扫雷游戏来说,每一个地雷都有一个位置,这些地雷按位置紧密排列在窗体上,所以我们可以先建立一个包含地雷x , y轴位置的类.具体过程如下:
1、创建一个类模块。首先在v b的[工程]菜单上选择[添加类模块]。这样就在工作区中显示了一个新的类模块,其默认的名字为Class1,如下图所示:
2、设定类的属性和事件。当建立一个新的类之后,就需要设定类的三个属性值。
属性:
Name属性:也就是类的名字,可以在程序中区别于其他的类。
Public属性:用来确定该类在当前的项目之外能否被其他程序使用。只有两个值:True和False。当该属性值为True时,其他应用程序可以对该类进行某种类型的访问。其访问类型由下面的Instancing决定。当该属性值被设置为False时,表示该类只能在定义类的程序中使用。
Instancing属性:用来确定其他的应用程序何时能够访问该类。该属性只有在Public属性设置为true时才起作用。(不是太重要,我们省略)
事件:类模块主要有两个事件:Initialize和Terminate。在创建类的时候,我们可以在这些事件中添加代码,这样就可以在类的实例被创建或被析构时使程序采取一些动作。类似于C/C++中的构造函数和析构函数。
在这里我们主要修改了新类的Name属性:设置为clsCoords,这样我们就可以用这个名字来作为类的名字,定义它的实例,并访问它的属性和事件了.如下图所示: