
ПР_3
.docxМИНОБРНАУКИ РОССИИ
САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ ЭЛЕКТРОТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
«ЛЭТИ» ИМ. В.И. УЛЬЯНОВА (ЛЕНИНА)
Кафедра ИС
ОТЧЕТ
по лабораторной работе №3
по дисциплине «Объектно-ориентированное программирование»
Студенты гр.
Преподаватель Егоров С. С.
Санкт-Петербург 2024
Задание на практическую работу
Рисунок 1- Диаграмма классов работы №3
Создать GUI приложение, реализующее функции перечисленные в описании работы №1, но на множестве рациональных чисел. Для этого требуется
Приложение должно включать основной модуль, модуль «interface», модуль «matrix», модуль «rational» и файл number.h:
При необходимости расширения функциональности класса «Квадратная матрица» следует только дополнить его протокол без каких-либо изменений уже существовавшей реализации.
Реализовать и отладить программу, удовлетворяющую сформулированным требованиям и заявленным целям. Разработать контрольные примеры и оттестировать на них программу. Оформить отчет, сделать выводы по работе.
Выполнение работы
Спецификация классов
Класс Matrix – класс, задающий по умолчанию единичную матрицу 3х3. Атрибуты класса:
data: тип array[array[number]], приватный, содержит числовые данные матрицы.
Методы класса:
getitem: публичный метод для доступа к элементам матрицы через оператор []. Возвращает строку матрицы по индексу.
Является «магическим» методом python, перегружающим оператор [].
get_number_of_rows: публичный метод, возвращающий число строк в матрице.
get_number_of_columns: публичный метод, возвращающий число столбцов в матрице.
get_minor: приватный вспомогательный метод для получения k- ого минора матрицы, принимает на вход число k, возвращает array[array[number]].
det_count: приватный рекурсивный метод для вычисления определителя матрицы, на вход получает array[array[number]], возвращает number.
det: публичный метод для нахождения определителя матрицы, возвращает number.
print: публичный метод для вывода матрицы на печать, ничего не принимает и не возвращает.
rank: метод для расчета ранга матрицы, возвращает ранг матрицы (integer).
transpose: метод для транспонирования матрицы, ничего не принимает и не возвращает, изменяет атрибут data .
set_data: метод для ввода новых данных в матрицу, на вход принимает array[array[number]], ничего не возвращает, изменяет атрибут data
Класс App - класс, отвечающий за работу пользователя с матрицей и отображение матрицы.
Методы класса:
show_command_menu: приватный метод, выводит меню команд на экран.
execute: публичный метод, запускает выполнение приложения. Создает объект матрицы, отображает меню команд, принимает выбор пользователя и выполняет соответствующие действия в цикле, пока пользователь не выберет выход из приложения.
Класс TComplex – класс, предназначенный для работы с комплексными
числами.
str: является «магическим» методом в python, перегружающим приведение
типа к строке, возвращает строковое представление комплексного числа, на вход
ничего не принимает, возвращает str.
abs: является «магическим» методом в python, перегружающим ф-ию abs(),
возвращает модуль комплексного числа типа float, на вход ничего не принимает.
eq: является «магическим» методом в python, перегружающим оператор ==,
проверяет равенство двух комплексных чисел, на вход ничего не принимает,
возвращает bool.
ne: является «магическим» методом в python, перегружающим оператор !=,
проверяет неравенство двух комплексных чисел, на вход ничего не принимает,
возвращает bool.
add: является «магическим» методом в python, перегружающим оператор +,
выполняет сложение двух комплексных чисел, на вход принимает второе
слагаемое, принадлежащее классу TComplex, возвращает объект класса TComplex.
mul: является «магическим» методом в python, перегружающим оператор *,
выполняет умножение двух комплексных чисел, на вход принимает второй
множитель, принадлежащий классу TComplex, возвращает объект класса
TComplex.
sub: является «магическим» методом в python, перегружающим оператор -,
выполняет вычитание двух комплексных чисел, на вход принимает второй
множитель, принадлежащий классу TComplex, возвращает объект класса
TComplex.
truediv: является «магическим» методом в python, перегружающим
оператор /, выполняет деление двух комплексных чисел, на вход принимает
делитель, принадлежащий классу TComplex, возвращает объект класса TComplex.
Класс TRational – класс, предназначенный для работы с рациональными числами.
eq: является «магическим» методом в python, перегружающим оператор ==,
проверяет равенство двух рациональных чисел, на вход ничего не принимает,
возвращает bool.
ne: является «магическим» методом в python, перегружающим оператор !=,
проверяет неравенство двух рациональных чисел, на вход ничего не принимает,
возвращает bool.
abs: является «магическим» методом в python, перегружающим функцию abs(),
возвращает модуль рационального числа, на вход ничего не принимает.
str: является «магическим» методом в python, перегружающим приведение
типа к строке, возвращает строковое представление рационального числа, на вход
ничего не принимает, возвращает str.
mul: является «магическим» методом в python, перегружающим оператор *,
выполняет умножение двух рациональных чисел, на вход принимает второй
множитель, принадлежащий классу TRational, возвращает объект класса
TRational.
add: является «магическим» методом в python, перегружающим оператор +,
выполняет сложение двух рациональных чисел, на вход принимает второе
слагаемое, принадлежащее классу TRational, возвращает объект класса TRational.
sub: является «магическим» методом в python, перегружающим оператор -,
выполняет вычитание двух рациональных чисел, на вход принимает второй
множитель, принадлежащий классу TRational, возвращает объект класса
TRational.
truediv: является «магическим» методом в python, перегружающим
оператор /, выполняет деление двух рациональных чисел, на вход принимает
делитель, принадлежащий классу TRational, возвращает объект класса TRational.
nod: вспомогательный метод, использующийся для поиска НОД, на вход ничего не принимает, возвращает целочисленное значение – НОД числителя и знаменателя.
reduce: вспомогательный метод для сокращения дроби. На вход ничего не принимает, возвращает сокращенную дробь.
gt: принимает на вход второе рациональное число, сравнивает их и возвращает bool. ??
Диаграмма классов
Рисунок 2 - диаграмма классов
Описание контрольных примеров с исходными и ожидаемыми данными
Пример 1. Определитель и ранг матрицы.
Исходные данные:
Ожидаемые данные:
Ранг = 2.
Результат:
Определитель:
Ранг:
Пример 2. Транспонирование матрицы.
Исходные данные:
Ожидаемые данные:
Результат:
Транспонированная матрица:
Вывод
В результате выполнения данной практической работы было разработано графическое приложение, которое реализует функционал, описанный в задании №1 для множества рациональных чисел. Был создан класс TRational в дополнение к уже существующим классам. Были реализованы и описаны методы класса. Была разработана диаграмма классов, отражающая взаимосвязи между созданными классами.