Библиотека String  1.0
Own String library. Лабораторная работа ФБИТ ИТМО
Лабораторная работа 6. Вариант 32.

Класс "Строка"

Обязательные члены класса

  • указатель на char - хранит адрес динамически выделенной памяти для размещения символов строки
  • значение типа int - хранит длину строки в байтах

Обязательные методы

  • конструктор без параметров
  • конструктор, принимающий в качестве параметра Си-строку (заканчивается нулевым байтом)
  • конструктор, принимающий в качестве параметра символ (char)
  • конструктор копирования
  • деструктор
  • получение символа из заданной позиции

Производный от "Строка" класс "Строка-идентификатор"

Строки данного класса строятся по правилам записи идентификаторов в СИ, и могут включать в себя только те символы, которые могут входить в состав Си-идентификаторов. Если исходные данные противоречат правилам записи идентификатора, то создается пустая СТРОКА_ИДЕНТИФИКАТОР.

Обязательные методы

  • конструктор без параметров
  • конструктор, принимающий в качестве параметра Си-строку (заканчивается нулевым байтом)
  • конструктор копирования
  • деструктор
  • подсчет количества цифр в строке

Переопределить следующие операции

  • присваивание (=)
  • объединение строк (&) - результатом является строка, содержащая все символы первой строки и символы второй строки, отсутствующие в первой

Производный от "Строка" класс "Битовая строка"

Строки данного класса могут содержать только символы '0' или '1'. Если в составе инициализирующей строки будут встречены любые символы, отличные от допустимых, БИТОВАЯ_СТРОКА принимает нулевое значение. Содержимое данных строк рассматривается как двоичное число. Отрицательные числа хранятся в дополнительном коде.

Обязательные методы

  • конструктор без параметров
  • конструктор, принимающий в качестве параметра Си-строку (заканчивается нулевым байтом)
  • конструктор копирования
  • деструктор
  • получение знака двоичного числа

Переопределить следующие операции

(длина строки результата равна длине большей из строк, в случае необходимости, более короткая битовая строка расширяется влево знаковым разрядом)

  • присваивание (=)
  • сумма по модулю 2 (^) - операция "исключающее или"
  • операция (==) - проверка на равенство

Задание

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

Написать тестовую программу, которая:

  • динамически выделяет массив указателей на базовый класс (до 6 шт.)
  • в режиме диалога заполняет этот массив указателями на производные классы, при этом экземпляры производных классов создаются динамически с заданием начальных значений
  • для созданных экземпляров производных классов выполняется проверка всех разработанных методов (в соответствии с вариантом задания), с выводом исходных данных и результатов на дисплей
  • для конструкторов копирования каждого класса предусмотреть диагностическую печать количества его вызовов в заданное место дисплея, (рекомендуется использовать статические члены класса)