Введение в программирование - Учебное пособие (Корочкин А. В.)

16.2 расширение типа

Основная идея программирования, основанного на расширении -возможность обьявления нового типа, который, используя существ­ующий родительский тип, наследует, модифицирует и добавляет к его компонентам и операциям новые компоненты и операции. Такой подход сокращает время разработки программы, так как не требует перекомпиляции существующей системы.

Расширения типа ( type extensions ) в Аде 95 основывается на су­ществующей в Аде 83 концепции производных типов: новый тип может быть получен из существующего ( родительского ) как произ­водный тип. Производный тип наследует операции родительского типа и мы могли добавлять новые операции . Однако в Аде 83 не разрешалось добавлять новые компоненты к производному типу, то есть механизм был статическим.

В Аде 95 производный тип может быть расширен новыми компо­нентами, если он помечен как тэговый. Общий вид расширения типа:

TYPE     Имя    IS     [ABSTRACT]     NEW

Имя_Родителъского_Типа    WITH    ( Запись PRIVATE ) ;

Здесь Имя - расширенный тип, Имя_Родительского_Типа - тэго­вый тип.

26*

200

201

Ада 95. Введение в программирование

Глава 16. Обьектно-ориентированное программирование

 

Производный от тэгового тип называется раширенным типом ( type extended ). Каждое расширение типа порождает в свою очередь тэговый тип и может служить основой для последующего расширения.

П Пример расширения типов:

type     Place    is    new    Plan    with    null     record;

- - без добавления компонент

type    Res_Data     is     access     all     Data'Class;

type   Ex_Plan      is     new     Plan     with record

Z:   fixed: end   record;

type   Elements   is    new     Data    with record

V :    Vector; M :    Matrix; N :   integer; end record;

package   RAM   is

type  Tend  is  new    Control    with   private

private

type  Tend is   new     Control    with record

Z :     Matrix ;     - -  новые компоненты end  record; end   RAM;

СОВЕТЫ:

*  Определяйте расширение тэговых типов в дочерних пакетах.