Основы офисного программирования и язык VBA


Семейство классов и процедуры - свойства


Когда создается семейство классов, без свойств - участников не обойтись. В классах семейства, основанных на механизме встраивания, обязательно есть свойства, представляющие собой объекты. Эти свойства, как и терминальные, обычно, закрываются и для работы с ними используются процедуры - свойства Property Set и Property Get. Иногда приходится передавать и дополнительные параметры при работе с ними. Рассмотрим типичный пример. Ранее мы построили класс "Личность", теперь построим класс "Группа", содержащий группу личностей. При построении этого класса ограничимся минимальными средствами, необходимыми для демонстрации работы со свойствами:

'Класс Группа Личностей Const РазмерГруппы As Byte = 25 'Свойства Private Group(1 To РазмерГруппы) As Личность

'Процедуры-свойства Public Property Get ЧленГруппы(num As Byte) As Личность 'Если номер корректен If (num >= 1) And (num <= РазмерГруппы) Then 'Если существует в группе личность с таким номером If Not (Group(num) Is Nothing) Then Set ЧленГруппы = Group(num) Else: MsgBox ("В группе нет человека с номером " & num) End If Else: MsgBox ("Некорректно задан номер в группе - " & num) End If End Property

Public Property Set ЧленГруппы(num As Byte, NewValue As Личность) 'Если номер корректен If (num >= 1) And (num <= РазмерГруппы) Then 'Если в группе нет личности с таким номером, то она создается If Group(num) Is Nothing Then Set Group(num) = NewValue Else: MsgBox ("В группе уже есть человек с номером " & num) End If Else: MsgBox ("Некорректно задан номер в группе - " & num) End If End Property

Public Sub Сведения() Dim i As Byte For i = 1 To РазмерГруппы If Not (Group(i) Is Nothing) Then Group(i).PrintPerson End If Next i End Sub

Пример 4.4.

Массив объектов класса "Личность" является закрытым свойством класса "Группа". Процедуры - свойства Property Get ЧленГруппы и Property Set ЧленГруппы обеспечивают доступ к элементам этого массива.


Начало  Назад  Вперед