СЕМИНАР 3. Более сложные элементы ООП 28 вариант МЭИ 6 семестр
Описание
1. Новые элементы добавляются в приложение обработки матриц семинара 1 (приложение с одним классом, без класса-наследника). Найдите или восстановите это приложение. Класс, имеющийся в этом приложении, будем называть MATRIX. Результаты выполнения следующих пунктов 2-7 задания можно посмотреть в «Заготовке примера приложения» (параграф 2, следующий после Задания). 2. Добавьте в приложение класс VECTOR для обработки векторов. Минимальный набор полей класса VECTOR: длина вектора и указатель на его начало. Минимальный набор методов класса VECTOR: конструктор, деструктор, ввод элементов вектора, вывод элементов вектора. 3. Добавьте в класс VECTOR конструктор копирования.
Добавьте в функцию main инструкции, обеспечивающие вызов этих конструкторов копирования. Отладьте полученное приложение. Ответьте на вопросы: в каких случаях в классе должен быть конструктор копирования? При выполнении каких инструкций вызывается конструктор копирования? 4. В классе VECTOR переопределите операцию присваивания. Ответьте на вопрос: в каких ситуациях будет работать переопределенная операция присваивания? Напишите функцию main, которая проиллюстрирует работу переопределенных операций присваивания. Отладьте полученное приложение. 5. Напишите функцию умножения матрицы на вектор, дружественную для обоих классов MATRIX и VECTOR. Обратите внимание, что прототип этой функции должен присутствовать в обоих классах, поэтому описанию класса MATRIX должно быть доступно описание класса VECTOR, а описанию класса VECTOR должно быть доступно описание класса MATRIX.
Посмотрите, как для разрешения этой «цикличности» используется краткое описание класса в Заготовке программы. Добавьте в функцию main приложения инструкции, обеспечивающие вызов этой 2 дружественной функции. Поясните назначение дружественных функций и выигрыш от их использования. Отладьте полученное приложение. 6. В классе VECTOR переопределите операцию умножения. Переопределенная операция умножения должна выполнять скалярное произведение векторов. Напишите функцию main, которая проиллюстрирует работу переопределенных операций умножения. Отладьте полученное приложение. 7. В классе VECTOR переопределите операции вставки для консольного и файлового вывода и ввода вектора.
См. Заготовку программы. 8. По аналогии с пунктами 3, 4, 6 для класса VECTOR выполните для класса MATRIX следующие задания. и отладьте полученное приложение: 1) Добавьте в класс MATRIX конструктор копирования. 2) В классе MATRIX переопределите операцию присваивания. 3) В классе MATRIX переопределите операцию умножения. Переопределенная операция умножения должна выполнять умножение двух матриц по правилам линейной алгебры. В функцию main добавьте операторы, тестирующие добавления этого пункта. Отладьте полученное приложение..