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


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


Таким образом, возникает технологическая потребность в категории так называемых ССЫЛОЧНЫХ ТИПОВ, т.е. типов данных, класс значений которых - ссылки на динамические объекты.

Динамические объекты отличаются от статических или квазистатических, во-первых, тем, что создаются при выполнении так называемых ГЕНЕРАТОРОВ, а не при обработке объявлений; во-вторых, тем, что доступ к ним осуществляется через объекты  ссылочных типов.

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

Чтобы сохранить возможность квазистатического прогнозирования-контроля поведения динамических объектов, необходимо классифицировать ссылочные объекты в соответствии с типом динамических объектов, на которые им разрешено ссылаться.

С точки зрения класса значений и применимых операций динамический объект не отличается от квазистатического (кроме операции создания и, возможно, уничтожения).

Поэтому концепция типа не обязана различать динамические и квазистатические объекты. Именно так и сделано в Аде, где объекты одного и того же типа могут быть как статическими, так и динамическими в зависимости от того, объявлены они или созданы генератором.

Чтобы лучше почувствовать технологическую потребность в динамических объектах, а также ближе познакомиться с соответствующими конструктами Ады, запрограммируем управление очередью.

 

4.11.9.1. Пример. Задача управления очередью

Постановка задачи. Требуется создать пакет, предоставляющий две услуги. Во-первых, нужно ставить в очередь на обслуживание объекты известного типа, поступающие из внешней среды. Во-вторых, по запросу нужно отправлять на обслуживание объект, стоящий в очереди первым, удалив его из очереди. Дисциплина в очереди - первый пришел, первый ушел.

 

Решение задачи.  Аналогичная задача рассматривается в учебнике по общему курсу программирования [6].


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