Visual Basic 6. Руководство разработчика

       

Тестирование класса


CTimer

Компонент ActiveX (типа DLL) CTimer не может быть проверен сам по себе. Модуль класса предоставляет свои объекты другим приложениям, но он не может выполняться сам. Обычно, компилируется модуль класса, а затем открывается новый проект, который будет ссылаться на только что созданный класс. Для упрощения тестирования компонента ActiveX Visual Basic позволяет создавать группы проектов. Другими словами, можно расположить компонент ActiveX и проект, который его тестирует, в одной группе проектов. Для добавления тестового проекта к проекту CTimer следуйте следующим рекомендациям.

1. Добавьте новый проект командой Add Project меню File. Visual Basic добавит новую папку Project 1 в окно проводника проекта и поместит в нее форму Project I - обычный проект Visual Basic.

2. Измените имя нового проекта на TestProject, а имя его формы — на TestForm.

3. Расположите элементы управления, изображенные на рис. 15.1, на форму TestForm.

4. Для правильного использования класса CTimer в проекте тестирования необходимо сначала добавить ссылку на класс. Откройте меню Project и выберите команду References (Ссылки). В диалоговом окне References выберите пункт TimerProject, как показано на рис. 15.2. Диалоговое окно References отображает имя проекта, а не имя класса.

Рис. 15.2. Добавление класса CTimer к проекту с использованием диалогового окна References

Совет

Если проект еще не сохранен, то, вероятнее всего, отображается имя Project 1 (которое является именем проекта по умолчанию). Не добавляйте ссылку на это имя в проект. Переименуйте компоненты проекта, запишите их в новую папку, затем добавьте ссылку. Это не означает, что нельзя добавить ссылку на Project 1. Однако позже, открывая в очередной раз диалоговое окно Reference, тяжело будет вспомнить, что собой представляет класс Project 1.

5. Затем откройте окно Code формы и введите строки программы 15.4.

Программа 15.4. Код формы CTimer

Dim TMR As New CTimer



Private Sub Coirimandl_Click ()

If Command1.Caption - "Start Timing" Then


' (Запустить таймер)

TMR.StartCounting

Command1.Caption = "Stop Timing"     ' (Остановить таймер)

Else

TMR.StopCounting

Commandl.Caption = "Start Timing" ' (Запустить таймер)

     End If

End Sub

Private Sub Command2_Click()

ETime =

TMR.ElapsedTime

MsgBox "I've been counting for " & vbCrLf & _

Hour(TMR.ETime) & " hours" & vbCrLf & _

Minute(TMR.ETime) & " minutes and" & vbCrLf & _

Second(TMR.ETime) & " seconds" & bCrLf

' (С начала отсчета прошло... часов... минут и...    секунд)

End Sub

Private Sub Commands Click()

End

End Sub

6. Щелкните правой кнопкой мыши на имени TestProject в окне проводника проекта и выберите команду Set as StartUp. В результате TestForm будет отображаться при нажатии клавиши F5.

Запустите проект на выполнение и изучите класс CTimer. Нажмите кнопку StartTimer для запуска таймера. Заголовок кнопки изменится на StopTimer, и если нажать ее снова, то отсчет времени остановится. Остановите таймер и запустите его снова В любой момент можно получить затраченное время, но его считывание будет корректным только тогда, когда таймер остановлен. Если исследовать код класса, то можно увидеть, что значение переменной totallnterval обновляется каждый раз, когда таймер останавливается.

Код проекта TestProject

Давайте рассмотрим программный код проекта TestProject. Первая строка — это объявление объектной переменной:

Dim TMR As New CTimer

TMR это переменная объектного типа CTimer. CTimer — это новый класс, который был только что реализован. Объектная переменная нужна для доступа к методам класса CTimer точно так же, как и для доступа к методам и свойствам Wold. Ключевое слово New указывает Visual Basic создавать новый экземпляр объекта CTimer (взамен можно использовать функцию Create0bject(), но об этом позднее). Теперь код имеет доступ к свойствам и методам, которые предоставляет класс CTimer посредством объектной переменной TMR. После ввода имени объектной переменной с точкой в конце, в окне кода появится список ее членов. Эта возможность предоставляется тогда, когда установлено свойство AutoList Members редактора программного кода. Новый класс зарегистрирован, и Visual Basic обращается с ним как с любым другим классом.

Программный код, обрабатывающий кнопки приложения, тривиален. Кнопка Start/Stop вызывает методы StartCounting и StopCounting класса для запуска и остановки процесса отсчета времени. Кнопка Show Interval считывает значение свойства ElapsedTime, форматирует его в часы, минуты и секунды и отображает в окне сообщения.


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