Программа 20.28. Объявление процедур реакций на событие



Программа 20.28. Объявление процедур реакций на событие

Private Sub Class_Initialize()

name = "Novikov"

birthday = #10/10/19511

male = True End Sub

Конечно, это только первичная инициализация, для последующих инициализаций необходимо написать собственный конструктор. В нашем классе Person роль такого конструктора играет метод persinit.

Поздравляем: класс полностью готов к работе! Теперь вы можете использовать его возможности на полную мощность и ощутить всю прелесть ООП.

Попытайтесь самостоятельно встроить в наш класс Person еще несколько свойств и методов, а потом реализовать их.

На этом мы заканчиваем описание классов в VBA. Надеемся, что все описанные выше конструкции и примеры достаточно просты и понятны. Единственное, чему еще хотелось бы уделить особое внимание, — это семейство (collection), структура (класс) VBA, стоящая несколько в стороне от канонического описания, но тем не менее очень важная при реализации ряда задач, а также очень часто используемая в объектной модели Microsoft Office XP.

Давайте рассмотрим следующую задачу: допустим, мы полностью определили класс Book (в качестве домашнего задания исправьте это "допустим" на "с легкостью") и перед нами стоит проблема упорядочения все нарастающих сведений о книгах, да так, чтобы в этой системе можно было легко выполнить поиск, чтение и запись. Конечно, располагая имеющимися на данный момент обучения средствами, мы могли бы создать массив объектов класса Book. Но подобная конструкция не отвечает нашим возросшим требована ям, например добавление и удаление книг, их поиск потребуют специальных средств (создание специальных функций, проверка и т. д.).

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

Семейством (Collection) называется упорядоченный набор объектов. В принципе объекты могут быть разных классов, но, как правило, встречаются семейства однородных объектов. Грубо говоря, семейство представляет собой сплав динамического массива и записи, что позволяет, с одной стороны, перенумеровать все элементы семейства, а с другой, иметь прямой доступ к объектам — элементам семейства — по значению определенного поля, называемого ключом. Ключ — это строковое выражение, которое может быть использовано вместо индекса для доступа к элементу семейства.

Как же устроен этот чудо-класс? Класс collection имеет одно свойство

Count и три метода — Add, Item и Remove.

Свойство count очень простое, оно возвращает количество элементов семейства (то есть количество объектов, включенных в семейство в данный момент).

Метод Add (элемент (, ключ] [, до] [, после}) добавляет объект в семей-ство. Его обязательным аргументом является элемент. Он, как вы можете догадаться, добавляет в семейство элемент. Параметр ключ задает ключ, по которому можно будет произвести поиск этого элемента. Параметры до и после указывают на то, перед каким или после какого элемента добавляется новый. По умолчанию элемент добавляется в конец семейства.

Метод Remove (ключ) удаляет элемент из семейства. Параметр ключ — это ключ или индекс, указывающий на удаляемый элемент. Заметьте, что при удалении элемента из семейства не остается дыр : индексы перенумеровываются, значение свойства count уменьшается на единицу.

Метод item (ключ) возвращает значение элемента семейства с ключом ключ. Как в случае с методом Remove, параметр ключ может быть как ключом, так и индексом.

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



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