部件和使用 Visual Basic 编写的其它应用程序只有一点不同:即部件工程至少有一个公共类,该公共类使客户端应用程序能够创建对象。
和其它 Visual Basic 应用程序一样,部件也可以有大量的类模块用于封装其内部功能。如果允许客户端创建一个类的实例,且由该类产生的对象可被客户端操作,则该应用程序就是一个部件。
可以从“工程”菜单选择“添加类模块”、“添加用户控件”或“添加用户文档”来定义一个新的公共类。“工程”菜单中的其它选项允许添加应用程序中要用到的对象,但只有 UserControls、UserDocuments 和类模块才能定义公共类。
所添加的每一个公共类都将作为对象模型中的一种公共对象的蓝本。可以通过设定类名、定义类的接口和设置 Instancing 属性(有时是 Public 属性)来确定如何从该类创建对象。
要仔细挑选类名。类名应当简短而又具有描述性,应使用每个首字母都大写的完整单词构成─ 例如,BusinessRule。
类名与部件名组合产生一个完整限定类名,也称之为编程 ID 或 ProgID。例如,由 Finance 部件提供的 BusinessRule 类的完整限定类名是 Finance.BusinessRule。
本章前面的“命名的学问”,概述了给类、属性和方法命名的规则。
一个类的缺省接口由类中所定义的属性和方法组成,这将在本章后面的“给类添加属性和方法”详述。
类的缺省接口是调入接口,调入接口在“多态性、接口、类型库和 GUIDs”中说明。也可以按照“给类添加事件”中所描述的添加调出接口或事件。
Visual Basic 在部件编译后创建类型库,且类型库中包含了关于类模块的缺省接口和调出接口的信息。
详细信息 可以按照“通过接口的实现提供多态性”中所描述的为一个类实现附加调入接口。
UserControl 类具有 Public 属性,确定该类是公共的还是私有的。UserDocument 类总是公共的。这将在深入介绍 ActiveX 控件和文档的章节中介绍,即“建立 ActiveX 控件”和“建立 ActiveX 文档”。
类模块的公共生命期更复杂,由 Instancing 属性控制。对部件要提供给其它应用程序的每一个类,应将其 Instancing 属性设置为除 Private 以外的任何值。这将在相关的主题“ActiveX 部件提供的类的实例化”中详述。
没有必要把所有的类都设为公共的;如果存在只在部件内使用的对象,可以将这个类模块的 Instancing 属性设置为 Private。(对于 UserControl,则设置 Public 属性为 False)。
下列主题详细介绍了关于 Visual Basic 工程中类的特性。
详细信息 Visual Basic 中的类模块在《Visual Basic 程序员指南》的“用对象编程”一章介绍。有关类模块、ActiveX 控件和 ActiveX 文档中定义的类的特定主题在“建立代码部件”、“建立 ActiveX 控件”和“建立 ActiveX 文档”中深入介绍。对象模型在本章后面的“组织对象:对象模型”中详述。