精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>● VB和Basic>>〓〓..技术文章连载..〓〓>>跟我学用VB的类(系列)>>(转)跟我学用VB的类(系列)之第一天

主题:(转)跟我学用VB的类(系列)之第一天
发信人: pack27()
整理人: gzwsh(2001-05-12 22:56:12), 站内信件
第一天:类的概念 

作者:黄河 

当您第一次看到“类”这个概念时,可能会觉得摸不着头脑。我们先看一点我们熟悉的东西: 
    在VB控件工具箱中的CommandButton,这是VB中的按钮控件,是我们在VB程序中经常用到的基本控件。我们在学习VB的类之前,单纯地就把它看成一个控件,其实,用类的观点,它就是一个类。我们知道,所有CommandButton都有相同的属性选项,尽管对于画到窗体上去的每个按钮,这些属性的值可能不同;它们也都有相同的事件,尽管我们对画到窗体上的每个按钮的这些事件地处理可能不同;它们也都有不同的方法,尽管我们调用每个画到窗体上的按钮的方法的目的不同。但,所有的窗体中的按钮都是CommandButton这一类控件。 
    我们新建一个窗体,从控件工具箱中选中CommandButton并画到窗体上,这时,窗体上就有了一个我们非常熟悉的Command1这个按钮。我们看看Command1这个东西,按照类的观点,它现在不能再叫做一个CommandButton控件(类)了,而叫做一个按钮,是CommandButton这个控件(类)的实例。所谓实例就是被具体化的类的一个形态,它有自己的属性,如高度和宽度,有自己的位置和大小,有自己的Caption和Name;它有自己的方法,如Move,当我们用Command1.Move这个方法时,谁都知道,只会移动Command1;它有自己的事件,如Click事件,当我们对Command1_Click进行代码编写后,只有Command1会调用我们对这个事件编写的代码。每当我们在这个窗体上新画一个CommandButton,就新产生一个CommandButton的实例,每个新产生的按钮,都有自己的个性,但它们不会有CommandButton这个类所包含的属性项目以外的选择,比如Command1绝对不会有Max属性。 
    我们再看第二个例子,这个例子我想跳出VB的范围,回到生活中来。比如我们常说,程序员是一类人,在这里,我们把程序员这类人就叫做一个类。这个类有一些属性,比如Name(姓名)、EmpolderTool(使用的开发工具);这个类有一些方法,比如Empolder(开发)、Study(学习);也同样有一些事件,比如EmpolderSucceed(开发成功)、EmpolderLost(开发失败)。 
    我们现在来创建一个程序员类的实例,好让他可以做点事情。(要记住,没有实例化的类,只是一种概念上的东西,这种东西是什么也不能做的,就象日常生活中我们所见到的一样:程序员可以开发软件,但软件是由明确的属于这个类的一个实例开发出来的,比如求伯君写的WPS,求伯君是程序员这个类的一个实例,而不是这个类本身)。下面的代码是标准的VB代码,但却是还没有实际意义的代码——因为您不要指望这段VB代码中的程序员类能为您写出一个VB程序来。 
Option Explicit 
'定义一个对象变量,并指定这个变量属于这个类 
'WithEvents使这个对象能响映事件 
Dim WithEvents MyDeveloper As cDeveloper 

Private Sub Form_Load() 
    Set MyDeveloper = New cDeveloper  '这句一定要,这是初始化这个对象 
    With MyDeveloper 
        .Name = "求伯君"            '这个程序员叫做求伯君 
        .EmpolderTool = "C++"       '这个程序员用C++进行开发 
        .Empolder                   '调用Empolder方法使这个程序员进行开发工作 
    End With 
End Sub 
'如果开发失败,则产生EmpolderLost这个事件 
Private Sub MyDeveloper_EmpolderLost() 
    With MyDeveloper 
        .Study          '如果开发失败,就让这个程序员进行学习 
        .Empolder       '学习后再次进行开发 
    End With 
End Sub 
'如果开发成功,则这个程序员成为一个优秀的程序员 
Private Sub MyDeveloper_EmpolderSucceed() 
    MsgBox "开发成功了!" & MyDeveloper.Name & _ 
"成为了一个优秀的程序员", vbInformation, "恭喜" 
End Sub 

    我不知道该不该拿求伯君他老人家来举例,但我想,他老人家开发WPS时一定没有我写这段代码这样简单。如果这段代码您有什么不明白,没有关系,我在以后的例子中会进一步说明的,或者您也可以查查MSDN,当类,不要去查Study、.Empolder、EmpolderTool、cDeveloper这些东西,因为cDeveloper这个类和它的属性、方法和事件本来就是我想出来的,在MSDN中根本找不到对这些内容的支持。您最多能找到WithEvents这些肉容的帮助。 
    好了,我举了两个例子,您对类的概念应该有些认识了吧。它就是一类对象的抽象后的集合——我不知道这个定义是否是标准的,但我是这样理解的,好在这种理解并没对我在实际编写含有类模块的程序时遇到过什么麻烦。 

    这贴就到这里,在下一贴中,我将和您一起建立一个简单的类。 


(未完待续) 



----
......
不想想起偏更记起
假装开心心更悲
辗转翻侧因为你起
愿你不是你
......
可捒选不恋上你么
可捒选不想你么
种种捒选可以许多
若我不是我
...... 

[关闭][返回]