Программирование >>  Проектирование интерфейса пользователя 

1 ... 66 67 68 [ 69 ] 70 71 72 ... 153


Таблица 13.1. Сопоставительная

схема терминов структурного

и объектного

программирования

Термин структурного подхода

Термин объектного подхода

Значение

Переменная

Свойство

Элемент данных

Функция или подпрограмма

Метод

Фрагмент кода

Новые термины введены не для того, чтобы запутать вас. Они несут в себе как прежнюю, так и новую смысловую нагрузку. Например, термин переменная служит для обозначения хранимой порции данн1х, но в слове свойство, помимо прямого толкования, появляется дополнительное значение, подчеркивающее принадлежность данных объекту класса.

Не следует углубляться в проблемы абстрактной семантики - указанные термины нужно просто отчетливо понимать и различать. Это поможет в работе, да и общение с коллегами значительно упростится, если вы будете говорить с ними на одном языке.

Класс Collection содержит четыре атрибута. Свойство Count предназначено для хранения количества элементов коллекции. Метод Add позволяет добавлять в коллекцию новые элементы, Remove служит для удаления элементов, a Item дает возможность ссылаться на элементы: по значению индекса.

В ходе этого занятия будут подробно рассмотрены все названные атрибуты класса Collection.

Создание объектов коллекций

Мы не погрешим против истины, если в каком-то смысле отнесем классы к типам данных, объявляемым пользователем. Коллекции - это тип данных, разработанный

специалистами Microsoft и включенный в состав VBA. Класс коллекций содержит четыре атрибута, перечисленных в предыдущем разделе.

Средства поддержки парадигмы объектно-ориентированного программирования были включены в окружение VBA в последние годы. Конструкции и приемы определения объектов классов в VBA несколько отличаются от тех, которые применяются по отношению к стандартным и пользовательским типам данных, рассмотренным ранее. (Сейчас, рассматривая

способы объявления объектов, мы имеем в виду класс коллекций, хотя

все сказанное далее справедливо и для других классов.) Синтаксис объявления коллекции таков: Dim МояКоллекция As Collection

Нетрудно заметить, что внешне ничего не изменилось. Замените идентификатор

МояКоллекция более точным именем - и процесс объявления будет завершен. Впрочем, существует одна важная особенность - непосредственно после объявления объекта соответствующая ему переменная содержит значение Nothing {ничего), равноценное null или Empty, которыми инициализируются стандартные типы данных. Поэтому сразу воспользоваться объектом вы не сможете.

Чтобы объект стал полноценным, соответствующей ему переменной необходимо присвоить значение существующего объекта либо создать новый, выделив память с помощью директивы New. При создании нового объекта возможны два варианта действий. Команду New допускается использовать непосредственно в строке объявления: Dim МояКоллекция As New Collection



Существует также альтернативное решение: вначале просто объявите объект, а затем выделите память для него посредством команды New и операции присваивания:

Dim МояКоллекция As Collection Set МояКоллекция = New Collection

Обратите внимание на наличие служебного слова Set. Операции присваивания,

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

забудете указать Set, откроется окно сообщения об ошибке (рис. 13.1).

. 441

яJfoo

tf x;

Option Ccr?;are СаСййеяе OjitiGn Exgiicit

Sub Feci)

Dia С Ля Collecticn Sew Coiiecticn

;г OK 1 crw o.y


Рис .1. Забыв ввести служебное слово Set в операторе присваивания объектов, вы получите сообщение об ошибке

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

Set МояКоллекция = Nothing

Служебное слово New появилось в языках С и C++ для резервирования фрагмента общей области динамически распределяемой памяти (называемой термином куча - Heap). Воспринимайте Неар-памятъ как часть оперативной памяти компьютера, которую операционная система Windows способна выделить вашей прикладной программе. Объекты занимают больше памяти, нежели переменные простых типов. Способ создания объекта посредством двух строк кода - объявления с последующим использованием команды New - удобен в тех ситуациях, если память надлежит выделить лишь в тот момент, когда объект действительно необходим.

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



Но не будем о грустном. Сейчас вам достаточно запомнить, что объект коллекции

(и любой другой) может быть реально создан либо одновременно с его объявлением,

либо позже, с помощью отдельной команды.

Управление коллекциями данных

Коллекция - это умный динамический массив, который наделен способностями

автоматического пополнения. Свойство Count дает ответ на вопрос, сколько элементов содержится в коллекции. Методы Add и Remove позволяют накапливать данные в коллекции и удалять их. Доступ к отдельным элементам коллекции осуществляется с помощью метода Item или цикла For Each . . Next.


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

элементов типа String уместно назвать Strings.

Добавление элементов в коллекцию

Для пополнения коллекции применяется метод Add. Синтаксис его вызова таков:

Call ИмяОбъектаКоллекции.Ас1с1( Элемент [, КлючевоеИмя, [До I , После]] )

- это, как вы догадываетесь, имя объекта коллекции, a Add - название метода класса Collection. Идентификатор объекта отделен от наименования метода оператором точки. (Служебное слово Call не является обязательной частью конструкции вызова процедуры. Если слово Call все-таки употреблено, список аргументов процедуры - в том числе пустой - должен быть заключен в круглые скобки. Если же слово Call отсутствует, скобки не применяются.) Основная форма вызова метода Add предполагает задание единственного аргумента Элемент. В качестве значения параметра допустим литерал, переменная, выражение или наименование объекта. Например, если указать на месте аргумента элемент выражение А = 5, в коллекцию будет занесено значение типа Boolean, равное True при значении переменной А, равном 5,

и False - в противном случае. Если Элемент - единственный аргумент

в списке параметров процедуры Add, заданный элемент займет в коллекции свободное место.

Параметр КлючевоеИмя позволяет дать элементу, добавляемому в коллекцию, дополнительный псевдоним. Элемент, наделенный псевдонимом, допускает обращение

как по индексу, так и по имени. (Подробности приведены ниже, в разделе Метод Item и свойство Count .) Следующие по порядку необязательные параметры - это До и После (в определенный момент может быть задан только один из них). Если указан аргумент До, новый элемент будет размещен в коллекции непосредственно перед элементом, индекс или псевдоним которого задан параметром До. Аргумент После позволяет определить номер или имя элемента, за которым следует разместить новый. В конструкции вызова метода Add аргумент После отличается от До наличием дополнительной предшествующей запятой. Листинг 13.1 демонстрирует несколько примеров использования метода Add класса Collection.



1 ... 66 67 68 [ 69 ] 70 71 72 ... 153

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика