Файл: Освой самостоятельно программирование для MS Access 2002 за 24 часа [П.Киммел].pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 21.10.2020

Просмотров: 7955

Скачиваний: 25

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

ляра типа

 Если конструкция объявления элемента данных вклю-

чает слово 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


background image

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. Определение

 данных. Использование массивов и коллекций


background image

В функцию или процедуру всегда

 передать одну переменную сложного типа,

нежели дюжину значений простых типов; таким образом, типы, определяемые пользо-
вателем, — это еще и средство упрощения интерфейса функций и подпрограмм.

Резюме

На этом занятии мы изучили конструкции объявлений пользовательских и пере-

числимых типов данных, способы создания экземпляров новых типов и их практиче-
ского применения. Типы, определяемые пользователем, — это средство агрегации

данных, а перечисления — эффективный инструмент представления ограниченных

наборов целочисленных значений.

Рассмотренные темы — первый шаг на пути к постижению таинств объектно-

ориентированного программирования. Впереди — крутой подъем, обойти который не
удастся. Вам придется обращаться к объектам чуть ли не в каждой программе, поэто-

му лучше заранее установить с ними доверительные отношения.

Итак, вы изучили вопросы объявления новых типов и перечислений, создания ло-

кальных, глобальных и статических экземпляров типов и ознакомились с присущими
им ограничениями. Разделы "Вопросы и ответы" и "Задания", приведенные ниже,
позволят вам убедиться в прочности своих знаний.

Вопросы и ответы

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

ориентированного программирования?

Ответ.

 Нет. Традиционные структуры данных, какими бы сложными они ни бы-

ли, — это еще не объекты. Объектно-ориентированное программирование основыва-

ется на концепции нового типа данных —

 класса

 (подробнее см. главу 21).

Вопрос. Могут ли типы быть вложенными?
Ответ.

 Да. В объявлении нового типа допускается использовать переменные суще-

ствующих типов. Единственный критерий истины — практическая целесообразность.

Вопрос. Разрешается ли включать в объявление типа процедуры или
Ответ.

 Нет. Подобную возможность предоставляет конструкция определения класса.

Вопрос. Следует ли безоговорочно отказываться от констант в пользу перечислимых типов?
Ответ.

 Создавайте и используйте перечислимые типы только в тех случаях, когда

имеете дело с наборами целочисленных значений. Если константы никак не связаны

по смыслу, определяйте их с помощью служебного слова Const.

Задания

Ниже приведены тестовые задания и упражнения, которые помогут вам самостоя-

тельно проверить уровень освоения материала, изложенного в этой главе. Ответы на
вопросы вы найдете в приложении.

Тесты

1. Может ли пользовательский тип данных содержать переменную перечислимого типа?

2. Для каких целей применяются пользовательские и перечислимые типы и в чем их

различие?

 -й час. От сложного к простому: создание собственных типов данных 207


background image

3. Могут ли в объявлениях типов содержаться функции или процедуры?
4. Допускаются ли в определениях типов члены-константы?
5. Позволяется ли включать в объявление типа ссылочную переменную?

1. Создайте объявление типа для хранения данных об имени человека, его адресе и

номере телефона.

2. Определите тип, одним из членов которого будет экземпляр типа, созданного в

предыдущем упражнении. Что может послужить мотивом подобных действий? По-

чему бы просто не исправить объявление исходного типа?

3. Объявите перечислимый тип, представляющий все сорта мороженого.

208 Часть IV. Определение типов данных. Использование массивов и коллекций


background image

 час

переменного объема

Ввод данных в память компьютера и их обработка — одна из основных функций,

выполняемых программами. Массивы (главный объект нашего внимания в ходе теку-
щего занятия) выступают базовой и наиболее часто используемой структурой данных.

Массив

 определяется в виде набора, состоящего из нуля или более элементов дан-

ных одного типа. Подобная конструкция обладает и сильными, и слабыми сторонами.

Несмотря на ряд ограничений, массивы — при умелом управлении ими — способны

стать чрезвычайно полезным, простым и мощным инструментом программирования.

Основные темы занятия.

• Определение массивов.
• Динамическое изменение размеров массивов.
• Функции, позволяющие избежать ошибок при использовании массивов.
• Сортировка массивов данных.

Знакомство с массивами

Массивы — одна из традиционных и наиболее "древних" структур данных. Масси-

вы, позволяющие хранить в памяти компьютера наборы однородных данных, находят
самое широкое применение. Они, например, способны с успехом заменить конструк-
цию вида Select Case (о ней речь пойдет в главе "21-й час. Основы программиро-
вания классов").

Если данные уже представлены в виде таблицы или коллекции, применять масси-

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

Массив — это непрерывный блок адресов памяти, обозначаемый одним именем

и трактуемый в виде единственной переменной. Механизм построения массивов по-