Книга: Excel. Трюки и эффекты
Свойства класса
Свойства класса
Свойства для классов в VBA могут быть реализованы двумя способами. Первый способ – это использование в модуле класса общих переменных-членов (объявленных с атрибутом Public). Добавим таким способом свойство в созданный ранее класс Class1, в котором будет храниться строка с описанием данных, содержащихся в объекте-экземпляре этого класса:
Public strTag As String
Такой способ реализации свойств является самым простым, однако в нем не предусмотрена возможность контролировать правильность задания параметра и осуществлять какие-либо действия при изменении его значения. Для решения этой проблемы можно использовать второй способ – создание процедур и функций, которые выполняются при установке и получении значений свойств соответственно. Для этих целей в модуле класса применяются обычные объявления процедур и функций, в которых используется ключевое слово Property.
Для получения значения свойства предназначена функция, объявленная с использованием Property Get:
[Public | Private] [Static] Property Get Имя_свойства ([Аргументы]) _
[As Имя_типа]
[Инструкции]
[Имя_свойства = Выражение]
[Exit Property]
[Инструкции]
[Имя_свойства = Выражение]
End Property
Для присвоения значения свойству, не являющемуся ссылкой на объект, предназначена процедура, объявленная с использованием Property Let:
[Public | Private] [Static] Property Let Имя_свойства ([Аргументы,]Значение)
[Инструкции]
[Exit Property]
[Инструкции]
End Property
Для присвоения значения свойству, являющемуся ссылкой на объект, предназначена процедура, объявленная с использованием Property Set:
[Public | Private] [Static] Property Set Имя_свойства ([Аргументы,]Значение)
[Инструкции]
[Exit Property]
[Инструкции]
End Property
Использование процедур и функций с ключевым словом Property очень удобно для создания свойств только для чтения (для этого свойства не реализуются Property Let и Property Set) и свойств только для записи (не реализуется Property Get).
Разберем реализацию свойств ObjectRef и ObjectType для рассматриваемого класса Class1 (частная переменная-член objRef используется для хранения установленной ссылки на объект):
Private objRef As Object
Property Set ObjectRef(objNewRef As Object)
' Задание ссылки хранимого объекта
Set objRef = objNewRef
End Property
Property Get ObjectRef() As Object
' Возврат ссылки на хранимый объект
Set ObjectRef = objRef
End Property
Property Get ObjectType() As String
' Возврат имени типа хранимого объекта
ObjectType = TypeName(objRef)
End Property
- 9.7.1. Определение подкласса
- Определение членов класса
- Доступ к свойствам файла
- Пример диалога Свойства
- Форма и свойства инвариантов класса
- Свойства класса Employee
- 9.1. Классы и прототипы
- Абстрактный базовый класс FileSystemInfo
- Предусловия и постусловия
- Пользовательские объекты
- 2. Лекция: Основы объектно-ориентированного программирования
- Статические члены