"Пустые" записи (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.