Разработать шаблон классов TTemplateQueue для обработки очередей на базе циклических массивов. Шаблонизированный тип данных должен использоваться в качестве типа элемента очереди. Шаблон должен реализовывать интерфейс IEnumerable для поддержки языковой конструкции for .. in . Для использования конструкции for .. in следует разработать промежуточный класс, реализующий интерфейс IEnumerator (данный интерфейс предполагает перебор элементов класса TObject, что следует учитывать либо в механизмах хранения содержимого очереди, либо возвращать указатели на элементы очереди, приведенные к типу TObject). Подробнее об итераторах: здесь и здесь. Шаблон должен предусматривать хранение своего содержимого в потоке. Содержимое класса:
// создание-уничтожение Constructor Create(maxcount:integer); Destructor Destroy; // шаблонизированные методы procedure put ...; function get ...; // обычные методы function empty:boolean; function full:boolean; // работа с потоком Constructor Create(stream:tstream); Procedure Store(stream:TStream); Procedure Load(stream:TStream); // реализация интерфейса IEnumerator ...