- •Тема 1.4. (Продовження) Основи об'єктно-орієнтованого проектування мовою uml
- •1. Діаграми послідовності і кооперації.
- •Диаграммы последовательности
- •Диаграммы кооперации
- •Когда следует использовать диаграммы взаимодействия
- •2. Діаграми стану.
- •Диаграммы параллельных состояний
- •Когда использовать диаграммы состояний
- •3. Діаграми діяльності.
- •Декомпозиция деятельности
- •Динамическая параллельность
- •Дорожки
- •Когда использовать диаграммы деятельности
Диаграммы параллельных состояний
Смысл параллельных секций диаграммы состояний заключается в том, что в любой момент времени данный заказ находится одновременно в двух различных состояниях, каждое из которых относится к своей исходной диаграмме. Когда заказ покидает параллельные состояния, он оказывается только в одном состоянии. Из этой диаграммы можно увидеть, что в начальный момент заказ оказывается одновременно в двух состояниях: Проверка Позиции Заказа и Подтверждение Оплаты. Если деятельность «проверить оплату» в состоянии Подтверждение Оплаты успешно завершится первой, то заказ окажется в двух состояниях: Проверка Позиции Заказа и Оплата Подтверждена. Если же наступит событие «отменен», то заказ окажется только в состоянии Отмена.
Когда использовать диаграммы состояний
Диаграммы параллельных состояний полезны в тех ситуациях, когда некоторый объект обладает множеством независимых поведений. Однако они не слишком пригодны для описания поведения нескольких объектов, образующих кооперацию. По существу, диаграммы состояний полезно объединять с другими методами.
Например, диаграммы взаимодействия являются хорошим средством для описания поведения нескольких объектов в одном варианте использования, а диаграммы деятельности удобны для представления общей последовательности действий для нескольких объектов и вариантов использования.
3. Діаграми діяльності.
Деятельность представляет собой некоторое состояние, в котором что-либо выполняется.
Диаграмма деятельности описывает последовательность подобных деятельностей, позволяя при этом одновременно изображать как условное, так и параллельное поведение.
Диаграмма деятельности, по сути, представляет собой вариант диаграммы состояний, в которой большинство, а может быть и все, состояния являются состояниями деятельности.
Условное поведение изображается с помощью ветвлений и соединений.
Ветвление имеет единственный входящий переход и несколько выходящих переходов со сторожевыми условиями. Поскольку может выполняться только один из выходящих переходов, сторожевые условия должны взаимно исключать друг друга. Если в качестве сторожевого условия используется [иначе], то это означает, что переход с меткой «иначе» должен произойти в том случае, когда все другие сторожевые условия для данного ветвления являются ложными.
Соединение имеет несколько входящих переходов и единственный выходящий переход. Соединение означает окончание условного поведения, которое было начато соответствующим ветвлением.
Ветвления и соединения можно указывать явным образом с помощью ромба.
Параллельное поведение изображается с помощью слияний и разделений.
Разделение имеет единственный входящий переход и несколько выходящих переходов. Когда срабатывает входящий переход, все выходящие переходы выполняются параллельно.
Диаграммы деятельности оказываются весьма полезными для параллельных программ, поскольку они позволяют изобразить графически нити процесса и их синхронизацию по времени исполнения.
В процессе моделирования некоторого параллельного поведения необходима синхронизация.
Мы не можем закрыть заказ до тех пор, пока он не будет оплачен и отправлен клиенту. Именно это указывает слияние перед деятельностью Закрыть Заказ.
Слияние на диаграмме деятельности означает, что выходные переходы могут произойти только в том случае, когда состояния у всех входящих переходов завершат свои деятельности.
Разделения и слияния должны соответствовать друг другу. В простейшем случае это означает, что для любого разделения на диаграмме должно иметься соответствующее слияние, которое объединяет все нити, имеющие начало в этом разделении.
Однако это правило имеет несколько исключений:
Нить, выходящая из некоторого разделения, сама может быть разделением с новыми нитями, которые объединяются вместе до того, как будет достигнуто слияние всех исходных нитей.
Для синхронизации нитей может использоваться дополнительная конструкция, которая называется синхронизирующим состоянием.
Данное правило имеет еще одно исключение, при котором все входные состояния некоторого слияния должны быть завершены до того, как это слияние сможет произойти. Вы можете добавить дополнительное условие на отдельную нить, выходящую из разделения. Результатом этого является так называемая условная нить. Если в ходе выполнения процесса условие такой условной нити принимает значение ложь, это означает, что данная нить должна быть завершена для выполнения последующего слиянии.