8.5 контролируемые типыКонтролируемые типы ( controlled types ), позволяют пользователю определить, что происходит с обьектами в начале и в конце их цикла существования.Для таких типов можно определить операцию инициализации, автоматически вызываемую, когда обьект предвыполняется, и операцию финализации - когда обьект становится недоступным . Контролируемые типы обеспечивают средства программирования динамических структур данных, эффективного использования памяти и других ресурсов. В языке предопределены контролируемые типы в предопределенном в пакете Ada . Finalization . При манипуляции с обьектами три действия являются фундаментальными: • инициализация ( initialization ) • инализация ( finalization ) • присваивание ( assignment ). Каждый обьект инициализируется после создания (например, при обьявления в описании ). Каждый обьект финализируется перед уничтожении (например, при выходе из тела подпрограммы, содержащей описание обьекта). Операция присваивания является частью оператора присваивания, передачи параметов, инициализации и др. Эти три фундаментальных операции автоматически обеспечиваются языком. Использование дополнительно типа Controlled предоставляет пользователю воможность самостоятельно управлять некоторыми из этих операций. В частности, контролируемые типы могут быть производными от двух тэговых типов, определенных в пакете Ada . Finalization : type Controlled is abstract tagged private; type Limited_Controlled is abstract tagged limited private; Для этих типов в пакете определены процедуры Initialize, Finalize Adjust. П Пример обьявления контролируемого типа с помощью пакета Ada . Finalization : type Strong is new Controlled with .. - ; Спецификация пакета Ada . Finalization : package Ada . Finalization is pragma Preelaborate ( Finaiization ); type Controlled is abstract tagged private ; in out Controlled ); in out Controlled); in out Controlled ); procedure Initialize (Object procedure Adjust (Object procedure Finalize (Odject type Limited_Controlled is abstract tagged limited private; procedure Initialize { Object : in out Limited_Controlled ); procedure Finalize (Object : in out Limited_Controlled) ; private ... - не определено в языке end Ada . Finalization ; |
| Оглавление| |