Раздел 7.5 - Стандартный объектно-ориентированный формат

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

Ниже приведен "стандартный формат", используемый нами для объявления типов, и который можно изменять по мере необходимости (прописным курсивом выделено то, что задается пользователем).

  with ИМЯ_РОДИТЕЛЬСКОГО_ПАКЕТА;
  use  ИМЯ_РОДИТЕЛЬСКОГО_ПАКЕТА;
  package ИМЯ_ПАКЕТА is
    type МОЙ_ТИП is tagged private; -- или, new РОДИТЕЛЬСКИЙ_ТИП with private
    type МОЙ_ТИП_Access is access all МОЙ_ТИП'Class;
        -- Мы обсудим эту строку в следующем уроке; в дальнейшем она
        -- может облегчить выполнение многих операций 
    -- Ниже следуют диспетчеризируемые операции.
  private
    -- Здесь необходимо в деталях описать реализацию типа МОЙ_ТИП .
  end ИМЯ_ПАКЕТА;

Обычно в качестве имени пакета мы используем множественное число от имени типа. Например:

  with Creatures;
  use  Creatures;

  package Players is
    type Player is new Creature with private; -- Player принадлежит к типу Creature
    type Player_Access is access all Player'Class;
    -- Ниже следуют диспетчеризируемые операции.
    procedure Look(P : in Player);
  private
    type Player is new Creature with
     record
       Logged_In : Boolean;
     end record;
  end Players;

В Ada разрешается объявлять несколько объектно-ориентированных типов в одном пакете, но это не значит, что так и нужно делать. Общим правилом является объявление различных типов в разных пакетах, кроме случая, когда два типа тесно взаимосвязаны.


Упражнение:

Укажите имя нового тэгового типа, который описан в приведенном выше примере.

  1. Creatures
  2. Players
  3. Player

Вы можете также:

PREVIOUS Перейти к предыдущему разделу

NEXT     Перейти к следующему разделу

OUTLINE  Вернуться к содержанию Урока 7

David A. Wheeler (dwheeler@ida.org)

Перевод: Юрий Королев   Общая редакция перевода: Г.Ю. Сисюк

Исходная копия этого документа находится по адресу "http://www.adahome.com/Tutorials/Lovelace/s7s5.htm".

Исходная копия перевода размещена на сайте http://www.ada-ru.org