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



       Хорошие частные детские сады отзывы. | комбинезон для купания baby banz |   

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


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

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

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

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

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

Каждый пакет имеет приватную и открытую части (также называемые видимой и невидимой частями).

Открытая часть непосредственно доступна клиентской программе через:

явное указание перед программой имен пакетов, к которым должен осуществляться доступ (такое указание носит название списка with)

  • вложение пакета внутрь клиентской программы, делая этим видимую часть пакета локально доступной (что осуществляется согласно правилам, напоминающим правила видимости в языке Алгол)

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

    Использование его настоятельно рекомендуется.

    Второй из этих механизмов использовать нежелательно. Его применение ведет к появлению трудночитаемых и трудноотлаживаемых программ и является "вредным наследием" блочно-структурированных языков, подобных Алголу-60.

    В любом случае приватная часть пакета непосредственно недоступна для клиентской программы.

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

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

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




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