Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Дал У.И.Симула 67.doc
Скачиваний:
8
Добавлен:
01.03.2025
Размер:
216.58 Кб
Скачать

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)

является новый объект класса поляр, представляющий ту же самую векторную сумму.