Тело данного пакета может быть
используется переменная The_Counter.
Тело данного пакета может быть описано следующим образом:
package body Log is
procedure Initialize (Self: in out Item) is
begin
The_Counter := The_Counter + 1;
if The_Counter = 1 then
Ada.Text_IO.Open (File => The_Log_File, Mode => Ada.Text_IO.Append_File, Name => "log.txt"); end if; end Initialize;
procedure Finalize (Self: in out Item) is
begin
if The_Counter = 1 then
Ada.Text_IO.Close (The_Log_File); end if;
The_Counter := The_Counter - 1; end Finalize;
procedure Put_To_Log (Self: in out Item; S: in String) is
begin
. . . -- вывод необходимых данных в файл The_Log_File
end Put_To_Log;
end Log;
|
Как видно из примера, открытие файла протокола The_Log_File, при создании первого объекта типа Item, и инкремент количества существующих в текущий момент объектов типа Item
в переменной The_Counter
выполняется автоматически вызываемой процедурой Initialize.
Декремент количества существующих в текущий момент объектов типа Item
в переменной The_Counter и закрытие файла протокола The_Log_File
выполняется автоматически вызываемой процедурой Finalize.
Следует заметить, что при рассмотрении данного примера мы не заостряли внимание на структуре типа Item и реализации процедуры Put_To_Log, которая выводит информацию о состоянии объекта в файл протокола, поскольку в данном случае это не имеет принципиального значения.
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий