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