VB6.0中类聚集关系的实现
-类之间主要有两种关系,它们是聚合和继承。它表明聚合类之间的关系是整体和部分的关系,例如,一个家庭有一个父亲,一个母亲和几个孩子。类之间的聚合关系也称为包含关系。一个类由几个其他类组成。当创建类的实例时,将自动创建组成它的各种类的实例。
-下图描述了Family类和组成它的类之间的关系。家庭和爸爸妈妈是一对一的关系,而家庭和孩子是一对多的关系。为了简化类之间的关系,我们添加了一个Children类,它是Children类的集合,因此Family类与Children类直接相关,形成了一对一的关系。
家庭->父亲
|
-->母亲
|
-->子女->子女
- VB6.0为类聚合关系的实现提供了很好的支持。在下面的程序中,我们只给出Falimy类、Children类和Child类的具体实现相关的代码,以此为例说明类聚合的实现方法。
-程序中定义了三个类模块:Falimy类模块、Child类模块和Child类模块。在Falimy类模块中,母亲类、父亲类和子女类通过使用属性进程被定义为家庭类的只读属性。下面是Family类模块中声明部分的代码。
option Explicit
Private m Father As New Father
Private m Mother As New Mother
Private m Children As New Children
Public Property Get Father()As Father
Set Father
End Property
Get Mother()As Mother
Set Mother
End Property
Public Property Get Children()As Children
Set Children
End Property
-下面是子类模块的代码。首先,在类模块的描述部分创建集合类Collection的实例mcolChildren。定义公共方法Add时,通过引用mcolChildren的Add方法向集合中添加一个新的子对象,并将Children类定义为子类的集合。子类的公共属性计数通过直接引用mcolChildren的属性计数来定义,子类的公共方法项通过直接引用mcolChildren的方法项来定义。
-我们还可以根据需要实现其他属性和方法。通过创建子类,封装了所有与子类相关的代码,使得子类进一步可重用,从而更好地体现了面向对象编程的原则。
option Explicit
Private mcol children作为新集合
Public Property Get Count()As Long
Count = mcol children。count
End Property
Public Function Add(ByVal Name为字符串,
ByVal birth days为日期,ByVal Sex为布尔值)为子级
Dim empNew为新子级
Static intNum为整数
With EMP New
intNum = intNum+1
。Name = Name
。生日=生日
。Sex=Sex
mcolChildren。Add EMP new
End With
Set Add = EMP new
End Function
Public Function Item(ByVal Index为Variant)为Child
Set Item = mcol children。Item(Index)
结束函数
-下面是子类声明部分的代码。
Option Explicit
Public Name As String
Public birth As Date
Public Sex As Boolean
-程序中还定义了一个表单模块。窗体上有三个文本框txtName、txtBirthDay和txtSex,一个列表框lstChildren,以及两个命令按钮cmdAddChild和cmdListChild。
-在表单模块中,首先创建家族类sbMain的实例,同时还创建了子类和子类的实例。在事件过程中,我们只需要引用sbMain的属性Children就可以实现对Children类的各种操作。
option Explicit
Public sb main As New Family
Private Sub cmdAddChild _ Click()
sb main。儿童。添加txtName。Text,
txtSalary。文本,txtSex。Text
txtBirthDay。Text = " "
txtName。Text = " "
txtSex。text = " "
End Sub
Private Sub cmdlist Child _ Click()
Dim EMP As New Child
Dim I As Long
lst Child。清除
I = 1至sbMain。Count
Set emp = sbMain。第(I)项
第一个孩子。附加项目emp。Name & ","
& emp。生日&“,”emp。sex
Next
End Sub
0条评论