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

Integer | |

NUMBER

BOOLEAN

STRING

REAL

GENETIC |

Рис. 6.6. Изображение простых типов данных в Express-G

310

6.4. Краткое описание языка Express

Агрегативный тип данных

Агрегативный тип данных - множество элементов некоторого типа. Разли-

чают четыре разновидности агрегативных типов, сведения о которых приведе-

ны в табл. 6.2. Таблица 6.2

Тип данных

array

bag

list

set

Упорядоченность

Да

Нет

Да

Нет

Различие элементов

Необязательно

Необязательно

Обязательно

Обязательно

При описании типа array после слова array в квадратных скобках указыва-

ются нижняя и верхняя границы индексов. Для остальных агрегативных типов

записываются не граничные значения индекса, а нижняя и верхняя границы

числа элементов. Например:

Fl: array[2:8] of real; (* описание семиэлементного массива F1, его элемен-

ты имеют тип real и нумеруются, начиная со значения индекса 2*);

F2: list[l:?] of integer; (*множество F2 содержит по крайней мере один эле-

мент типа integer; *)

matr: array[l:10] of array[9:12] of atrac; (*массив matr состоит из 10 четы-

рехэлементных массивов, элементы типа atrac.*)

Записи вида аггау[2:8] или list[l:?] в »,,.,.„ „,

Express-G преобразуются в форму А[2:8] или

L[l:?], указываемую около линии атрибута

агрегативного типа после имени этого атри-

бута. Так, первый из приведенных выше при-

меров представлен на рис. 6.7.

REAL

Рис. 6.7. Обозначение атрибута

агрегативного типа в Express-G

Определяемый, нечисловой, выделяемый типы

Определяемый тип обычно вводится пользователем для улучшения читае-

мости модели. Нечисловой тип - тип данных, экземплярами которого являют-

ся нечисловые (предметные) переменные. Выделяемый тип соответствует

поименованной совокупности других типов. Описание этих типов данных начи-

нается со служебного слова type, за которым следует идентификатор типа и

его определение. Пример описания определяемого типа:

type volume = real;

end_type;

entity manual;

name: string;

Vl,v2,v3: volume;

end_entity;

Определение нечислового типа начинается со служебных слов enumeration

of, после которых в скобках перечисляются элементы множества. Например:

311

6. Информационная поддержка этапов жизненного цикла изделий — cals-технологии

defined i i *УРе c°l°r = enumeration of

' (red, green, blue);

1- end type;

enumeration i .1 ~

- Ссылка на значение red теперь возможна в виде

elect Г1 ' ге(*или c°l°r-red-

-' Выделяемый тип соответствует одному из не-

Рис. 6.8. Изображения которого списка уже введенных типов. Этот спи-

\-. ~ сок записывается после служебного слова select. типов данных в Express-G .-, J

V Ссылка на имя выделяемого типа означает, что

выбирается один из типов совокупности:

type a_c = select (one, two, three);

end_type;

• • •

proc: a_c; (* proc может быть объектом одного из типов one, two, three*)

Графические изображения определяемых, нечисловых и выделяемых типов

данных показаны на рис. 6.8. Внутри прямоугольников, ограничиваемых пунк-

тирными линиями, записывается имя типа.

Супертипы и подтипы

Отношения типа целое - часть или функция - вариант реализации, харак-

терные для представления структур объектов в виде альтернативных (И-ИЛИ)

деревьев, в языке Express выражаются в форме отношений между типами дан-

ных. Для этого введены понятия супертипа (supertype), как более общего типа,

и подтипов (subtypes), как подчиненных типов. На рис. 6.9 верхняя сущность

относится к супертипу, а три нижних прямоугольника изображают подтипы, линии

связи прямоугольников должны быть утолщенными.

Рассмотрим пример фрагмента И-ИЛИ-дерева, в котором имеются верши-

на ИЛИ al и две подчиненные ей альтернативные вершины Ы и Ь2. Общим

атрибутом для Ы и Ь2 является size типа real, специфичным для Ы атрибут -

vol типа real, а специфичным для Ь2 -атрибут met типа string. Этот фрагмент

может быть описан следующим образом:

entity al

supertype of (oneof (Ы,Ь2));

size: real;

I 1 end_entity;

' entitybl

1 subtype of (al);

I I vol: real;

- end_entity;

I I entity b2

subtype of (al);

Рис. 6.9. Изображение met: string;

иерархии типов в Express-G end_entity;

312

6 4 Краткое описание языка Express

Используются также следующие правила записи супертипов и подтипов:

в случае, если al есть И-вершина, вместо oneof используется зарезерви-

рованное слово and (в более общем случае andor), т. е. вторая строчка приме-

ра будет выглядеть так:

supertype of (bl and Ь2);

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

(в частности, ИЛИ- или И-вершинами), то указание в al факта, что это супер-

тип, не требуется; достаточно упоминание о подчиненности подтипов в их дек-

ларациях в виде subtype of (al);

перед декларацией supertype записывается зарезервированное слово

abstract, если вершине al не соответствуют какие-либо экземпляры сущности,

т. е. если al введена только для указания общих для подтипов атрибутов;

у одного подтипа может быть больше одного супертипа; подтип наследует

атрибуты всех своих супертипов; если в декларациях супертипов используют-

ся одинаковые идентификаторы атрибутов, то ссылка на них должна быть в

виде составного идентификатора, например а 1.size.

Пример:

entity device

supertype of (oneof (transistor, diode));

(* device есть ИЛИ-вершина И-ИЛИ-дерева с двумя альтернативами

transistor и diode*)

end_entity;

entity transistor

subtype of (device);

b: real;

end_entity;

entity diode

subtype of (device);

r: real;

end_entity;

Ограничения

Ограничения, накладываемые на экземпляры сущности, выражаются с по-

мощью правил (rules). Правила могут быть общими или локальными.

Описание правила, общего для ряда сущностей, начинается со служебного

слова rule, далее следуют идентификатор правила, служебное слово for, ссыл-

ки на сущности, на которые правило распространяется, и, наконец, собственно

ограничения.

Локальные правила могут описывать ключевые атрибуты (uniqueness rules)

или выражать ограничения, накладываемые на атрибуты некоторой сущности

(domain rules). Например, если ключевой атрибут сущности Z есть составной

атрибут X. Y или, другими словами, одному сочетанию значений атрибутов X и

Y должен соответствовать единственный экземпляр сущности Z, то

313

б. Информационная поддержка этапов жизненного цикла изделий CALS-технологии

entity Z;