
ПР_7
.docxМИНОБРНАУКИ РОССИИ
САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ ЭЛЕКТРОТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
«ЛЭТИ» ИМ. В.И. УЛЬЯНОВА (ЛЕНИНА)
Кафедра ИС
ОТЧЕТ
по лабораторной работе №7
по дисциплине «Объектно-ориентированное программирование»
Студенты гр.
Преподаватель Егоров С. С.
Санкт-Петербург 2024
Задание на практическую работу
Рисунок 1- Диаграмма классов работы №7
Разработать GUI приложение, выполняющее функцию визуализации ориентированного графа, задаваемого матрицей смежности, представленной в виде файла, структуру которого требуется разработать. На рис.6 представлен макет диаграммы классов приложения, который требуется реализовать в приложении.
Основной функцией объекта класса "Интерфейсное окно" является выбор файла, который содержит данные об ориентированном графе. При чтении файла необходимо проверить корректность данных и в случае обнаружения ошибки необходимо сформировать соответствующее сообщение пользователю.
При корректности данных создается объект класса "Ориентированный граф", устанавливаются (если необходимо) связи между новым объектом и существующими, после чего граф отображается в соответствующем окне (объект класса "Окно представления графа").
При выборе в интерфейсе другого графа (другого файла) старый должен заменяться на новый и перерисовываться.
Реализовать и отладить программу, удовлетворяющую сформулированным требованиям и заявленным целям. Разработать контрольные примеры и оттестировать на них программу. Оформить отчет, сделать выводы по работе.
Выполнение работы
Спецификация классов
Класс InterfaceWindow
Является основным окном приложения. Содержит область, где отображается граф.
Атрибуты:
graph_drawer: объект класса GraphDrawer, приватный
menuBar: QMenuBar, представляет строку меню, приватный
Методы:
unit_ui: метод для инициализации пользовательского интерфейса, приватный
load_graph: загружает граф из файла, приватный
Класс GraphDrawer
Отвечает за отрисовку графа.
Методы:
draw_graph: метод для отрисовки графа на экране, публичный
draw_arrow: отрисовывает стрелку, приватный
paint_event: метод, вызываемый при необходимости перерисовки окна. В данном методе происходит отрисовка графа на экране с использованием объекта QPainter, приватный
Класс Matrix
Представляет матрицу. Используется для хранения матрицы смежности графа.
Атрибуты:
data[]: список для хранения данных, приватный
Методы:
is_valid: метод, проверяющий является ли текущая матрица допустимой бинарной матрицей, публичный, возвращает True или False.
Класс Graph
Базовая структура для работы с графами. Содержит поле matrix, которое хранит матрицу, используемую для преставления графа.
Диаграмма классов
Рисунок 2 - диаграмма классов
Описание контрольных примеров с исходными и ожидаемыми данными
Пример 1.
Рисунок 3 - скриншот работы программы для примера 1
Пример 2.
Рисунок 4 - скриншот работы программы для примера 2
Пример 3.
Рисунок 5 - скриншот работы программы для примера 3
Пример 4.
Рисунок 6 - скриншот работы программы для примера 4
Пример 5.
Рисунок 7 - скриншот работы программы для примера 5
Пример 6.
Рисунок 8 - скриншот работы программы для примера 6
Пример 7.
Пример работы при некорректности данных.
Рисунок 9 - скриншот работы программы для примера 7
Вывод
В процессе выполнения этой лабораторной работы было создано графическое пользовательское приложение, которое отображает ориентированный граф, заданный матрицей смежности, сохраненной в файле. Были протестированы варианты различных матриц смежности и их вывод на экран.