"Адское" программирование Ada-95 -Компилятор GNAT

         

Построение абстракции путем композиции



Построение абстракции путем композиции

Абстракция данных может быть построена с помощью композиции, когда новый абстрактный тип данных составляется из нескольких уже существующих абстрактных типов данных.В таком случае, новый тип данных описывается как запись (или тэговая запись) полями которой являются уже существующие типы данных.Функциональность нового типа данных обеспечивается путем перенаправления вызовов подпрограмм к соответствующим компонентам этого типа.Рассмотрим следующий пример:

with Lists; use Lists;package Queues is type Queue is private; procedure Remove_From_Head(Item : in out Queue; Value : out Integer); procedure Add_To_Tail(Item : in out Queue; Value : Integer); function Full(Item : Queue) return Boolean; function Empty(Item : Queue) return Boolean; function Init return Queue;private -- очередь состоит из следующих элементов: type Queue is record Values : List; No_Of_Elements : Integer; end record;

end Queues;package body Queues is procedure Remove_From_Head(Item : in out Queue; Value : out Integer) is begin Remove_From_Head(Item.Values, Value); Item.No_Of_Elements := Item.No_Of_Elements - 1; end Remove_From_Head; procedure Add_To_Tail(Item : in out Queue; Value : Integer) is begin Add_To_Tail(Item.Values, Value); Item.No_Of_Elements := Item.No_Of_Elements + 1; end Add_To_Tail; procedure Reset (Item : in out Queue) is ... function Full(Item : Queue) return Boolean is begin return Full(Item.Values); end Full; function Empty(Item : Queue) return Boolean is begin return Item.No_Of_Elements = 0; end Empty;end Queues;

В этом примере вызовы подпрограмм, обращенные к типу очереди Queue, будут "перенаправлены" к компоненту список (List), на который возлагается ответственность за реализацию некоторых аспектов абстракции очереди (в данном случае - это основная часть).



Содержание раздела








Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий