
- •6.1.2.2. Присваивание ссылок на объект
- •7. Дистанционное обращение
- •7.1. Дистанционные идентификаторы
- •7.2. Присоединения
- •9.2. Квазипараллельное исполнение
- •Integer procedure pos;
- •Inspect sysout do inspect sys in do
- •11.4.2. Семантика
- •1 12.1. Последовательности псевдослучайных чисел
- •14.2.3.2. Семантика
- •14.2.4. Управляющие процедуры
7. Дистанционное обращение
• Атрибут объекта полностью идентифицируется следующими элементами информации:
объектом;
некоторым классом, содержащим класс этого объекта;
идентификатором атрибута, определенным в этом классе или в любом классе, из последовательности префиксов первого.
Второй элемент определяется по тексту обращения к атрибуту. Префиксальный уровень класса (являющегосявторым элементом) называется «уровнем» данного обращения к атрибуту.
Рассмотрим обращение к атрибуту (идентификацию атрибута), второй элемент которого есть класс С. Идентификатор атрибута в этом обращении, т. е. третий элемент, подвергается тем же самым заменам идентификаторов, которые должны были быть выполнены над неэкранированным вхождением этого идентификатора в ядро класса С во время сочленения. Поэтому конфликты наименований атрибутов, декларированных на различных префиксальных уровнях объекта, разрешаются выбором атрибута, декларированного на самом высоком префиксальном уровне, не превышающем уровня данного обращения к атрибуту.
Неэкранированное вхождение идентификатора атрибута в данный объект является само по себе полной идентификацией атрибута. В этом случае первый и второй элементы определены неявно как соответственно данной объект и класс, связанный *с префиксальным уровнем вхождения идентификатора. \
■ Если такое вхождение идентификатора находится в теле декларации процедуры (являющейся частью объекта), то для любого динамического экземпляра этой процедуры данное вхождение идентифицирует некоторый атрибут упомянутого объекта независимо от того, где находится обращение, вызвавшее процедуру.
Дистанционное обращение к атрибутам, т. е. обращение к ним извне объекта, осуществляется или при помощи «дистанционных идентификаторов», или при помощи, механизма «присоединения». Первое является видоизменением приемов, предложенных в работе [3], второе соответствует механизму присоединения в языке СЙМУЛА-1, изложенному в работе [2].
Текстовая ссылка является сама составной структурой в тем смысле, что она имеет атрибуты, обращение к которым возможно с помощью дистанционного идентификатора. -
7.1. Дистанционные идентификаторы
N
Пусть X есть простое объектное выражение, квалифицированное классом С, и пусть А — некоторый идентификатор атрибута. Тогда дистанционный идентификатор X. А (если он законен) идентифицирует соответствующий атрибут, причем в качестве первого элемента идентифицирующей информации выступает значение выражения X, а в качестве второго — класс С.
Дистанционный идентификатор законен, если выполнены следующие требования:
значение выражения X отлично от попе;
объект не имеет атрибутов-классов на префиксальных уровнях, не превосходящих уровня С.
Первое требование должно обнаруживаться во время выполнения программы и вызывать соответствующее сообщение об ошибке.
Второе требование выдвинуто для того, чтобы упростить язык и его реализации.
Дистанционный идентификатор вида (простое текстовое выражение) . (идентификатор атрибута)
идентифицирует некоторый атрибут текстовой ссылки, получающейся путем вычисления простого текстового выражения, при условии, что идентификатор атрибута является одним из идентификаторов процедур, перечисленных в разд. 10. К Пример 1:
Пусть G5 и G10— переменные, декларированные и получившие значения в соответствии с примером 1 разд. 6.1.2.2. Тогда значение выражения
G5. интеграл (...)
ял и
G10- интеграл (...)
есть приближение к определенному интегралу, полученное применением формулы Гаусса с 5 или 10 абсциссами соответственно.
Пример 2:
П
усть
Р1 и Р2 — переменные, объявленные и
получившие значения в, соответствии
с примером 2 разд. 6.1.2.2. Ы значением
выражения
Р\ .плюс (Р2)
является йовая точка (объект класса точка), представляющая векторную сумму точек Р\ и Р2. Значением выражения
Р\ qua поляр, плюс (Р2)
является новый объект класса поляр, представляющий ту же самую векторную сумму.