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

oop_8

.pdf
Скачиваний:
0
Добавлен:
29.12.2024
Размер:
500.43 Кб
Скачать

МИНОБРНАУКИ РОССИИ САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ ЭЛЕКТРОТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ «ЛЭТИ» ИМ В.И. УЛЬЯНОВА (ЛЕНИНА) Кафедра Информационной безопасности

ПРАКТИЧЕСКАЯ РАБОТА №8 По дисциплине «Объектно-ориентированное программирование»

Санкт-Петербург

2023

Задание

на практическую работу

Исходные данные: разработать GUI приложение, выполняющее функцию визуализации ориентированного графа, задаваемого матрицей смежности, представленной в виде файла, структуру которого требуется разработать. На рис.6 представлен макет диаграммы классов приложения,

который требуется реализовать в приложении. Основной функцией объекта класса "Интерфейсное окно" является выбор файла, который содержит данные об ориентированном графе. При чтении файла необходимо проверить корректность данных и в случае обнаружения ошибки необходимо сформировать соответствующее сообщение пользователю. Реализовать и отладить программу, удовлетворяющую сформулированным требованиям и заявленным целям. Разработать контрольные примеры и оттестировать на них программу. Оформить отчет, сделать выводы по работе.

СОДЕРЖАНИЕ

Задание на практическую работу

............................................................... 2

Теоретическое введение ...............................................................................

4

Решение поставленной задачи .....................................................................

6

Вывод............................................................................................................

15

Теоретическое введение

Разработать GUI приложение, выполняющее функцию визуализации графа состояний.

Граф состояний - это ориентированный граф, одна из вершин которого в каждый момент времени считается активной. Каждой дуге приписано некоторое событие, при возникновении которого происходит смена активной вершины.

Граф состояний описывается матрицей, число строк которой равно числу вершин, а число столбцов - числу событий. Элементом i-ой строки и j-го столбца является номер строки (т.е. соответствующая ей вершина графа),

которая становится активной при возникновении j-го события, если при этом вершина i была активна.

На рис.1 представлен макет диаграммы классов приложения, который требуется реализовать в приложении.

Основной функцией объекта класса "Интерфейсное окно" является выбор файла, который содержит данные о графе состояний. При чтении файла необходимо проверить корректность данных и в случае обнаружения ошибки необходимо сформировать соответствующее сообщение пользователю.

Номер активной вершины также задается в интерфейсе.

При корректности данных создается объект класса "Граф состояний",

устанавливаются (если необходимо) связи между новым объектом и существующими, после чего граф отображается в соответствующем окне

(объект класса "Окно представления графа").

Активная вершина помечается цветом. При смене значения номера активной вершины должны происходить изменения в отображении.

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

При выборе в интерфейсе другого графа (другого файла) старый должен заменяться на новый, номер активной вершины принимать исходное

(корректное) значение и граф перерисовываться.

Реализовать и отладить программу, удовлетворяющую сформулированным требованиям и заявленным целям. Разработать контрольные примеры и оттестировать на них программу. Оформить отчет, сделать выводы по работе.

Решение поставленной задачи

Структура файла:

в качестве примера возьму набор из трех узлов, находящихся в файле-примере example.txt:

0:[1,0,1]

1:[0,1,0]

2:[1,0,1]

первое число (перед двоеточием) – это номер узла, после двоеточия идет массив "связей", где цифра "0" или "1" означает связь с узлом под номером индекса этой цифры. В случае пример можно заметить, что нулевой узел связан с нулевым узлом (сам с собой) и со вторым узлом, первый узел связан только с самим собой (то есть у него нет связей с другими), второй узел связан с нулевым и, разумеется, с самим собой. Таким образом будет картина,

показанная на рисунке 2.

При этом если хоть в одном из узлов, указана связь с другим, а у того, у которого с ним указана связь - нет, то связь все равно будет построена из расчета на то, что тот, кто создавал файл связей просто ошибся. Но если файл будет содержать что-то кроме структуры связей узлов, например посторонние символы или неправильную структуру, то пользователю будет выведено сообщение об ошибке чтения. Например, если вместо 0:[1,0,1] будет

0:[,0,1] , сообщение об ошибке будет выведено рисунок 3.

При запуске программы появляется главное окно, которое предлагает пользователю ввести путь к файлу (рис. 4). Если пользователь не выберет путь к файлу, то появится следующая ошибка (рис. 5). При успешном открытии файла будет выведено сообщение “Successfully opened” (рис. 6). После этого,

пользователь может вывести графы в виде рисунка (рис. 7). При рисовании нового графа, старый удаляется (рис. 8).

Рисунок 1. Рисование выбранного графа

Рисунок 2. Ошибка чтения файла

Рисунок 3. Начальное окно

Рисунок 4. Ошибка открытия файла

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