Лабораторная работа 1.
Инкапсуляция, наследование, полиморфизм. Абстрактные классы.

Информация

Построение иерархии классов обычно начинается с выделения структурных и поведенческих сущностей, общих для всех классов будущей иерархии. Затем, на основе полученной информации, разрабатываются набор базовых, абстрактных классов, свойства и методы которых описывают выделенные сущности. Абстрактным назвается метод класса, для которого отсутствует реализация. Абстрактным называется свойство класса, доступ к которому реализуется через абстрактные методы. Абстрактным называется класс, в описание которого существует хотя-бы один абстрактный метод. Абстрактные свойства и методы реализуются(конкретизируются) в производных классах-потомках.

Задание

Разработать абстрактный класс TAbstractStack для поддержки стеков. Абстрактными должны определяться методы доступа к хранилищу данных. Класс должен позволять хранить данные различных типов.

Реализовать(конкретизировать) абстрактные методы доступа к хранилищу данных в производных классах потомках TMemoryStack(TAbstractStack) и TFileStack(TAbstractStack). TMemoryStack обеспечивает хранение данных в оперативной памяти, TFileStack - в файле. Шаблон программного модуля прилагается.

Провести комплексную проверку разработанных классов.

Дополнительное задание

В класс TAbstractStack добавить методы сохранения и чтения 1) динамических массивов целочисленных значений, 2) списков целочисленных значений, 3) бинарных деревьев целочисленных значений.
Расширенный пример модуля
Пример проверочной программы

  1. Доработать TAbstractStack
  2. Проверить хранение вещественных и строковых значений
  3. Попытаться сгенерировать все предусмотренные ошибки