UML. Диаграммы последовательности

Диаграммы взаимодействия – это способ описать взаимодействия объектов в рамках одного прецедента. Существуют диаграммы взаимодействия нескольких типов – наиболее распространенные из них – диаграммы последовательности. На таких диаграммах показывают время жизни объектов и сообщения, которыми они обмениваются.

Начать наш диалог о диаграммах последовательности мы можем с рассмотрения простого примера. Предположим, у нас есть чек с заказанными позициями и мы хотим определить суммарную стоимость заказа. Для этого нам необходимо пройти по всем пунктам заказа и вычислить стоимость поля. После этого мы хотели бы рассчитать итоговую скидку на основании личных данных клиента.

  • Пройдемся по получившейся диаграмме:

  • Мы получаем команду на расчет стоимости заказа (calculatePrice())

  • Для этого нам необходимо выяснить количество (getQuantity()) и понять, какой продукт описан в данном пункте заказа (getProduct())

  • Получить информацию о стоимости конкретного продукта мы можем через вызов aProduct::getPricingDetails()

  • На данном этапе у нас есть вся информация для подсчета суммы заказа anOrder::calculateBasePrice()

  • Начинаем считать скидку anOrder::calculateDiscounts()

  • Для этого нам необходима персональная информация aCustomer::getDiscountInfo()

Как видите, с помощью такой диаграммы можно очень удобным образом описать взаимодействия объектов и порядок общения между ними на протяжении некоторого отрезка времени. Одно из преимуществ подобной диаграммы в том, что практически нет необходимости описывать ее нотацию – все понятно на интуитивном уровне.

Создание и удаление участников.

Для обозначения начала и конца времени жизни участника в диаграммах последовательности применяют дополнительные обозначения. В случае начала времени жизни нового участника необходимо нарисовать стрелочку вызова, приаведшего к созданию, к прямоугольнику с именем свежеиспеченного класса.

Если вы применили для этого конструктор, то вместо названия фабричного метода, можено использовать имя new.

Конец области жизнедеятельности участника обозначается большим “X”. Если от одного из участников в Х ведет стрелка, это значит, что один из классов удалил другой явным образом. Если в системе работает сборщик мусора и ручное удаление не требуется, тем не менее, лучше указать, что объект освобожден и готов к удалению.

Диаграммы последовательности крайне неудобны для отображения циклов и ветвлений и потому, редко используются для этих целей. Существуют различные официальные и не очень конструкции для отображения подобного, однако рассмотрение их оставим на усмотрение читателя. Более правильно рассматривать сложную с точки зрения поведения логику с помощью других типов диаграмм – например, диаграмм состояний.

Когда используются диаграммы последовательности.

Лучшее применение диаграмм последовательности – рассмотрение поведения группы объектов в рамках одного прецедента, последовательность действий объекта, зависимости между объектами и время жизни. Диаграммы последовательности по описанным выше причинам не стоит применять для рассмотрения сложной логики – они могут лишь сбить с толку. Вся описательная сила UML заключается в правильном выборе диаграммы для конкретного случая и умелом выборе детальности.

Last updated