Урок 8 по VBScript: Объекты и классы

Урок 8 по VBScript: Объекты и классы Программирование на VBSCRIPT

Всем привет, в данной статье мы подробно изучим работу с внешними объектами в vbscript сценариях и научимся создавать собственные классы. Для начала, давайте по порядку. Под объектом мы будем рассматривать некую библиотеку (в большинстве случаев это внешний файл с расширением dll), которая содержит методы и свойства для выполнения тех или иных задач (работа с файловой системой, создание форм и так далее).

Объекты и классы vbsКлассы – это тоже своеобразные vbscript объекты, но, они немного отличаются от тех объектов, какие мы создавали на языке jscript, далее, по ходу статьи я покажу, в чем заключаются различия.

И так, давайте для начала рассмотрим, как происходит подключение в vbscript внешних объектов. Для этого используются две функции:

CreateObject( servername.typename[, location ] ) — Создаёт экземпляр объекта-сервера автоматизации и возвращает ссылку на него. Здесь servername — имя приложения, являющегося сервером; typename — тип или класс; location — сетевое имя компьютера.

В большинстве случае, достаточно указать только servername.typename, например:

Dim FSO, WSOSet FSO = CreateObject("Scripting.FileSystemObject")Set WSO = CreateObject("Scripting.WindowSystemObject")

Как видим, сначала нужно объявить переменную, далее мы используем ключевое слово Set после которого следует наша переменная. После того, как мы создали ссылку на нужный объект в vbscript сценарии, к нему можно будет обратиться уже через имя переменной.

GetObject([pathname] [, classname] ) — Возвращает ссылку на объект класса classname, который хранится в отдельном файле, путь к которому задает параметр pathname.

Как правило, данная функция, используется при работе с Windows Management Instrumentation:

Dim objServiceSet objService = GetObject("WinMgmts:\.RootCIMV2")

Тут мы подключаемся к пространству имен CIMV2.

В какой-то момент, может отпасть надобность использовать vbscript объекты, что бы освободить на них ссылку, используется ключевое слово Nothing:

Set FSO = NothingSet WSO = NothingSet objService = Nothing

Хорошо, но вы, возможно скажете, а нельзя ли определить собственные объекты vbscript в теле сценария? Конечно можно, только называться они будут классами. Общий синтаксис при создании класса vbs таков:

Class <имя>
     Методы и свойства
End Class

Как видим, всё в принципе просто, хорошо, давайте создадим свой первый класс (объект) vbscript:

'****************************************' Простой (класс) объект vbscript' class.vbs'****************************************dim my_class ' Создаём класс new_classClass new_classDim my_arr(3), a,b     Function my_fun(x,y)                 my_fun=x+y     EndFunctionEnd Class ' создаём ссылку на экземпляр vbs класса new_classset my_class = new new_class 'Заполняем свойстваmy_class.my_arr(0) = 10my_class.my_arr(1) = "строка"my_class.my_arr(2) = #10/10/2000#my_class.my_arr(3) = 1.32 my_class.a = 200my_class.b = 500 MsgBox my_class.my_arr(2)MsgBox my_class.my_fun(10,100)
Конструкция для создания vbs класса

Тут мы сначала создали объект my_class, в нём мы прописали одну функцию, две переменные и один массив. Далее, мы создали ссылку на наш объект vbscript через переменную new_class. Фактически, теперь мы взаимодействуем не с самим классом, а с его копией. Что бы не писать лишние строки кода при заполнении свойств, можно прибегнуть к помощи одной конструкции.

Скачать архив с примерами

With … End With — Позволяет обращаться к свойствам объекта vbscript без написания его имени, например:

with my_class     .my_arr(0) = 10     .my_arr(1) = "строка"     .my_arr(2) = #10/10/2000#     .my_arr(3) = 1.32     ...............................................     .a = 200     .b = 500endwith

Давайте далее, для членов классов vbs в языке vbscript есть следующие ключевые слова:

Private – видимость только внутри кода для заданного класса vbs.

Public – доступность как внутри, так и снаружи (значение присуще по умолчанию).

Также, если переменной нужно присвоить значения сразу в теле класса, то можно использовать функцию Property Get, её синтаксис следующий:

Property Get имя переменной
            Имя переменной=значение
End Property

Хотя по правде, есть и другие функции, однако, если их сейчас описывать, то это лишь запутает ситуацию, поэтому, давайте пока посмотрим на следующий пример:

'****************************************' Пример простого vbs класса' class_1.vbs'****************************************dim my_class ' Создаём класс new_classClass new_class      ' глобальная видимость     dim a     ' Локальная видимость     Private b     ' только чтение     PropertyGet c                 c=100     EndProperty      Function my_fun(x,y)                 my_fun=x+y     EndFunctionEnd Class ' создаём ссылку на экземпляр vbs класса new_classset my_class = new new_class ' Возникнет ошибкаMsgBox my_class.b 'Заполняем свойстваwith my_class     .a = 200     ' Возникнет ошибка     .b = 500     ' Возникнет ошибка     .c = 300endwithMsgBox my_class.c
White wend служит для доступа к свойствам объекта vsb

Данный пример демонстрирует, как ведут себя те или иные ключевые слова или функции в теле vbscript объекта (класса). Данная статья была лишь кратким знакомством с классами и объектами языка vbscript.

Оцените статью
Технологии программирования и ведение блога
Добавить комментарий