Читайте также:
|
|
Семантика
'
Объектное выражение имеет тип вида ref (<квалификация>). Оно является правилом для получения ссылки на объект. Значением такого выражения является или объект, с которым связана полученная ссылка, или попе.
Квалификация
Квалификация объектного выражения определяется следующими правилами:
· Выражение none квалифицируется фиктивным классом, содержащим все декларированные классы.
· Переменная или указатель функции квалифицируется в соответствии с декларацией (или спецификацией) этой переменной (или массива) или декларацией процедуры-функции.
· Генератор объектов, локальный объект или квалифицированный объект квалифицируются классом, идентификатор которого следует за символом new, this или qua соответственно.
· Условное объектное выражение квалифицируется классом на самом высоком префиксальном уровне, еще охватывающим квалификации обеих альтернатив. Если такого класса не существует, то выражение недопустимо.
· Любой формальный параметр типа ссылок на объект
квалифицируется в соответствии с его спецификацией независимо от квалификации соответствующего фактического параметра.
· Квалификация указателя функции с идентификатором
процедуры, являющимся идентификатором некоторой виртуальной величины, зависит от уровня обращения. Этой квалификацией является квалификация подходящей декларации (если таковая имеется), находящейся на наивысшем префиксальном уровне, не превышающем уровня обращения. Если такой подходящей декларации нет, то квалификацией указателя функции является квалификация виртуальной спецификации.
Генераторы объектов
Генератор объектов вызывает порождение и исполнение некоторого объекта, принадлежащего указанному в генераторе классу. Этот объект является новым представителем (экземпляром) соответствующего (сочлененного) тела класса. Вычисление генератора объектов состоит в следующем;
· порождается объект и вычисляются фактические параметры генератора объектов. Передаются параметры-значения и (или) параметры-ссылки; *,,
· управление входит в объект через его начальный символ begin, в силу чего объект оказывается работающим
в «прикрепленном состоянии». Вычисление генератора объектов заканчивается* в следующих случаях:
а) когда выполняется основная процедура detach «по поручению» порожденного объекта;
б) при выходе из порожденного объекта через его замыкающий символ end.
Значением генератора объектов является сам объект, порожденный в результате вычисления генератора. После вычисления генератора объект или «самостоятелен» (случай «а»), или «завершен» (случай «б»).
Локальный объект
Локальный объект вида this С является допустимым выражением, если оно находится:
1) в теле класса С или в теле подкласса класса С, или
2) в присоединяющем блоке с классом С или с подклассом этого класса в качестве квалификации блока.
Значение выражения (локальный объект) в некотором данном контексте — это объект, который является (или который присоединен) наименьшим статически охватывающим экземпляром блока, где локальный объект является допустимым выражением. Если такого блока нет, то данное выражение (локальный объект) незаконно (в этом контексте). Для экземпляра процедуры или тела класса термин «статически охватывающий» означает «содержащий ее (его) декларацию».
Оперативная квалификация
Пусть X представляет какое-либо простое выражение для ссылки, и пусть С и D суть идентификаторы класса, причем D является квалификацией выражения X. Тогда квалифицированный объект X qua С является допустимым объектным выражением при условии, что класс С содержит класс D или является подклассом класса D. В противном случае, т. е. если С и D не принадлежат к одной последовательности префиксов, квалифицированный объект X qua С недопустим. Если значением выражения X является none или объект класса, не содержащегося в классе С, то при вычислении X qua С выдается сообщение об ошибке. Во всех других случаях значением X qua С является значение выражения X.
Дата добавления: 2015-07-15; просмотров: 61 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Типы и переменные | | | Демакияж. Понятие, технология . |