
ооп1
.docxМИНОБРНАУКИ РОССИИ
САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ ЭЛЕКТРОТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
«ЛЭТИ» ИМ. В.И. УЛЬЯНОВА (ЛЕНИНА)
Кафедра ИС
ОТЧЕТ
по лабораторной работе №1
по дисциплине «Объектно-ориентированное программирование»
-
Студенты гр.
Преподаватель
Егоров С. С.
Санкт-Петербург 2024
Задание на практическую работу
Рисунок
1- Диаграмма классов работы №1
Создать консольное приложение согласно представленной на рис.1 диаграмме классов, предназначенное для заданных вычислений над квадратной матрицей, заданной на множестве вещественных чисел. Для этого необходимо специфицировать пользовательские классы "Консольное приложение" и "Квадратная матрица", т.е. задать атрибуты и методы указанных классов, а также распределить их по существующим областям видимости. Спецификация классов и реализация их методов должна обеспечивать реализацию отношений, указанных на диаграмме классов. В отчете представить аргументированное обоснование своего выбора.
Приложение должно включать основной модуль (функция main), модуль «application» и модуль «matrix».
В основном модуле консольного приложения (для языка С++ - это модуль с функцией main) должен создаваться объект класса "Консольное приложение" и вызываться его метод, который предоставляет пользователю меню команд приложения.
Модуль «application» должен содержать спецификацию класса "Консольное приложение" и реализацию его методов. Один из его методов должен выводить в консоль меню команд приложения, включающее:
команду, инициирующую ввод с консоли значений, задающих объект матрицы (до ввода в программе должна быть задана матрица по умолчанию);
команду, инициирующую расчет определителя матрицы и вывод результатов расчета;
команду, инициирующую формирования транспонированной матрицы и ее вывода в консоль;
команду, инициирующую расчет ранга матрицы и вывод результатов расчета;
команду, инициирующую представление в консоль текущего объекта матрицы;
команду выхода из приложения.
Модуль «matrix» должен содержать спецификацию класса "Квадратная матрица" и реализацию его методов, необходимых для достижения цели разрабатываемого приложения. Описание класса должно использовать вместо типа double (вещественное число, заданное в условии) абстрактный тип number, описание которого должно задаваться в отдельном заголовочном файле number.h с помощью оператора typedef double number (для С++).
ВАЖНО. Основное требование к реализации класса «matrix» заключается в том, что она должна быть инвариантна (одна и та же для различных вариантов использования) ко множеству применимых объектов. Здесь задано множество определения элементов матрицы как вещественное, а может быть и множества целых, комплексных, рациональных и т.д. Для различных множеств при сохранении функциональности реализация класса должна быть одна и та же. Если для различных множеств менять реализацию, то теряется смысл ООП как парадигмы.
Требуется реализовать и отладить программу, удовлетворяющую сформулированным требованиям и заявленным целям. Разработать контрольные примеры и оттестировать на них программу. Оформить отчет, сделать выводы по работе.
Выполнение работы
Класс Matrix – класс, задающий по умолчанию единичную матрицу 3х3.
Данные самой матрицы – приватные.
Методы класса:
getitem: приватный метод для доступа к элементам матрицы
через оператор []. Возвращает строку матрицы по индексу.
get_number_of_rows: приватный метод, возвращающий число строк в матрице.
get_number_of_columns: приватный метод, возвращающий число столбцов в матрице.
get_minor: вспомогательный метод для получения k-ого минора матрицы.
det_count: рекурсивный метод для вычисления определителя матрицы.
det: публичный метод для нахождения определителя матрицы.
print: публичный метод для вывода матрицы на печать.
rank: метод для расчета ранга матрицы.
transpose: метод для транспонирования матрицы.
set_data: метод для установки новых данных в матрицу.
Класс App - класс, отвечающий за работу пользователя с матрицей и отображение матрицы.
Методы класса:
show_command_menu: приватный метод, выводит меню команд на экран.
execute: публичный метод, запускает выполнение приложения.
Создает объект матрицы, отображает меню команд, принимает выбор пользователя и выполняет соответствующие действия в цикле, пока пользователь не выберет выход из приложения.

Рисунок 2 - диаграмма классов
Диаграмма
классов
Описание контрольных примеров с исходными и ожидаемыми данными
Пример 1. Ввод и вывод матрицы
Рисунок 3 - пример работы 1
Пример 2. Ранг и определитель
Исходные данные:
Ожидаемые данные: ранг = 3, определитель = 204.
Рисунок 4 - пример работы 2
Исходные данные:
Ожидаемые данные: ранг = 4, определитель = 18.
Рисунок 5 - пример работы 2
Пример 3. Транспонирование матриц
Исходные данные:
Ожидаемые данные:
Рисунок 6 - пример работы 3
Исходные данные:
Ожидаемые данные:
Рисунок 7 - пример работы 3
Вывод
В ходе данной практической работы было создано консольное приложение для работы с матрицей. Для этого были специфицированы классы App и Matrix, реализованы их методы.
Приложение позволяет пользователю вводить матрицу, вычислять определитель, транспонировать матрицу, определить ранг матрицы и выводить текущую матрицу на экран. Пользователь может выбирать действия из меню команд, пока не решит завершить программу.
Была построена диаграмма классов, отражающая связи между классами App и Matrix, а также их методами и атрибутами. Диаграмма классов помогает лучше понять структуру приложения и взаимодействие между его компонентами.