logo
Разработка виртуальной лаборатории для поиска минимального маршрута

3. Архитектура программного кода

На схеме ниже представлена структура классов виртуального стенда (рисунок 4).

Описание классов:

1. Console - интерфейс для реализации лабораторного стенда.

2. Node - класс, описывающий вершину графа:

o int x, y - координаты узла;

o void setCoords(int x, int y) - устанавливает координаты;

o int[] getCoords() - возвращает координаты;

3. Edge - класс, реализующий ребро графа:

o int[] nodes - ID вершин, которые соединяет ребро;

o int[] getNodes - возвращает вершины, соединяемые ребром.

4. Front - класс, интерпретирующий фронт волнового алгоритма:

o int[] nodes - вершины, образующие фронт;

o void add(int index) - добавляет вершину во фронт;

o int findNode(int index) - проверка на наличие во фронте; если вершина найдется, то возвратится ее индекс во фронте, инасе возвратится -1;

o int[] getNodes() - возвращает вершины фронта;

o int getNodesCount() - возвращат размер фронта;

o void remove(int index) - удаляет вершину из фронта.

5. Graph - класс, описывающий граф:

o Edge[] edges - массив рёбер графа

o Node[] nodes - массив вершин графа;

o Frontd[] fronts - масств созданных фронтов волнового алгоритма.

o int edgesCount, nodesCount, frontdCount - число рёбер, узлов и размеченных фронтов в графе;

o int finish, start - концы маршрута;

o void addEdge(int[] nodes)- добавляет в граф ребро;

o void addFront() - создает новый фронт в графе;

o void addToFront(int index) - добавляет узел во фронт;

o void removeEdge(int[] nodes) - удаляет ребро;

o void removeFront() - удаляет текущий фронт;

o boolean isAllNodesMarked() - проверка на полную раскраску графа;

o void removeFromFront(int index) - удаление вершины из фронта.

6. Laboratory - класс апплета виртуального стенда:

o String answer - строка ответа аттестующегося;

o Graph graph - граф, на котором реализуется задание;

o int step - текущий шаг прохождения лабораторной работы;

o void changeMark(Graphics g, int clickedNode) - изменение разметки вершины;

o void initComponents() - инизиализация компонентов интерфейса;

o void paintEdge(Graphics g, int first, int second) - отрисовка ребра;

o void paintNode(Graphics g, int index) - отрисовка вершины;

o void paintGraph(JPanel panel, int nodesCount) - отрисовка графа;

o void setNewStartNode(Graphics g, int node) - установка новой начальной точки на четвертом этапе - вычислении эксцентриситетов;

Рисунок 2 - Схема классов виртуального стенда

4. Описание формата ответа и тестовых наборов