Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

2920

.pdf
Скачиваний:
1
Добавлен:
15.11.2022
Размер:
2.61 Mб
Скачать

2.4. Создание интерфейса класса в ActiveX DLL

Объект "стул" имеет некоторые атрибуты: цвет, высота, наличие или отсутствие колес. Эти атрибуты можно присоединить к классу в виде свойств. Ниже показано, как расширить класс clsChair добавлением свойства color.

1.Выберите команду Tools\Add Procedure (Сервис\Добавить процедуру).

2.Введите имя свойства в текстовом поле Name (Имя) (см. рис. 3.32).

3.В области Type (Тип) выберите Property (Свойство).

4.В области Scope (Область) выберите Public (Общая).

5.Нажмите на клавишу OK, и в соответствующем окне отобразится код, представляющий структуру свойств

Let и Get.

Рис. 3.32. Диалоговое окно Add Procedure (Добавление процедуры)

2.5. Браузер объектов

Свойством называется специальная пара функций, предназначенных для эмуляции одного атрибута класса при использовании класса другой программой. Одна из функций предназначена для считывания значения, а другая – для записи

201

значения. Нажмите на клавишу F2 для открытия специального окна просмотра Object Browser (Браузер объектов) – это интерфейс ко всем программным элементам проекта, открытого в VB IDE. На рис. 3.33 в левом верхнем поле со списком выбрана библиотека ConfigSeat, а в списке Classes (Классы) в левой части окна содержится класс clsChair.

Рис. 3.33

Выберите класс clsChair, чтобы отобразить добавленное свойство color в правой области. Выделите свойство color, и в нижней части окна в области отчета появится детальное описание этого свойства с указанием типа, класса и библиотеки, которым оно принадлежит.

202

Свойство color в его текущем состоянии является практически бесполезным, так как для его значений еще не определены переменные. Без этих переменных установка значения свойства не позволит ни сохранить значение, ни получить его. Свойство используется для изменения значения

вклассе, которое находится в памяти при работе класса, поэтому нужно объявить локальную переменную с областью действия, охватывающей весь класс.

Значение color представляет собой строку, описывающую цвет стула, поэтому в верхней части кода класса объявим частную (private) строковую переменную с именем m_scolor. Ключевое слово private означает, что переменная недоступна программе за пределами класса. Область действия private целесообразно использовать при контроле доступа потребителей к членам класса, свойствам, подпрограммам и функциям. При работе возможна ситуация, когда потребуется изменить другие значения класса или проверить цвет при его установке. Если локальная переменная m_scolor будет общей, то потребитель класса сможет изменить ее значение, не поставив в известность класс.

Рекомендуется всегда использовать свойства для разрешения установки или считывания атрибута в классе. Данный подход несколько затрудняет программирование и повышает уровень сложности программного решения, однако

вбудущем будет проще вносить изменения в класс. Если правила работы класса поменяются, то обновление объекта COM гораздо легче реализовать под общим интерфейсом COM, поскольку код, лежащий в основе функций свойства, используется для корректировки атрибута класса без изменения общего интерфейса класса. Изменение интерфейса класса потребует изменения потребителей класса, поэтому сложности из-за отсутствия абстракции между внутренними членами класса и его внешним интерфейсом, окажутся более серьезными по сравнению с первоначальным усложнением проекта.

203

В листинге приведен код, реализующий класс clsChair. '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

' constants to class

Private Const DEFAULT_COLOR = "Brown"

'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ' locals to class

'holds the color of the chair Private m_scolor As String

'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Public Property Get color() As Variant

color = m_scolor End Property

Public Property Let color(ByVal vNewValue As Variant) m_scolor = vNewValue

End Property

Private Sub Class_Initialize() 'set default color on instantiation m_scolor = DEFAULT_COLOR End Sub

Листинг 1.1. clsChair With Support to Read and Write the Color to the Instance Option Explicit

Вверху каждого файла кода в VB рекомендуется размещать выражение Option Explicit. Оно проверяет все необъявленные переменные, используемые в коде, при компиляции. При обнаружении таких переменных VB прерывает компиляцию и генерирует сообщение об ошибке. Данное выражение позволяет принудительно объявлять переменные, что полезно

204

для выявления опечаток в именах переменных. Можно провести долгие часы, пытаясь понять, почему переменная не содержит нужного значения, и в результате обнаружить, что эта переменная просто неправильно указана в строке кода. Выявить такие ошибки трудно, поэтому используйте команду Option Explicit. VB настраивается на автоматическое добавление данного выражения в код каждого файла с помощью команды Tools\Options (Сервис\Параметры). Откройте вкладку Editor (Редактор) и отметьте опцию Require Variable Declaration (Требовать объявление переменных).

2.6. Построение тестовой структуры

Любое программное обеспечение необходимо тестировать, и VB IDE для этого имеется прекрасный механизм. Нажмите на кнопку Start (Пуск) в панели инструментов VB либо на клавишу F5, чтобы откомпилировать и выполнить программу.

Поскольку проект ConfigSeat является библиотекой ActiveX DLL, его нельзя выполнить, т.к. он должен использоваться другой исполняемой программой. Для тестирования класса clsChair следует создать еще один проект в том экземпляре IDE, где редактируется clsChair.Это будет исполняемая программа с одной задачей – тестированием класса clsChair. Программа для тестирования другой программы называется тестовой структурой.

1.В Visual Basic выберите команду File\Add Project (Файл\Создать проект) для открытия диалогового окна Add Project (Создание проекта).

2.Во вкладке New (Новый проект) выберите шаблон проекта Standard Exe. Будет создан новый проект с именем Project1, содержащий форму Form1.

3.В Project Explorer (Диспетчер проектов) щелкните правой кнопкой мыши на новом проекте и выберите Set As Start Up.

205

4.Переименуйте проект, присвоив ему имя clsChairTester.

5.В настоящий момент класс clsChair недоступен, поскольку в тестовой структуре clsChairTester нет ссылки на проект ConfigSeat. Для создания ссылки выберите команду Project\References (Проект\Ссылки) для открытия диалогового окна References (Ссылки) (см. рис. 3.34).

6.Выберите ссылку для библиотеки ConfigSeat, отметив соответствующую ей опцию, после чего нажмите на кнопку OK.

Рис. 3.34. Диалоговое окно проекта References (Ссылки)

Запомните. В диалоговом окне References (Ссылки) отображаются ссылки для выбранного в настоящий момент проекта. Изменение ссылок применяется только к этому проекту. Вы можете случайно выделить и другие проекты в группе проектирования, поэтому перед внесением изменений убедитесь в том, что выбрано соответствующее диалоговое окно References (Ссылки) с именем окна активного проекта в строке заголовка.

Элемент form1 можно настроить на отображение функционирования различных компонентов класса clsChair. Используемый подход заключается в представлении всех

206

свойств класса в виде текстовых полей, всех функций – в виде кнопок, с текстовыми полями для аргументов формы тестовой структуры соответствующего класса. Тестовую структура нужно сохранить вместе с исходным кодом тестируемого класса, так как в будущем это поможет при усовершенствовании класса или устранении ошибок.

Примечание. Рассматриваемая тестовая структура – clsChairTester – сохранена с исходным кодом данной лекцию и доступна на веб-сайте автора книги.

В классе clsChair имеется только одно свойство, поэтому тестовая структура просто установит значение свойства и покажет его пользователю. После добавления в форму нескольких текстовых полей и командной кнопки, написания кода для создания и управления классом clsChair можно протестировать компонент "стул" с помощью тестовой структуры.

1.Нажмите на клавишу F5 для запуска тестовой структуры. Выходные данные покажут, что объект успешно создан, и что цвет стула равен значению Brown (Коричневый).

2.Введите новый цвет и нажмите на кнопку Set New Color

(Присвоить новый цвет).

На рис. 3.35 показана тестовая структура, при работе которой цвет стула успешно изменен в нескольких тестах.

Рис. 3.35

207

Лабораторное задание: ознакомиться со средой программирования Visual Basic 6. Выполнить несколько примеров.

3.5. Лабораторная работа № 5

Применение библиотеки COM DLL

1. ОБЩЕЕ ОПИСАНИЕ РАБОТЫ

1.1.Цель работы: в добавить новый компонент в приложение COM+ в службы компонентов и ознакомиться с возможностями его использования.

1.2.Содержание работы

Лабораторная работа заключается в добавлении нового компонента в приложение COM+ в службы компонентов и использовании служб компонентов для ролевого доступа.

1.3. Используемое оборудование Для выполнения лабораторной работы используется

ПЭВМ типа IBM PC, Монитор с графическим адаптером VGA

ивыше.

2.ВЫПОЛНЕНИЕ РАБОТЫ

2.1.Модель компонентных объектов

Теперь, когда класс clsChair прошел модульное тестирование в тестовой структуре, он почти готов для использования в веб-приложении. Однако перед этим его нужно скомпилировать и разместить на несущем сервере. Выполните следующие действия.

1. В Project Explorer (Диспетчер проектов) выберите проект ConfigSeat.

208

2.Выберите команду File\Make ConfigSeat.dll (Файл\Создать ConfigSeat.dll ).

3.Откроется диалоговое окно Make Project (Создать проект), в котором нужно ввести имя файла и расположение новой библиотеки DLL. Измените имя файла или путь к файлу, если это необходимо, и нажмите на клавишу OK.

VB откомпилирует проект ConfigSeat и создаст файл

.dll. Библиотека DLL автоматически зарегистрируется на узле,

иее можно будет сразу использовать. (О регистрации DLL речь пойдет в следующем подразделе.)

4.Скопируйте новую библиотеку DLL на несущий сервер. Библиотека DLL не обязательно должна находиться в корневом веб-каталоге – ее можно расположить в любом месте узла. Рекомендуем выбрать папку вне корневого веб-каталога, специально предназначенную для хранения двоичных компонентов веб-приложения. Размещение двоичных COMфайлов в корневом каталоге представляет необоснованный риск, ведь при наличии ошибки в настройках веб-сервера пользователь получает возможность доступа и загрузки двоичного файла COM.

2.2. Использование regsvr32

После копирования библиотеки ConfigSeat.dll на сервер ее необходимо зарегистрировать или загрузить в службы компонентов как приложение COM+. Для регистрации компонента компания Microsoft разработала утилиту командной строки regsvr32.exe. Для работы с ней выполните следующие действия.

1.Откройте окно командной строки или выберите

Start\Run (Пуск\Выполнить).

2.Введите regsvr32 <имя COM DLL> (где <имя COM DLL> – имя файла библиотеки COM DLL). Для файла библиотеки ConfigSeat.dll команда имеет вид regsvr32 ConfigSeat.dll, а курсор командной строки при выполнении

209

команды должен находиться в той же папке, что и файл ConfigSeat.dll. При запуске regsvr32 из другого места расположения в команде следует указать полный путь к файлу

.dll на сервере. Например, если файл ConfigSeat.dll расположен в папке C:\bin\, то команда имеет вид regsvr32 C:\bin\ConfigSeat.dll.

3.Нажмите на клавишу Enter, чтобы зарегистрировать библиотеку COM DLL.

4.В диалоговом окне появится сообщение об успешном завершении регистрации. Нажмите на клавишу OK для закрытия диалогового окна.

Для удаления библиотеки DLL COM или замены ее другой библиотекой следует аннулировать регистрацию библиотеки DLL и удалить соответствующий файл. При аннулировании регистрации из реестра удаляется запись CLSID для данной библиотеки, чем достигается "чистота" реестра и сокращается количество записей. Выполните те же самые шаги, с помощью которых проводилась регистрация, но используйте в команде ключ /u. Например, для аннулирования регистрации файла C:\bin\ConfigSeat.dll команда примет вид regsvr32 /u C:\bin\ConfigSeat.dll. Для просмотра ключей команды и информации о них выполните ее без каких-либо параметров: regsvr32.

При работе с regsvr32 не возникает каких-либо проблем. Это идеальное программное решение, не требующее управления и дополнительной информации о COM-объекте. Регистрация COM-объектов с помощью regsvr32 прекрасно подходит для приложения рабочего стола.

2.3. Использование служб компонентов

Установка объекта COM в службах компонентов более предпочтительна для веб-приложений по сравнению с использованием regsvr32, поскольку компоненты вебприложении зачастую требуют последующего управления и

210

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]