Языки программирования. Практический сравнительный анализ


Языки программирования. Практический сравнительный анализ - стр. 212


создавать их квазистатическими, при обработке объявлений), но и создавать их динамически при выполнении соответствующего ГЕНЕРАТОРА. Генератор создает пару объектов - динамический объект s^ типа S и динамический объект p^ типа P. Это можно изобразить картинкой

 

                                  объект типа S

     ссылка типа P            _______________________

   _______________           |                       |

   |              |          |                       |

   |      p^      |-------->>|           s^          |   

   |______________|          |                       | 

                             |_______________________|

                                                  

                     Рис. 4.3

Теперь можно присваивать p^ другим объектам типа P (в частности, квазистатическим, т.е. обычным переменным), привязывая вновь созданные объекты к ранее построенной структуре данных.

Генератор представляет собой выражение new S. Формально - это указатель функции с побочным эффектом. Значение этого выражения - объект p^ ссылочного типа, а побочный эффект состоит в создании нового объекта s^ типа S. При этом p^ ссылается на s^.

Имеется универсальный ссылочный объект null, который считается объектом любого ссылочного типа и не ссылается при этом ни на какой объект.

Наконец, осталось сказать, что отдельные поля объектов, на которые ссылаются переменные ссылочного типа, доступны с помощью обычных выборок или индексации (как будто переменные имеют соответствующий комбинированный или регулярный тип). Например, если Т - переменная типа на_очередника, то Т.тело указывает на поле с селектором "тело", а Т.связь - на поле с селектором "связь".

Путаницы не возникает, потому что у объектов типа на_очередника собственных полей нет. А вот чтобы указать на весь объект типа "очередник", нужно специальное соглашение. (Ведь Т обозначает ссылку на очередника, а не запись из двух полей). В Аде для этого используется обозначение Т.all.




- Начало -  - Назад -  - Вперед -