3Лабораторные работы №1 по курсу «Язык программирования Java» В данном разделе приведены не полные описания заданий (не включающие, в частности, ссылки и указания студентам по выполнению задачи).
3.1Лабораторная работа 1.1. Сетевая модель Краткое описание
Реализовать описанную ниже объектную модель сети или аналогичную ей. На базе этой модели реализовать алгоритмы маршрутизации (routing) по различным критериям.
Детальное описание
Один из возможных вариантов модели представлен на UML диаграмме. Детализацию классов предлагается разработать самостоятельно исходя из предметной области. Возможна другая реализация модели сети, если кому-то она покажется (аргументировано) более удачной.
Сама сеть состоит из набора PathElement'ов. Метод getConnections() возвращает ближайших соседей данного элемента, а методы getTimeDelay() и getCosts() затраты денег и времени на прохождение пакетом данного узла. Маршрутом называется упорядоченная последовательность PathElement'ов начинающаяся с одного заданного элемента и заканчивающаяся на другом заданном элементе.
Задача состоит в том, чтобы в объекте класса Network находить маршруты между заданными узлами, т.е. должен быть реализован класс NetworkTest, который
хранит объект/объекты Network (hard code/подгружаемые с диска)
хранит список классов RouteProvider (hard code/динамически подгружаемые по Reflection)
по команде с консоли route network, provider, id1, id2 или route –ip network, provider, ip1, ip2 выводит один или несколько найденных маршрутов, где network – название модели сети, provider – название провайдера для поиска маршрута, id – уникальный id элемента сети, а ip – ip адрес одного из активных элементов сети.
Описание модели
Описание алгоритмов
На базе данной модели реализовать поиск маршрута между двумя произвольно заданными элементами сети по следующим алгоритмам:
с наименьшей задержкой по времени
с наименьшей стоимостью
с наименьшим числом промежуточных узлов
…
Требования
Звездочками * отмечены обязательные требования, в скобках – количество баллов (может быть уменьшено, если требование реализовано не полностью, с ошибками, с замечаниями и т.п.).
детальное UML представление модели вашей программы (6)
реализация модели, классы должны переопределять методы интерфейса PathElement, учитывая особенности конкретного устройства, например, Firewall может пропускать пакеты далеко не по всем физически доступным соединениям, это задается отдельно в его конфигурации и т.д. (5) *
реализация любого алгоритма поиска пути (5) *
графическое представление используемых моделей сетей, любая картинка, чтобы проверяющему было легче понять вашу тестовую модель (2) *
сохранение загрузка через Serialization API (3)
сохранение загрузка через XML (4)
реализация дополнительных алгоритмов поиска пути (5)
реализация поиска пути в виде plug-in'ов, подгружаемых по reflection (3)
вывод всех элементов пути/только активных (3)
архитектура всего приложения, code style, java doc и прочие вещи на усмотрение куратора (6)
Модификации задания
На усмотрение куратора можно менять модель в данной задаче, желательно придерживаться следующей логики, что модель должна представляться графом, а работа с моделью реализацией одного из возможных алгоритмов на графах. Возможно более детальная проработка предложенной модели. Например, Firewall метод getConnections() должен быть переопределен и учитывать не только физические соединения, но и таблицу допустимых маршрутов. И т.д.
Итого за задачу: 42 балла
|