Составители:
Рубрика:
%*#$A&,& +($*,#&($"!)&P !"#$%!#&'&($"!))KH :&:#*%5@!"! 6
— если между подтипами нет взаимосвязи, выражаемой логической функцией (в частности, ИЛИ или И вершина-
ми), то указание в а1 факта, что это супертип, не требуется; достаточно упоминание о подчиненности подтипов в их дек-
ларациях в виде subtype of (a1);
— перед декларацией supertype записывается зарезервированное слово abstract, если вершине а1 не соответству-
ют какие-либо экземпляры сущности, т.е. если а1 введена только для указания общих для подтипов атрибутов;
— у одного подтипа может быть больше одного супертипа; подтип наследует атрибуты всех своих супертипов; ес-
ли в декларациях супертипов используются одинаковые идентификаторы атрибутов, то ссылка на них должна быть в ви-
де составного идентификатора, например, a1.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;
$@8:0+A.0+>. Ограничения, накладываемые на экземпляры сущности, выражаются с помощью 0")('4 (rules).
Правила могут быть общими или локальными.
Описание правила, общего для ряда сущностей, начинается со служебного слова rule, далее следуют идентифика тор пра-
вила, слу ж ебное слово for, ссылки на с ущности, на которые правило распространяется, и, наконец, собственно ограничения.
Локальные правила могут описывать ключевые атрибуты (uniqueness rules) или выражать ограничения, накладыва-
емые на атрибуты некоторой сущности (domain rules). Например, если ключевой атрибут сущности Z есть составной ат-
рибут X.Y, или, другими словами, одному сочетанию значений атрибутов X и Y должен соответствовать единственный эк-
земпляр сущности Z, то
entity Z;
X: integer;
Y: string;
unique
X,Y;
end_entity;
Ограничение на атрибуты некоторой сущности выражается с помощью правила в теле этой сущности. Ограничение
записывается после слова where в виде выражения, значениями которого могут быть true, false или unknown. Допусти-
мыми значениями атрибута будут только те, для которых выражение принимает значение true. Например, можно записать,
что длина вектора vect = (x,y,z) должна быть равна единице, в виде правила cons:
entity vect;
x,y,z: real;
where
cons: x**2 + y**2 + z**2 = 1.0;
end_entity;
"84=.5<81 + H<07=++. !"#=$-7". и E7*%='' служат для описания процедурной части модели. Как и в алго-
ритмических языках, используется концепция формальных и фактических параметров. Описание процедуры начинается
с служебного слова procedure, за которым следуют идентификатор процедуры и описание формальных параметров в круг-
лых скобках. Пример описания заголовка процедуры:
procedure eq (x,y: real; n: integer; var result: route);
Аналогично описываются функции, их отличает только описание в заголовке типа ре зультата после закрываю-
щей скобки:
function log (a: real; m: integer): real;
&.+.)$(*),$". !"#$%!#&'&($"!))$* +($*,#&($"!)&*
176
5@!"! 6 %*#$A&,& +($*,#&($"!)&P !"#$%!#&'&($"!))KH :&:#*% — если между подтипами нет взаимосвязи, выражаемой логической функцией (в частности, ИЛИ или И вершина- ми), то указание в а1 факта, что это супертип, не требуется; достаточно упоминание о подчиненности подтипов в их дек- ларациях в виде subtype of (a1); — перед декларацией supertype записывается зарезервированное слово abstract, если вершине а1 не соответству- ют какие-либо экземпляры сущности, т.е. если а1 введена только для указания общих для подтипов атрибутов; — у одного подтипа может быть больше одного супертипа; подтип наследует атрибуты всех своих супертипов; ес- ли в декларациях супертипов используются одинаковые идентификаторы атрибутов, то ссылка на них должна быть в ви- де составного идентификатора, например, a1.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; $@8:0+A.0+>. Ограничения, накладываемые на экземпляры сущности, выражаются с помощью 0")('4 (rules). Правила могут быть общими или локальными. Описание правила, общего для ряда сущностей, начинается со служебного слова rule, далее следуют идентификатор пра- вила, служебное слово for, ссылки на сущности, на которые правило распространяется, и, наконец, собственно ограничения. Локальные правила могут описывать ключевые атрибуты (uniqueness rules) или выражать ограничения, накладыва- емые на атрибуты некоторой сущности (domain rules). Например, если ключевой атрибут сущности Z есть составной ат- рибут X.Y, или, другими словами, одному сочетанию значений атрибутов X и Y должен соответствовать единственный эк- земпляр сущности Z, то entity Z; X: integer; Y: string; unique X,Y; end_entity; Ограничение на атрибуты некоторой сущности выражается с помощью правила в теле этой сущности. Ограничение записывается после слова where в виде выражения, значениями которого могут быть true, false или unknown. Допусти- мыми значениями атрибута будут только те, для которых выражение принимает значение true. Например, можно записать, что длина вектора vect = (x,y,z) должна быть равна единице, в виде правила cons: entity vect; x,y,z: real; where cons: x**2 + y**2 + z**2 = 1.0; end_entity; "84=.5<81 + H<07=++. !"#=$-7". и E7*%='' служат для описания процедурной части модели. Как и в алго- ритмических языках, используется концепция формальных и фактических параметров. Описание процедуры начинается с служебного слова procedure, за которым следуют идентификатор процедуры и описание формальных параметров в круг- лых скобках. Пример описания заголовка процедуры: procedure eq (x,y: real; n: integer; var result: route); Аналогично описываются функции, их отличает только описание в заголовке типа результата после закрываю- щей скобки: function log (a: real; m: integer): real; &.+.)$(*),$" . !"#$%!#&'&($"!))$* +($*,#&($"!)&* 176
Страницы
- « первая
- ‹ предыдущая
- …
- 174
- 175
- 176
- 177
- 178
- …
- следующая ›
- последняя »