Лабораторная работа №25. Понятие графа. Алгоритмы поиска кратчайших путей
Создание диаграммы последовательностей
Download 1.45 Mb.
|
Blok 5
- Bu sahifa navigatsiya:
- Сценарий нахождения чего-либо в библиотеке по имени
Создание диаграммы последовательностей
Создадим в этом же проекте (модуле) файл диаграммы последовательностей. Имя диаграммы: 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: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling