Реализуем этот же проект, но с использованием модуля класса. Модуль класса полностью скрывает детали реализации. Он предоставляет через свой интерфейс некоторые функциональные возможности, и разработчику больше не нужно просматривать или редактировать его исходный программный код.
Предупреждение
При попытке открыть проекты примеров с компакт-диска (или из папки диска, куда они были скопированы), появится сообщение об ошибке, означающее, что проект ссылается на компонент, который недоступен. Каждый проект из этой главы создает новый класс, который неизвестен системе. Проигнорируйте это сообщение, откройте проект и добавьте к нему ссылку на класс.
Сохраните существующий проект и начните новый (это будет проект CTIMER из папки для этой главы на компакт-диске). Чтобы создать новый класс сделайте следующее:
1. В диалоговом окне New Project выберите ActiveX DLL. Visual Basic добавит папку Class Modules в окно Project Explorer, а в нее - модуль класса. Модуль класса называется по умолчанию Class 1. Проект ActiveX DLL не имеет форм.
2. Измените свойство Name модуля класса на CTimer.
3. Для нового компонента будет отображено окно Code, так как модуль класса не имеет визуального интерфейса.
4. Введите строки программного кода 15.3 в окно Code модуля классов.
Программа 15.3. Код класса CTimer
Dim totallnterval As Double
Dim Tl As Double
Public Sub StartCounting ()
Tl = Time
End Sub
Public Sub StopCounting()
totallnterval = totallnterval + Time - Tl
End Sub
Property Get ElapsedTime () As Double
ElapsedTime = totallnterval
End Property
Public Sub ResetTimer()
totallnterval - 0
End Sub
Содержимое модуля классов очень напоминает содержимое обычного модуля, но не имеет общедоступных переменных. Переменная totallnterval не должна быть доступной из какой-либо процедуры за пределами модуля класса. Ее значение может быть прочитано только с использованием процедуры ElapsedTime(). Необходимо отметить, что это специальный тип процедуры, называемый Property Get (Получить свойство). Каждый раз, когда приложение пытается прочитать значение переменной totallnterval, вызывается процедура ElapsedTime(). Ее код считывает значение локальной переменной totallnterval