Семейство классов и процедуры - свойства
Когда создается семейство классов, без свойств - участников не обойтись. В классах семейства, основанных на механизме встраивания, обязательно есть свойства, представляющие собой объекты. Эти свойства, как и терминальные, обычно, закрываются и для работы с ними используются процедуры - свойства Property Set и Property Get. Иногда приходится передавать и дополнительные параметры при работе с ними. Рассмотрим типичный пример. Ранее мы построили класс "Личность", теперь построим класс "Группа", содержащий группу личностей. При построении этого класса ограничимся минимальными средствами, необходимыми для демонстрации работы со свойствами:
Пример 4.4.
(html, txt)
Массив объектов класса "Личность" является закрытым свойством класса "Группа". Процедуры - свойства Property Get ЧленГруппы и Property Set ЧленГруппы обеспечивают доступ к элементам этого массива. Индекс элемента является дополнительным параметром. Заметьте, процедура Set имеет статус Write-once, - если элемент с заданным номером уже определен в группе, то он не переопределяется. При создании этих процедур, нам, конечно же, пришлось модифицировать стандартные заготовки Let и Get. Для полноты картины приведем процедуру, в которой показано, как работать с группой:
Public Sub WorkWithGroup() Dim UserOne As New Личность Dim UserTwo As New Личность Dim UserThree As New Личность Dim Знакомые As New Группа Dim NewUser As New Личность 'Личности UserOne.InitPerson FN:="Петр", LN:="Петров", DoB:=#1/23/1968# UserTwo.InitPerson FN:="Анна", LN:="Козлова", DoB:=#7/21/1968# UserThree.InitPerson FN:="Анна", LN:="Керн", DoB:=#5/17/1803# 'Группа Set Знакомые.ЧленГруппы(1) = UserOne Set Знакомые.ЧленГруппы(2) = UserTwo Set Знакомые.ЧленГруппы(1) = UserThree Set Знакомые.ЧленГруппы(3) = UserThree Set NewUser = Знакомые.ЧленГруппы(7) Set NewUser = Знакомые.ЧленГруппы(3) Знакомые.Сведения
End Sub
Не останавливаясь на тех диалогах, которые будут появляться по ходу выполнения, приведем результаты печати сведений о наших старых знакомых:
Петр Петров родился 23.01.68 Анна Козлова родилась 21.07.68 Анна Петровна Керн родилась 17.05.1803
Мы уже говорили о том, что классы могут выступать в роли привлекательной упаковки при работе со служебными функциями. Такую же "упаковочную" роль они могут играть и при работе со встроенными объектами. Свойствами такого класса могут быть, например, элементы управления, - списки, кнопки. Класс - упаковка позволит обращаться к методам и свойствам объекта, может быть в более привлекательной для конечного пользователя форме. Кроме того, в классе могут быть определены и дополнительные свойства и методы, расширяющие стандартные возможности.
Без процедур - свойств можно обойтись, заменив их обычными методами класса. Правда, такая замена приведет, обычно, к некоторой потере эффективности. Но методы являются основным способом работы с данными (свойствами), определяя поведение объектов класса.
Индекс элемента является дополнительным параметром. Заметьте, процедура Set имеет статус Write-once, - если элемент с заданным номером уже определен в группе, то он не переопределяется. При создании этих процедур, нам, конечно же, пришлось модифицировать стандартные заготовки Let и Get. Для полноты картины приведем процедуру, в которой показано, как работать с группой:
Public Sub WorkWithGroup() Dim UserOne As New Личность Dim UserTwo As New Личность Dim UserThree As New Личность Dim Знакомые As New Группа Dim NewUser As New Личность 'Личности UserOne.InitPerson FN:="Петр", LN:="Петров", DoB:=#1/23/1968# UserTwo.InitPerson FN:="Анна", LN:="Козлова", DoB:=#7/21/1968# UserThree.InitPerson FN:="Анна", LN:="Керн", DoB:=#5/17/1803# 'Группа Set Знакомые.ЧленГруппы(1) = UserOne Set Знакомые.ЧленГруппы(2) = UserTwo Set Знакомые.ЧленГруппы(1) = UserThree Set Знакомые.ЧленГруппы(3) = UserThree Set NewUser = Знакомые.ЧленГруппы(7) Set NewUser = Знакомые.ЧленГруппы(3) Знакомые.Сведения
End Sub
Не останавливаясь на тех диалогах, которые будут появляться по ходу выполнения, приведем результаты печати сведений о наших старых знакомых:
Петр Петров родился 23.01.68 Анна Козлова родилась 21.07.68 Анна Петровна Керн родилась 17.05.1803
Мы уже говорили о том, что классы могут выступать в роли привлекательной упаковки при работе со служебными функциями. Такую же "упаковочную" роль они могут играть и при работе со встроенными объектами. Свойствами такого класса могут быть, например, элементы управления, - списки, кнопки. Класс - упаковка позволит обращаться к методам и свойствам объекта, может быть в более привлекательной для конечного пользователя форме. Кроме того, в классе могут быть определены и дополнительные свойства и методы, расширяющие стандартные возможности.
Без процедур - свойств можно обойтись, заменив их обычными методами класса. Правда, такая замена приведет, обычно, к некоторой потере эффективности.Но методы являются основным способом работы с данными (свойствами), определяя поведение объектов класса.