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

       

Сравнение пакетов и классов


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

При сравнении подобного использования пакетов Ады с классами можно обнаружить следующее:

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

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

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

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

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

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

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

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

    Copyright (C) А.Гавва V-0.4w май 2004



    Содержание раздела