Файл: Освой самостоятельно программирование для MS Access 2002 за 24 часа [П.Киммел].pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 21.10.2020
Просмотров: 7955
Скачиваний: 25

ляра типа
Если конструкция объявления элемента данных вклю-
чает слово Global, этот элемент становится доступным из любой строки
программы. Язык VBA не предусматривает специальных служебных слов
для объявления локальных переменных — свойство "локальности" под-
разумевается неявно. В строках
определяется процедура, в теле ко-
торой создается еще два экземпляра типа Typel. Переменная
локаль-
на, поэтому существует только в период выполнения процедуры Oth-
erTypeVars. Строка 10 содержит инструкцию создания статической пе-
ременной
типа Typel. Переменные, снабженные служебным словом
static, доступны только в контексте объявления — внутри функции или
подпрограммы, но сохраняют свои значения от одного успешного вызова
функции (процедуры) к другому.
Перечислимые типы
Перечислимые типы во многом схожи с константами, но между ними существуют
и серьезные различия.
Константа —
это именованное неизменное значение, пред-
ставляющее единственный элемент данных.
Перечислимый тип
(перечисление) — это
набор имен, которым присваиваются целочисленные
неявно (в этом
случае значение, отвечающее определенному имени-члену типа, зависит от порядка
следования имен), либо непосредственно. Взгляните на синтаксис объявления пере-
числения и сопоставьте его с конструкцией объявления пользовательского типа.
[=
[=
End Enum
[=
Конструкция открывается строкой, содержащей служебное слово Enum и имя пере-
числимого типа, и завершается парой слов End Enum. Число элементов-членов типа
произвольно. Каждому элементу или только некоторым из них могут быть поставлены
в соответствие целочисленные значения.
Перечислимые типы находят применение в тех ситуациях, когда удобно определить
набор имен, которым отвечают строго определенные целые числа. Несмотря на цело-
численный характер значений элементов-членов перечислимого типа, их нельзя при-
сваивать обычным переменным типа Integer или сопоставлять с такими переменны-
ми — подобные операции допустимы только в отношении объектов того же перечисли-
мого типа. Листинг
иллюстрирует пример использования перечислимого типа.
Листинг
Пример использования перечислимого типа
1:
2 :
3 :
4 :
5 :
6:
7 :
Enum
= 1
esHired = 2
= 3
= 4
End Enum
Sub
EmploymentStatus)
CurrentStatus As
11 -й час. От сложного к простому: создание собственных типов данных
205

10: If (CurrentStatus = esHired) Then
11:
Что-то нужно сделать
12: End
If
14: End Sub
15:
16: Sub
CurrentStatus As
Integer)
18: If (CurrentStatus >= 1 And CurrentStatus <= 4) Then
19:
If
(CurrentStatus = 1) Then
20: ' Нужно сделать то же самое
2 1 : E n d
I f
22: End If
End Sub
Строки
листинга
содержат объявление перечислимого типа
предусматривающего четыре возможных элемента-
значения:
esHired,
и
sence. В строках
находится текст процедуры, использующей объект
созданного перечислимого типа, а ниже (в строках
приведена
аналогичная по функциональным возможностям процедура, применяю-
щая обычные значения типа Integer.
Обратите внимание, насколько изящнее первая версия. По причине того, что пе-
ременным перечислимого типа могут присваиваться только заранее оговоренные зна-
чения, необходимость в дополнительных проверках (аналогичных приведенной в
строке 18) отпадает. Напротив, в варианте, не использующем переменные перечисли-
мого типа, такие проверки обязательны, иначе о надежности кода говорить не стоит.
Естественно, программа потребует добавления дополнительных строк.
Используйте именованные константы вместо литералов и перечислимые
типы вместо наборов постоянных целочисленных значений.
Кроме того, обратите внимание, насколько более прозрачна и доходчива первая
версия условной конструкции
(CurrentStatus = esHired) Then) в сравнении
со второй
(CurrentStatus =
Then): esHired — конкретное имя, а 1 — про-
сто некоторое абстрактное число. Перечислимый тип — это идиома, придающая коду
ясность и четкость. Иными словами, всякий раз, когда возникает необходимость в
использовании ограниченного набора целочисленных значений, удобно применять
перечислимые типы; в противном случае придется написать код большего объема и
менее высокого качества.
А теперь повторим
Пользовательский тип — удобное средство построения структуры данных, которая
не укладывается в схему стандартных простых или составных типов. Например, если
задача требует хранения нескольких элементов информации, относящейся к абоненту
электронной почты, целесообразно объявить новый тип и включить в него все атри-
буты данных, характеризующие абонента — имя, фамилию, почтовый адрес и т.п.
206 Часть IV. Определение
данных. Использование массивов и коллекций

В функцию или процедуру всегда
передать одну переменную сложного типа,
нежели дюжину значений простых типов; таким образом, типы, определяемые пользо-
вателем, — это еще и средство упрощения интерфейса функций и подпрограмм.
Резюме
На этом занятии мы изучили конструкции объявлений пользовательских и пере-
числимых типов данных, способы создания экземпляров новых типов и их практиче-
ского применения. Типы, определяемые пользователем, — это средство агрегации
данных, а перечисления — эффективный инструмент представления ограниченных
наборов целочисленных значений.
Рассмотренные темы — первый шаг на пути к постижению таинств объектно-
ориентированного программирования. Впереди — крутой подъем, обойти который не
удастся. Вам придется обращаться к объектам чуть ли не в каждой программе, поэто-
му лучше заранее установить с ними доверительные отношения.
Итак, вы изучили вопросы объявления новых типов и перечислений, создания ло-
кальных, глобальных и статических экземпляров типов и ознакомились с присущими
им ограничениями. Разделы "Вопросы и ответы" и "Задания", приведенные ниже,
позволят вам убедиться в прочности своих знаний.
Вопросы и ответы
Вопрос. Создав новый тип данных, могу ли я считать, что уже знаю приемы объектно-
ориентированного программирования?
Ответ.
Нет. Традиционные структуры данных, какими бы сложными они ни бы-
ли, — это еще не объекты. Объектно-ориентированное программирование основыва-
ется на концепции нового типа данных —
класса
(подробнее см. главу 21).
Вопрос. Могут ли типы быть вложенными?
Ответ.
Да. В объявлении нового типа допускается использовать переменные суще-
ствующих типов. Единственный критерий истины — практическая целесообразность.
Вопрос. Разрешается ли включать в объявление типа процедуры или
Ответ.
Нет. Подобную возможность предоставляет конструкция определения класса.
Вопрос. Следует ли безоговорочно отказываться от констант в пользу перечислимых типов?
Ответ.
Создавайте и используйте перечислимые типы только в тех случаях, когда
имеете дело с наборами целочисленных значений. Если константы никак не связаны
по смыслу, определяйте их с помощью служебного слова Const.
Задания
Ниже приведены тестовые задания и упражнения, которые помогут вам самостоя-
тельно проверить уровень освоения материала, изложенного в этой главе. Ответы на
вопросы вы найдете в приложении.
Тесты
1. Может ли пользовательский тип данных содержать переменную перечислимого типа?
2. Для каких целей применяются пользовательские и перечислимые типы и в чем их
различие?
-й час. От сложного к простому: создание собственных типов данных 207

3. Могут ли в объявлениях типов содержаться функции или процедуры?
4. Допускаются ли в определениях типов члены-константы?
5. Позволяется ли включать в объявление типа ссылочную переменную?
1. Создайте объявление типа для хранения данных об имени человека, его адресе и
номере телефона.
2. Определите тип, одним из членов которого будет экземпляр типа, созданного в
предыдущем упражнении. Что может послужить мотивом подобных действий? По-
чему бы просто не исправить объявление исходного типа?
3. Объявите перечислимый тип, представляющий все сорта мороженого.
208 Часть IV. Определение типов данных. Использование массивов и коллекций

час
переменного объема
Ввод данных в память компьютера и их обработка — одна из основных функций,
выполняемых программами. Массивы (главный объект нашего внимания в ходе теку-
щего занятия) выступают базовой и наиболее часто используемой структурой данных.
Массив
определяется в виде набора, состоящего из нуля или более элементов дан-
ных одного типа. Подобная конструкция обладает и сильными, и слабыми сторонами.
Несмотря на ряд ограничений, массивы — при умелом управлении ими — способны
стать чрезвычайно полезным, простым и мощным инструментом программирования.
Основные темы занятия.
• Определение массивов.
• Динамическое изменение размеров массивов.
• Функции, позволяющие избежать ошибок при использовании массивов.
• Сортировка массивов данных.
Знакомство с массивами
Массивы — одна из традиционных и наиболее "древних" структур данных. Масси-
вы, позволяющие хранить в памяти компьютера наборы однородных данных, находят
самое широкое применение. Они, например, способны с успехом заменить конструк-
цию вида Select Case (о ней речь пойдет в главе "21-й час. Основы программиро-
вания классов").
Если данные уже представлены в виде таблицы или коллекции, применять масси-
вы, вероятно, нецелесообразно. Однако, если стоит задача создания временного хра-
нилища данных в памяти и их динамической обработки, в такой ситуации массивы
сослужат хорошую службу. /
Массив — это непрерывный блок адресов памяти, обозначаемый одним именем
и трактуемый в виде единственной переменной. Механизм построения массивов по-