Программа 20.27. Использование процедур-свойств



Программа 20.27. Использование процедур-свойств

Public Property Get prsDateO As Date

prsDate = birthday End Property

Public Property Let prsDate(bthday As Date)

If bthday > #1/1/19001 And bthday < #1/1/20001 Then

birthday = bthday Else

MsgBox ("Incorrect date") End'If End Property

Но вернемся к методу bkPrint класса Book. Сейчас он не работает, поскольку обращение author.name стало бессмысленным. Для правильной работы метода необходимо заменить строку с неправильным оператором на следующую:

str = "Book title is " & title & Chr(13) & _ "Written by " & author.prsName

Таким образом, дойдя до данной строки кода, программа выполнит процедуру-свойство объекта author, т. е. prsName, которая возвращает текущее значения свойства name.

После описания процедур-свойств перейдем к заключительному аккорду в рассмотрении процедур класса: к процедурам реакции на событие. Выше мы уже упоминали о них. Напомним, что тогда мы приводили пример процедуры реакции на событие Document_ciose (реакция на событие "Закрыть документ"). Как мы упоминали, существует множество событий и множество процедур реакции на них. Но помимо встроенных процедур, пользователь вправе создавать собственные обработчики событий.

Чтобы пояснить сказанное, рассмотрим типовой сценарий жизни объекта от объявления до удаления:

1. Вход в процедуру для работы с объектом.

2. Создание ссылки на объект.

3. Создание нового объекта.

4. Работа с объектом.

5. Выход из процедуры.

Прокомментируем этот сценарий. Для человеческого глаза нет ничего особенного в этой быстротечной жизни, а для системного "всевидящего ока" произошло два очень важных события: создание объекта и его удаление (при выходе из процедуры). Более того, мы не заметили, как были выполнены две процедуры реакции на эти события: initialize и Terminate, которые, соответственно, проинициализировали и уничтожили объект. Рассмотрим их подробнее.

Когда создается объект, вызывается процедура initialize, которая всем свойствам объекта присваивает значения, определенные для них по умолчанию. Данная процедура называется конструктором. Пользователь вправе изменить эту процедуру, указав, как инициализировать свойства объекта при его непосредственном объявлении.

Когда же объект выходит из области своего действия, например из процедуры, в которой он был локально объя-влен, автоматически вызывается процедура Terminate, которая освобождает память, занимаемую объектом и ссылкой на него. Эту процедуру называют деструктором. Пользователь вправе и здесь изменить процедуру, но на практике этой возможностью пользуютсяо-чень редко.

Покажем использование процедур реакции на событие на примере класса Person. Мы ввели конструктор, инициализирующий свойства name, birthday И male.



Содержание раздела