Скачиваний:
0
Добавлен:
28.12.2024
Размер:
807.54 Кб
Скачать

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

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

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

Кафедра ИС

ОТЧЕТ

по лабораторной работе №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

Вывод

В процессе выполнения этой лабораторной работы было создано графическое пользовательское приложение, которое отображает ориентированный граф, заданный матрицей смежности, сохраненной в файле. Были протестированы варианты различных матриц смежности и их вывод на экран.

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