Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курс лекций.docx
Скачиваний:
11
Добавлен:
01.07.2025
Размер:
425 Кб
Скачать
☆

9.4. Типы данных, определяемые пользователем.

Кроме встроенных типов данных, таких как Integer, ….Long т.п. возможно использовать типы данных . определяемых пользователем.

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

Но можно избежать этого создав собственный тип данных ( пользовательский тип данных). Они могут быть созданы как на основе встроенных типов данных, так и на основе ранее определенных пользователем.

Для определения пользовательского типа данных используется ключевое слово Type:

|Private | Pablic | Type < имя типа>

Элемент1[ ( [ Размерность] )] As Тип

[Элемент2 [ ( [ Размерность] )] As Тип]

End Type

Пример:

Type Staff

EmpNamber As String

FirstName As String

LastName As string

PhoneNamber As String

End Type

Здесь объявление Type создает новый тип Staff, который вы можете в дальнейшем использовать в предложениях Dim при объявлении новых переменных. Ниже приведен пример того. как вы можете определить персонал для каждой рабочей смены.

Dim Manger As Staff, Super As Staff

Dim Clerr1 As Staff, Clerr2 As Staff

Эти строки Dim резервируют пространство в памяти, достаточное для хранения номеров, имен, фамилий, и номеров телефонов.

Каждый элемент в типе – это свойство такого типа. Что бы обратиться к фамилии управляющего, вы используете выражение Manager. FirstName. Для номера телефона первого служащего вы записываете Clerr1. PhoneNamber.

Создание пользовательского типа данных позволяет.

Обращаться с подобными данными как с единым целым.

При создании переменной для нового сотрудника потребуется ввести имя только одной переменной.

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

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

Определение общего (Pablic) собственного типа данных возможна только в секции (General) (Declarations) модуля В этом случае этот тип будет доступен во всех процедурах всех форм, модулей и модулей классов. Для определения пользовательского типа данных в форме или модуле класса следует использовать ключевое слово Private, поскольку объявление общего типа в данной ситуации не допускается. При этом область видимости такого типа будет ограничена тем контейнером, где он объявлен.

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

(General) (Declarations) ( Module )

Type usrGoodType

GoodNum As Long

Name As String *40

Price As Currency

End Type

(General) (Declarations) ( Form )

Dim usrTools As usrGoodType

Private Sub Command1_Click ( )

usrTools. Name = “Отвертка”

usrTools. Price = 2,95

End Sub

В этом примере в секции объявления модуля определяется глобальной тип данных usrGoodsType. Затем в секции объявлений формы, объявляется доступная в контейнере usrTools типа usrGoodsType, а конкретные значения составляющих этой переменной устанавливаются в процедуре Command1_ Click.

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

(General) (Declarations) ( Module )

Type usrPerson

Name As usrName

Namber As Integer

End Type

Pablic usrCostumer As usrPerson, usrSupplier As usrPerson

Private Sub Command1_ Click ( )

usrSupplier. Name = “Петров”

usrSupplier. Number = 21873

usrCostomer = usrSupplier

End Sub

Переменные usrSupplier и usrCostumer относятся к одному типу usrPerson. Поэтому они присваиваются напрямую, а не поэлементно.

Пользовательские типы данных могут быть составными. В этом случае важна последовательность определения типов. Сначала нужно определить базисный тип , который будет использоваться далее в составных типах. Если не соблюдать это правило, то после запуска программы появится сообщение об ошибке. Ниже приводится пример использования составных пользовательских типов данных:

1. (General) (Declarations) ( Module )

Type usrName

FirstName As String

name As string * 40

End Type

2. (General) ( Declarations) (Module )

Private Type usrPerson

Name As usrName

BirthDate As Date

End Type

3. Dim usrCostomer As usrPerson

Private Sub Command_ Click ( )

UsrCostumer. Name. FirstName = “Иван”

Usr Costomer. Name.name = “Lampe”

End Sub

В первой записи определяется базовый тип usrName, состоящий из двух элементов FirstName и name. Во второй записи определяется переменная типа usrPerson, один из элементов которого имеет тип, определенный выше как name. В третьей записи определяется переменная usrCostomer, как тип usrPerson. Следовательно переменная типа UsrCostumer является составной и включает в себя элемент Name переменной usrPerson, которая в свою очередь состоит из FirstName и name, переменной usrName.