ООП. Lab11. Наследование

Задание:

Описать базовый класс СТРОКА.

Обязательные поля класса:

— указатель на char – хранит адрес динамически выделенной памяти для размещения символов строки;

— значение типа int – хранит длину строки в байтах.

Обязательные методы должны выполнять следующие действия:

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

Описать производный от СТРОКА класс БИТОВАЯ_СТРОКА.

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

Отрицательные числа хранятся в дополнительном коде.

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

  • конструктор без параметров;
  • конструктор, принимающий в качестве параметра Си-строку (заканчивается нулевым байтом);
  • конструктор копирования;
  • деструктор;
  • изменение знака на противоположный (перевод числа в дополнительный код). Переопределить следующие операции (длина строки результата равна длине большей из строк; в случае необходимости более короткая битовая строка расширяется влево знаковым разрядом);
  • присваивание (=);
  • сложение (+) – арифметическая сумма строк;
  • операция (= =) – проверка на равенство.

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

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

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

Для конструкторов копирования каждого класса предусмотреть диагностическую печать количества его вызовов в определенное место дисплея (рекомендуется использовать статические члены класса).

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

 

Текст программы:

Файл «STRING.H»:

Файл «STRING.CPP»:

Класс «BITSTR.H»:

Файл «BITSTR.CPP»:

Класс «LAB11.CPP»:

Вывод: было изучено наследование в С++.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *