Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика 3-4(ЯП)+.doc
Скачиваний:
133
Добавлен:
10.06.2015
Размер:
681 Кб
Скачать
☆

Агрегация разнородных типов. Структурные типы данных

Наряду с ранее рассмотренными массивами все языки программирования предоставляют в распоряжение разработчика так называемый структурный тип данных(structural data type). Структурный тип служит для инкапсуляции в единый объект данных информации содержащейся в нескольких разнородных объектах скалярного или другого структурного типа. Существование структурного типа в ЯП имеет важнейшее значение. Это обусловлено тем, что информация об объектах реального мира, которые мыслятся как единое целое, также должна быть представлена в информационной модели программы в виде совокупности монолитных информационных объектов. Очевидно также, что при реализации алгоритмов обработки данных, т.е. операционной модели программы, значительно более удобно оперировать с данными, представленными в виде одного комплексного объекта, а не набора отдельных разнородных переменных. Базовая реализация структурных типов сходна во всех языках программирования и отличается, в основном только синтаксически.

Тип данных определяемый пользователем в vb

Для декларации пользовательского типа данных в VB используется оператор TYPE, указание которого разрешено только на уровне модуля, тогда как объявление пользовательского типа внутри подпрограммы невозможно. Структура оператора TYPE имеет следующий вид:

[Private | Public] Type <name>

<elementname> As <type> [<elementname> As <type>] . . .

End Type

Указание необязательного спецификатора PRIVATEограничивает область видимости объявляемого типа модулем, в котором располагается декларация. Напротив, ключевое слово PUBLIC расширяет область видимости типа до уровня проекта. Элемент <name> определяет идентификатор объявляемого пользовательского типа, к которому предъявляются общие требования к идентификаторам языка. Между ключевыми словами TYPE и END TYPE располагаются описания составных частей структурного типа, так называемыеполя. Такие описания подобны описанию обыкновенных переменных, хотя при этом не опускаются ключевые слова DIM,PRIVATEиPUBLIC. Тип составных частей структуры может быть произвольным: скалярные и другие структурные типы, объектные типы и даже массивы. Например:

Private Type CDateTime

Day As Byte

Month As Byte

Year As Integer

End Type

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

Dim BirthDay As CDateTime

Для доступа к составным частям такой переменной используется специальный оператор, который получил название селектора поля, который синтаксически представляется символом «точка». Например:

BirthDay.Day = 9

BirthDay.Month = 5

BirthDay.Year = 1975

Последовательность операций доступа к полям переменной структурного типа могут быть выполнены с помощью специального оператора WITH:

With < structure>

[statements]

End With

Этот оператор позволяет указав имя структуры < structure> после ключевого слова WITH пропустить его в операторе доступа к поля переменной структурного типа:

With MyLabel

.Height = 178

.Width = 80

.Name = "Leo"

End With

В VBдопустимо использование вложенных пользовательских типов, когда поле структуры само имеет структурный тип. Например:

Public Type CLable

BirthDay As CDateTime

Name As String

Height As Integer

Width As Integer

End Type

Как и любые другие операторы, оператор WITH может быть вложенным:

With MyLabel

With BirthDay

.Day = 9

.Month = 5

.Year = 1975

End With

. . .

End With

Однотипные структурные переменные могут участвовать в операциях присваивания:

Dim MyLabel As CLable

Dim YourLabel As CLable

. . .

YourLabel = MyLabel