UML. Диаграммы последовательности
Диаграммы взаимодействия – это способ описать взаимодействия объектов в рамках одного прецедента. Существуют диаграммы взаимодействия нескольких типов – наиболее распространенные из них – диаграммы последовательности. На таких диаграммах показывают время жизни объектов и сообщения, которыми они обмениваются.
Начать наш диалог о диаграммах последовательности мы можем с рассмотрения простого примера. Предположим, у нас есть чек с заказанными позициями и мы хотим определить суммарную стоимость заказа. Для этого нам необходимо пройти по всем пунктам заказа и вычислить стоимость поля. После этого мы хотели бы рассчитать итоговую скидку на основании личных данных клиента.
Пройдемся по получившейся диаграмме:
Мы получаем команду на расчет стоимости заказа (calculatePrice())
Для этого нам необходимо выяснить количество (getQuantity()) и понять, какой продукт описан в данном пункте заказа (getProduct())
Получить информацию о стоимости конкретного продукта мы можем через вызов aProduct::getPricingDetails()
На данном этапе у нас есть вся информация для подсчета суммы заказа anOrder::calculateBasePrice()
Начинаем считать скидку anOrder::calculateDiscounts()
Для этого нам необходима персональная информация aCustomer::getDiscountInfo()
Как видите, с помощью такой диаграммы можно очень удобным образом описать взаимодействия объектов и порядок общения между ними на протяжении некоторого отрезка времени. Одно из преимуществ подобной диаграммы в том, что практически нет необходимости описывать ее нотацию – все понятно на интуитивном уровне.
Создание и удаление участников.
Для обозначения начала и конца времени жизни участника в диаграммах последовательности применяют дополнительные обозначения. В случае начала времени жизни нового участника необходимо нарисовать стрелочку вызова, приаведшего к созданию, к прямоугольнику с именем свежеиспеченного класса.
Если вы применили для этого конструктор, то вместо названия фабричного метода, можено использовать имя new.
Конец области жизнедеятельности участника обозначается большим “X”. Если от одного из участников в Х ведет стрелка, это значит, что один из классов удалил другой явным образом. Если в системе работает сборщик мусора и ручное удаление не требуется, тем не менее, лучше указать, что объект освобожден и готов к удалению.
Диаграммы последовательности крайне неудобны для отображения циклов и ветвлений и потому, редко используются для этих целей. Существуют различные официальные и не очень конструкции для отображения подобного, однако рассмотрение их оставим на усмотрение читателя. Более правильно рассматривать сложную с точки зрения поведения логику с помощью других типов диаграмм – например, диаграмм состояний.
Когда используются диаграммы последовательности.
Лучшее применение диаграмм последовательности – рассмотрение поведения группы объектов в рамках одного прецедента, последовательность действий объекта, зависимости между объектами и время жизни. Диаграммы последовательности по описанным выше причинам не стоит применять для рассмотрения сложной логики – они могут лишь сбить с толку. Вся описательная сила UML заключается в правильном выборе диаграммы для конкретного случая и умелом выборе детальности.
Last updated