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

       

"Пустые" записи (null record) и расширения


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

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

Это может быть достигнуто описанием "пустой" записи при описании типа:

type Root is tagged

record

null; end record;

Для таких случаев, Ада обеспечивает специальный синтаксис описания "пустых" записей:

type Root is tagged null record;

Описание операций над таким типом традиционно, и может быть выполнено в спецификации пакета:

procedure Do_Something(Item : in out Root);

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

Вид описания такого расширения следующий:

type Child is new Root with null record;

procedure Child_Method (Item : in out Child);

В результате такого описания получается новый тип Child, производный от типа Root, который не будет иметь дополнительных компонентов, но имеет дополнительный метод - Child_Method.



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