VB6.0中類聚集關系的實現
發表于:2007-07-14來源:作者:點擊數:
標簽:
作者:武漢交通科技大學 楊青 劉洪星 ---- 類之間最主要的關系有兩種,它們是聚集(Aggregation)和繼承(Generelization)。聚集表示類之間的關系是整體與部分的關系,例如一個家庭有一個父親、一個母親和若干個孩子。類之間的聚集關系又稱包含關系,一個類
作者:武漢交通科技大學 楊青 劉洪星
---- 類之間最主要的關系有兩種,它們是聚集(Aggregation)和繼承(Generelization)。聚集表示類之間的關系是整體與部分的關系,例如一個家庭有一個父親、一個母親和若干個孩子。類之間的聚集關系又稱包含關系,一個類由若干個其他類組合而成,當該類的實例被創建后,組成它的各類的實例將自動被創建。
---- 下圖描述了Family類與組成它的各類之間的關系。Family類與Father類、Mother類的關系是一對一的關系,而Family類與Child類的關系是一對多的關系。為了簡化類之間的關系,我們增加了一個Children類,Children類是Child類的集合,因此Family類與Children類直接關聯,形成一對一的關系。
Family------------ > Father
|
-------- > Mother
|
-------- > Childred ------ >child
----
VB6.0對類聚集關系的實現提供了較好的支持。在下面的程序中,我們僅給出了與Falimy類、Children類、Child類的具體實現有關的代碼,以此為例說明類聚集關系的實現方法。
---- 程序中定義了三個類模塊:Falimy類模塊,Children類模塊,Child類模塊。在Falimy類模塊中,利用屬性過程,Mother類、Father類、Children類被定義為Family類的只讀屬性。下面是Family 類模塊中聲明部分的代碼。
Option Explicit
Private mFather As New Father
Private mMother As New Mother
Private mChildren As New Children
Public Property Get Father() As Father
Set Father=mMother
End Property
Public Property Get Mother()As Mother
Set Mother()=mMother
End Property
Public Property Get Children() As Children
Set Children= mChildren
End Property
---- 下面是Children類模塊的代碼,首先在類模塊的說明部分創建了集合類Collection的實例mcolChildren。在定義公共方法Add時,通過引用mcolChildren的Add方法將新的Child 對象添加到集合中,Children類被定義成Child類的集合。通過直接引用mcolChildren的屬性Count定義了Children類的公共屬性Count,通過直接引用mcolChildren的方法Item定義了Children類的公共方法Item。
---- 我們還可以根據需要實現其他的屬性和方法。通過創建Children類,與Children類有關的所有代碼都封裝起來,使得Children類可以進一步重用,從而較好地體現了
面向對象程序設計的原則。
Option Explicit
Private mcolChildren As New Collection
Public Property Get Count() As Long
Count = mcolChildren.Count
End Property
Public Function Add(ByVal Name As String,
ByVal BirthDayAs Date,ByVal Sex As Boolean ) As Child
Dim empNew As New Child
Static intNum As Integer
With empNew
intNum = intNum + 1
.Name = Name
.BirthDay= BirthDay
.Sex=Sex
mcolChildren.Add empNew
End With
Set Add = empNew
End Function
Public Function Item(ByVal Index As Vari
ant) As Child
Set Item = mcolChildren.Item(Index)
End Function
---- 下面是Child類聲明部分的代碼。
Option Explicit
Public Name As String
Public BirthDay As Date
Public Sex As Boolean
---- 程序中還定義了一個窗體模塊。在窗體上布置有三個文本框txtName、txtBirthDay、txtSex,一個列表框lstChildren,兩個命令按紐cmdAddChild、cmdListChild。
---- 在窗體模塊中首先創建了一個Family類的實例sbMain,Children類和Child類的實例也隨之被創建。在事件過程中,僅通過引用sbMain的屬性Children,我們就可以實現對Children類的各種操作。
Option Explicit
Public sbMain As New Family
Private Sub cmdAddChild_Click()
sbMain.Children.Add txtName.Text,
txtSalary.Text,txtSex.Text
txtBirthDay.Text = " "
txtName.Text = " "
txtSex.Text=" "
End Sub
Private Sub cmdListChild_Click()
Dim emp As New Child
Dim i As Long
lstChild.Clear
For i = 1 To sbMain.Children.Count
Set emp = sbMain.Children.Item(i)
lstChild.AddItem emp.Name & ", "
& emp.BirthDay&", "emp.Sex
Next
End Sub
原文轉自:http://www.anti-gravitydesign.com