Задание 4. Наследование
Каждому студенту рекомендуется выполнить хотя бы одно из упражнений 1-10.
1.Описать базовый класс CStr - строка. Обязательные поля класса CStr: указатель на char — хранит адрес динамически выделенной памяти для размещения символов строки; значение типа int — хранит длину строки в байтах. Обязательные методы должны выполнять следующие действия: конструктор без параметров; конструктор, принимающий в качестве параметра Си-строку (заканчивается нулевым байтом); конструктор, принимающий в качестве параметра символ; конструктор копирования; получение длины строки; очистка строки (сделать строку пустой); деструктор. Переопределить следующие операции: присваивание (=); сложение (+) — конкатенация строк; операция (==) - проверка на равенство. Описать производный от СStr класс CDstr - десятичная строка. Строки данного класса могут содержать только символы десятичных цифр и символы - и +, задающие знак числа. Символы - или + могут находиться только в первой позиции числа, причем символ + может отсутствовать, в этом случае число считается положительным. Если в составе инициализирующей строки будут встречены любые символы, отличные от допустимых, десятичная строка принимает нулевое значение. Содержимое данной строки рассматривается как десятичное число. Класс CDStr содержит следующие методы: конструктор без параметров; конструктор, принимающий в качестве параметра Си-строку (заканчивается нулевым байтом); конструктор копирования; деструктор; метод, преобразующий данную строку в целое число. Переопределить следующие операции: присваивание (=); вычитание (-) — арифметическая разность строк; операция >— проверка на больше (по значению); операция < — проверка на меньше (по значению). Написать демонстрационную программу.
2.Описать базовый класс CStr – строка (см. задачу 1). Описать производный от СStr класс CSStr – шестнадцатеричная строка. Строки данного класса могут содержать только шестнадцатиричные символы. Если в составе инициализирующей строки будут встречены любые символы, отличные от допустимых, строка принимает нулевое значение. Содержимое данной строки рассматривается как знаковое шестнадцатеричное число.. Класс CSStr содержит следующие методы: конструктор без параметров; конструктор, принимающий в качестве параметра Си-строку (заканчивается нулевым байтом); конструктор копирования; деструктор, метод, преобразующий данную строку в целое десятичное число, метод изменение знака на противоположный (перевод числа в дополнительный код). Переопределить следующие операции: присваивание (=); сложение (+) — арифметическая сумма строк; операция (==) — проверка на равенство. Написать демонстрационную программу.
3.Описать базовый класс CStr – строка (см. задачу 1). Описать производный от CStr класс CStr_ID – строка - идентификатор. Строки данного класса строятся по правилам записи идентификаторов в языке С и могут включать в себя только те символы, которые могут входить в состав С-идентификаторов. Если исходные данные противоречат правилам записи идентификатора, то создается пустая строка-идентификатор. Класс CStr_ID содержит следующие методы: конструктор без параметров; конструктор, принимающий в качестве параметра Си-строку (заканчивается нулевым байтом); конструктор, принимающий в качестве параметра символ; конструктор копирования; деструктор. Переопределить следующие операции: присваивание (=); больше (>) - проверка на больше. (Строка считается больше другой, если код символа первой строки в i-й позиции, i изменяется от 0 до n-1, где n — длина более короткой строки, больше кода символа в той же позиции во второй строке, длины строк могут не совпадать), меньше (<) - проверка на меньше. Написать демонстрационную программу.
4.Описать базовый класс CStr – строка (см. задачу 1). Описать производный от CStr класс CStr_С – строка – комментарий. Строки данного класса строятся по правилам записи комментариев в С++. Если исходные данные противоречат правилам записи идентификатора, то создается пустая строка-идентификатор. Класс CStr_С содержит следующие методы: конструктор без параметров; конструктор, принимающий в качестве параметра Си-строку (заканчивается нулевым байтом); конструктор копирования; перевод всех символов строки в верхний регистр; перевод всех символов строки в нижний регистр; поиск первого вхождения символа в строку; деструктор. Переопределить следующие операции: присваивание (=); сложение (+) - операция конкатенации строк; вычитание (-) — из строки (первый операнд) удаляются все символы, входящие в строку, — второй операнд, при этом может получиться пустая строка. Написать демонстрационную программу.
5.Описать базовый класс CStr – строка (см. задачу 1). Описать производный от CStr класс CСomplex– комплексное число. Строки данного класса состоят из двух полей, разделенных символом i. Каждое из полей может содержать только символы десятичных цифр и символы + и -, задающие знак числа. Символы + и – могут находиться только в первой позиции числа, причем символ + может отсутствовать. Если исходные данные противоречат правилам записи комплексного числа, то комплексное число принимает нулевое значение. Класс CStr_ID содержит следующие методы: конструктор без параметров; конструктор, принимающий в качестве параметра Си-строку (заканчивается нулевым байтом); конструктор копирования; деструктор. Переопределить следующие операции: присваивание (=); операция (==) – проверка на равенство; умножение (-). Написать демонстрационную программу.
6.Создать класс CPoint — точка. На его основе создать классы CcoloredPoint – цветная точка и Cline - линия. На основе класса CLine создать класс CcoloredLine – цветная линия. Все классы должны иметь методы для установки и получения значений всех координат. Классы CcoloredPoint и CcoloredLine должны иметь обязательные поля – 2 точки и имя, обязательные методы для изменения цвета и получения текущего цвета. Классы CLine и CcoloredLine должны иметь конструкторы без параметров, конструктор, принимающий в качестве параметров 2 точки (и цвет), конструктор копирования. Определить методы, проверяющие, являются ли линии параллельные, перпендикулярными. Переопределить операции присваивания (=), сравнения (==) – проверка на совпадение линий. Написать демонстрационную программу.
7.Описать класс Cpoint - точка. Описать класс прямоугольник CRectangle. Обязательные поля класса CRectangle: char* - имя прямоугольника, 4 объекта класса CPoint, 4 поля типа double – стороны прямоугольника. Обязательные методы должны выполнять следующие действия: конструктор без параметров (нулевого прямоугольника); конструктор, принимающий в качестве параметра 4 точки, конструктор копирования; метод получения площади, метод получения периметра, деструктор. Переопределить операцию присваивания (=). Описать производный класс CQuadrate – квадрат. Обязательные методы должны выполнять следующие действия: конструктор без параметров (нулевого квадрата); конструктор, принимающий в качестве параметра 4 точки, конструктор копирования; метод получения площади, метод получения периметра, деструктор. Переопределить следующие операции: присваивание (=); операцию (==) – сравнение по площади. Написать демонстрационную программу.
8.Описать класс CPoint - точка. Описать класс прямоугольник CRectangle (см. задачу 7). Описать производный класс CTrapezoid – трапеция. Обязательные методы должны выполнять следующие действия: конструктор без параметров (нулевого квадрата); конструктор, принимающий в качестве параметра 4 точки, конструктор копирования; метод получения площади, метод получения периметра, деструктор, метод, проверяющий, является ли трапеция равнобедренной. Переопределить операцию присваивания (=). Для классов CRectangle и CTrapezoid определить метод, проверяющий две фигуры на пересечение. Написать демонстрационную программу.
9.Описать класс CPoint - точка. Описать класс четырехугольник CTetragon. Обязательные поля класса CTetragon: char* - имя прямоугольника, 4 объекта класса CPoint, 4 поля типа double – стороны четырех угольника. Обязательные методы должны выполнять следующие действия: конструктор без параметров (нулевого прямоугольника); конструктор, принимающий в качестве параметра 4 точки, конструктор копирования; метод получения периметра, деструктор. Переопределить операцию присваивания (=), операцию (<) – сравнение по длине периметра. Описать производный класс CRectangle – прямоугольник. Обязательные методы должны выполнять следующие действия: конструктор без параметров (нулевого квадрата); конструктор, принимающий в качестве параметра 4 точки, конструктор копирования; метод получения периметра, деструктор. Переопределить следующие операции: присваивание (=); операцию (<) – сравнение по длине периметра. Для классов CTetragon и CRectangle определить метод, определяющий факт включения одной фигуры в другую. Написать демонстрационную программу.
10.Описать класс CPoint - точка. Описать класс четырехугольник CTetragon (см. задачу 9). Описать производный класс СParallelogram – параллелограмм. Обязательные методы должны выполнять следующие действия: конструктор без параметров (нулевого параллелограмма); конструктор, принимающий в качестве параметра 4 точки, конструктор копирования; метод получения площади, метод получения периметра, деструктор. Переопределить следующие операции: присваивание (=); операцию (<) – сравнения по площади. Для классов CTetragon и СParallelogram определить метод, перемещения на плоскости. Написать демонстрационную программу.
[1] Идентификатор size_type является синонимом типа unsigned int.
Дата добавления: 2015-10-09; просмотров: 1688;