Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

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




Наряду с ранее рассмотренными массивами все языки программирования предоставляют в распоряжение разработчика так называемый структурный тип данных (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 

 










Последнее изменение этой страницы: 2018-04-12; просмотров: 405.

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