Иллюстрированный самоучитель по Microsoft Outlook 2002

Классы и объекты

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

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

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

Как же устроен этот чудо-класс? Класс collection имеет одно свойство Count и три метода – Add, Item и Remove.

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

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

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

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

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

Программа 20.29. Объявление семейства.

Sub BooksCollection()
Dim Books As New Collection
Dim Novikov As New Person
Dim Vba As New Book
Novikov.perslnit "Novikov", #10/10/1951#, True
Vba.booklnit "VBA и разработка приложений в Office 2000", Novikov
Books.Add Vba, "VBprog"
Dim Office As New Book
Office.booklnit "Microsoft Office 2001 в целом", Novikov
Books.Add Office, "off"
Dim Stroustrup As New Person
Dim С As New Book
Stroustrup.perslnit "Stroustrup", #11/25/1947#
C.booklnit "C++ Programming", Stroustrup
Books.Add C, "Cprog", 2
Books.Remove "Cprog"
For i = 1 To Books.Count
Books.Item(i).bookPrint
Next i
End Sub

На этом мы заканчиваем описание языка VBA, считая, что вы готовы к его полноценному использованию, и переходим к описанию редактора Visual Basic Editor.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.