Шаг 2.
Библиотека шаблонов классов Borland.
АТД и ФСД.

    На этом шаге мы рассмотрим абстрактные типы данных и фундаментальные структуры данных.

   Контейнерный класс - это абстрактный тип данных (АТД). Он обеспечивает абстракцию методов хранения данных, например стек - АТД с такими функциями, как Push() и Рор(), для запоминания и восстановления данных методом стека. Внутренняя реализация этих функций не зависит от концепции стека. Вы можете создать стек с помощью вектора или использовать список. Стек - просто метод программирования, абстракция, которая не имеет ничего общего с конкретными деталями реализации внутреннего хранения данных в нем.

    Однако векторы и списки неотделимы от их внутренней структуры. Поэтому они называются фундаментальными структурами данных (ФСД). Не давая точного определения, можно сказать, что ФСД - любая структура, которая может использоваться для реализации АТД. Например, можно реализовать класс стека (АТД) с помощью связного списка (ФСД). Или же вы можете реализовать стек с помощью другого фундаментального типа.


    Замечание. Массивы и векторы в действительности это не одно и то же. Вектор - это фундаментальная структура данных, в которой объекты запоминается один за другим. Массив же - это абстракция, обеспечивающая случайный доступ к объектам посредством оператора индексирования []. Как контейнер массив можно реализовать с помощью вектора, списка или другого фундаментального механизма запоминания данных.

    В каждом контейнерном классе комбинируются один АТД и одна ФСД. Имя результирующего класса может звучать как TArrayAsVector. По такому имени можно определить, что контейнер - это массив (АТД), реализованный вектором (ФСД). Начальная буква Т означает "тип".

    В библиотеке шаблонов Borland - широкий выбор шаблонов АДТ и ФСД плюс несколько других классов. Для того чтобы воспользоваться контейнерным классом, следует задать тип данных, которые вы собираетесь запоминать, в общем виде: TClass<T>, где Т - ваш тип данных. Например, TStackAsList<long> задает стековый контейнерный класс, способный запоминать длинные целые объекты в связном списке; TQueueAsVector<MyDataType> создает контейнерный класс очереди, в котором можно запоминать объекты типа MyDataType с использованием вектора в качестве внутреннего механизма запоминания данных.

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

    На следующем шаге мы научимся создавать контейнер.




Предыдущий шаг Содержание Следующий шаг