Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ооп1

.docx
Скачиваний:
1
Добавлен:
28.12.2024
Размер:
205.36 Кб
Скачать

МИНОБРНАУКИ РОССИИ

САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ ЭЛЕКТРОТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

«ЛЭТИ» ИМ. В.И. УЛЬЯНОВА (ЛЕНИНА)

Кафедра ИС

ОТЧЕТ

по лабораторной работе №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, а также их методами и атрибутами. Диаграмма классов помогает лучше понять структуру приложения и взаимодействие между его компонентами.

Соседние файлы в предмете Объектно ориентированное программирование