ГОСТ Р ИСО/МЭК 8824-4—2016
Приложение А
(справочное)
Примеры
А.1 Примеры использования определения параметризованного типа
Предположим, что разработчикупротокола необходимочасто передавать аутентификатор содним илибопее
полями протокола. Он будет передаваться как
BIT STRING
рядом с полем, без параметризации
authenticator
дол
жен бы бытьопределен как
BIT STRING,
а затем
authenticator
стекстом, идентифицирующим, кчемуон прилагался,
должен добавляться при каждом появлении. Альтернативно разработчик может предпочесть преобразование каж
дого поля, имеющего аутентификатор, в последовательность
SEQUENCE
этого поля и
authenticator.
Метод пара
метризации обеспечивает удобную краткую записьдля решения этой задачи.
Сначала определяют параметризованный тип SIGNED{}:
SIGNED { ToBeSIgned }SEQUENCE
{
authentlcated-dataToBeSIgned.
authenticatorBIT STRING
}.
тогда в теле протокола нотация (например).
SIGNED { Orderlnformatlon >
есть нотация типа, установленная для
SEQUENCE
{
authentlcated-dataOrderlnformatlon.
authenticatorBIT STRING
>
Далее предположим, что для некоторых полей отправитель должен иметь возможность добавить (или не
добавить)аутентификатор. Этого можнодостичь, сделав
BIT STRING
факультативной, но более изящное решение
(меньшее количество битов в строке)состоит в том. чтобы определитьдругой параметризованный тип:
OPTIONALLY-SIGNED (ToBeSIgned) ::=»CHOICE
{
unsigned-data(0]
ToBeSIgned,
slgned-data(1]
SIGNED { ToBeSigned)
>
П р и м е ч а н и е — Тегирование в
CHOICE
не является необходимым, если разработчик гарантирует, что
ни одно из использований параметризованного типа не порождает фактический параметр, который является
BIT
STRING
(тип
SIGNED),
но полезен для предотвращения ошибок в других частях спецификации.
А.2 Пример использования параметризованных определений вместе с классом информационных
объектов
Используют классы информационных объектов для сбора всех параметров абстрактного синтаксиса. Таким
образом, число параметров абстрактногосинтаксиса может бытьсокращенодоодного. который являетсяэкземпля-
ром совокупности классов. Продукция ‘InformationFromObjecf может быть использована для извлечения информа ции
от параметра объекта.
Пример
--
Экземпляр этого класса содержит все параметры для абстрактного
--
синтаксиса, Message-PDU.
MESSAGE-PARAMETERSCLASS {
&maxim urn-priority-level INTEGER,
10