Лабораторная работа №25. Понятие графа. Алгоритмы поиска кратчайших путей


Создание диаграммы последовательностей


Download 1.45 Mb.
bet37/39
Sana13.09.2023
Hajmi1.45 Mb.
#1677325
TuriЛабораторная работа
1   ...   31   32   33   34   35   36   37   38   39
Bog'liq
Blok 5

Создание диаграммы последовательностей
Создадим в этом же проекте (модуле) файл диаграммы последовательностей.

Имя диаграммы: LibrarySequenceDiagram. Так как это диаграмма последовательности, то с помощью её мы сможем показать, какова же последовательность действий в проектируемой системе.
Иначе говоря, что же будет делать система при наступлении той или иной ситуации?
Разработаем две диаграммы последовательности: одну для сценария нахождения чего­либо в библиотеке по его имени (name), вторую для сценария удаления чего­либо из библиотеки по идентификатору (ID).
Полную информацию о спецификации PlantUML для диаграмм последовательностей можно посмотреть в файле PlantUML_Language_Reference_Guide​ или по адресу http://plantuml.sourceforge.net/sequence.html.​
Сценарий нахождения чего-либо в библиотеке по имени
Сначала необходимо определить объекты, которые посылают друг другу сообщение (иначе говоря, вызывают или каким­либо образом используют друг друга). Когда в классе Library вызывается функция findEntityByName(), то эта функция будет брать список всех сущностей LibraryEntityList, хранящихся в библиотеке, и выполнять в нем поиск. Почему этот список сущностей не был указан в атрибутах в диаграмме классов? Потому что этот список там представлен в виде двусторонней ассоциации. Поэтому имя этого списка будет в диаграмме последовательности, но не будет в диаграмме классов.
Функция findEntityByName() будет вызываться классом­клиентом библиотеки LibraryClient, которого также не было на диаграмме классов. Таким образом, можно написать следующий код, отображающийся в UML.
@startuml
LibraryClient ­> Library : findEntityByName(name : String)
Library ­> LibraryEntityList : getEntity
LibraryEntityList ­> Library: anEntity
@enduml

В диаграмме происходит следующее: LibraryClient вызывает у Library метод findEntityByName,
Library запрашивает у списка LibraryEntityList одну сущность, и эта сущность передается библиотеке.
Так как при поиске необходимого элемента в библиотеке происходит перебор всех элементов, то в диаграмме необходимо отобразить, что этот процесс происходит в цикле. Также нужно указать, что каждый раз после возврата элемента из списка происходит проверка на соответствие поисковой строке.
@startuml
LibraryClient ­> Library : findEntityByName(name : String) loop all entities in list
Library ­> LibraryEntityList : getEntity
LibraryEntityList ­> Library : anEntity
alt anEntity.name == name
Library ­> LibraryClient : anEntity
end end @enduml

Однако по такой диаграмме последовательности становится понятно, что в LibraryClient будут “возвращаться” много элементов библиотеки, если они будут подходить под поисковый запрос. Значит, необходимо возвращать результаты запроса не отдельными элементами (классу­клиенту обрабатывать большое количество результатов неудобно), а отдельным классом ResultEntityList. Значит, каждый раз, когда полученный из списка anEntity будет удовлетворять запросу, он будет отправляться в
ResultEntityList, а по завершении цикла, список результатов ResultEntityList будет возвращен клиенту LibraryClient.
@startuml
LibraryClient ­> Library : findEntityByName(name : String) loop all entities in list
Library ­> LibraryEntityList : getEntity
LibraryEntityList ­> Library : anEntity
alt anEntity.name == name
Library ­> ResultEntityList : anEntity
end end
ResultEntityList ­> LibraryClient : resultList @enduml


Download 1.45 Mb.

Do'stlaringiz bilan baham:
1   ...   31   32   33   34   35   36   37   38   39




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling