Ада-95. Компилятор GNAT



              

Пакеты как средство абстракции данных


Пакет в языке Ада представляет собой конструкцию, которая может использоваться для определения абстрактных данных.

Большинство экспертов рассматривают эту возможность как основной вклад языка Ада в решение задачи разработки программного обеспечения с наименьшими затратами, большей надежностью, гибкостью и верифицируемостью.

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

При использовании пакетов для абстракции данных их можно разделить на два вида: пакеты-преобразователи и пакеты-владельцы.

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

Более точно это можно охарактеризовать следующим образом:

Пакет-преобразователь (невладелец) может обновлять только те данные, которые были переданы ему через формальные параметры.

Такой пакет не содержит внутри себя информацию о состоянии, относящуюся к этим данным.

Это означает, что пакет не может содержать внутри себя обновляемых данных.

Поскольку пакет-преобразователь "не владеет" никакой информацией о состоянии, каждая выполняемая им операция должна возвращать результат вызвавшей его программе.

Пакет-преобразователь не может "помнить" результаты предыдущих обращений к нему.

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

Пакет-владелец

"чувствителен к истории", поэтому он может "помнить" результаты предыдущих обращений к нему.

Пакет-владелец "владеет" некоторой информацией о состоянии.

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

Таким образом, для выполнения операции пакету могут быть переданы данные через его формальные параметры.




Содержание  Назад  Вперед