9.2. ЗАДАННЫЕ ТИПЫ И ЗАДАЧНЫЕ ОБЪЕКТЫ

Задачный тип является лимитируемым типом (см. 7.4.4). Следовательно, для объектов за-дачного типа не определены ни присваивание, ни предопределенное сравнение на равенство и неравенство; более того, вид out недопустим для формального параметра задачного типа.

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

Примеры:

CONTROL  : RESOURCE;TELETYPE : KEYBOARDDRIVER;POOL     : array(1 .. 10) of KEYBOARDDRIVER; -— см. также примеры описаний одиночных задач в 9.1

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

type KEYBOARD is access KEYBOARDDRIVER;TERMINAL : KEYBOARD := new KEYBOARDDRIVER;

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

Задачные объекты ведут себя как константы (задачный объект всегда указывает одну и ту же задачу), поскольку их значения неявно определены при описании либо при генерации, либо при сопоставлении параметров, и никакие присваивания недопустимы. Однако зарезервированное слово constant недопустимо в описании задачного объекта, так как его наличие требует явной инициализации. Задачный объект, который является формальным параметром вида in, есть константа (как и любой формальный параметр вида in).

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

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

Ссылки: вид формального параметра 6.2, вид формального параметра настройки 12.1.1, вход 9.5, генератор 4.8, зарезервированное слово 2.9, инициализация 3.2.1, константа 3.2.1, лимитируемый тип 7.4.4, личный раздел 7.2, личный тип 7.4, настраиваемый модуль 12, объект 3.2, ограничение 3.3, операция неравенства 4.5.2, операция равенства 4.5.2, описание компоненты 3.7, описание константы 3.2.1, подкомпонента 3.3, подпрограмма 6, предвыполнение 3.9, присваивание 5.2, сопоставление параметров 6.4, сопоставление параметров настройки 12.3;составной тип 3.3, ссылочный тип 3.8, тело задачи 9.1, тип 3.3, указывать 3.8.9, фактический параметр 6.4.1, фактический параметр настройки 12.3, формальный параметр 6.2, формальный параметр настройки 12.1.1.