ДЗ КМ-4: КМ-4. Более сложные элементы ООП. Домашнее задание Вариант 4 вариант 4
Описание
➡️ Помощь с другим вариантом ⬅️
➡️ Готовые работы по курсу ⬅️
СЕМИНАР 3. БОЛЕЕ СЛОЖНЫЕ ЭЛЕМЕНТЫ ОБЪЕКТНО- ОРИЕНТИРОВАННОГО ПРОГРАММИРОВАНИЯ
Цель семинара — освоение следующих элементов объектно- ориентированного программирования на С++: дружественные функции, конструктор копирования, переопределение операций.
Задание
Новые элементы добавляются в приложение обработки матриц семи- нара 1 (приложение с одним классом, без класса-наследника). Найдите или восстановите это приложение. Класс, имеющийся в этом приложе- нии, будем называть MATRIX. Результаты выполнения следующих пунк- тов 2-7 задания можно посмотреть в «Заготовке примера приложения » (параграф 2, следующий после Задания).
Добавьте в приложение класс VECTOR для обработки векторов. Ми- нимальный набор полей класса VECTOR: длина вектора и указатель на его начало. Минимальный набор методов класса VECTOR: конструктор, деструктор, ввод элементов вектора, вывод элементов вектора.
Добавьте в класс VECTOR конструктор копирования. Добавьте в функцию main инструкции, обеспечивающие вызов этих конструкторов копирования. Отладьте полученное приложение. Ответьте на вопросы: в каких случаях в классе должен быть конструктор копирования? При вы- полнении каких инструкций вызывается конструктор копирования?
В классе VECTOR переопределите операцию присваивания. Ответьте на вопрос: в каких ситуациях будет работать переопределенная операция присваивания? Напишите функцию main, которая проиллюстрирует ра- боту переопределенных операций присваивания. Отладьте полученное приложение.
Напишите функцию умножения матрицы на вектор, дружественную для обоих классов MATRIX и VECTOR. Обратите внимание, что прото- тип этой функции должен присутствовать в обоих классах, поэтому опи- санию класса MATRIX должно быть доступно описание класса VECTOR, а описанию класса VECTOR должно быть доступно описание класса MATRIX. Посмотрите, как для разрешения этой «цикличности» исполь- зуется краткое описание класса в Заготовке программы. Добавьте в функцию main приложения инструкции, обеспечивающие вызов этой дружественной функции. Поясните назначение дружественных функций и выигрыш от их использования. Отладьте полученное приложение.
В классе VECTOR переопределите операцию умножения. Переопре- деленная операция умножения должна выполнять скалярное произведе- ние векторов. Напишите функцию main, которая проиллюстрирует рабо- ту переопределенных операций умножения. Отладьте полученное прило- жение.
В классе VECTOR переопределите операции вставки для консольного и файлового вывода и ввода вектора. См. Заготовку программы.
По аналогии с пунктами 3, 4, 6 для класса VECTOR выполните для класса MATRIX следующие задания. и отладьте полученное приложение:
1)Добавьте в класс MATRIX конструктор копирования.
2)В классе MATRIX переопределите операцию присваивания.
3)В классе MATRIX переопределите операцию умножения. Пере- определенная операция умножения должна выполнять умножение двух матриц по правилам линейной алгебры.
В функцию main добавьте операторы, тестирующие добавления этого пункта. Отладьте полученное приложение.
Показать/скрыть дополнительное описаниеКМ-4. Более сложные элементы ООП. Домашнее задание Вариант 4.
Файлы условия, демо
Характеристики домашнего задания
Преподаватели
Список файлов
