Звоните! 
 (926)274-88-54 
 Бесплатная доставка. 
 Бесплатная сборка. 
Ассортимент тканей

График работы:
Ежедневно. С 8-00 до 20-00.
Почта: soft_hous@mail.ru
Читальный зал -->  Диаграммы параллельных состояний 

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 [ 23 ] 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57

указать аргументы и некоторую управляющую информацию. На диаграмме последовательности могут присутствовать рекурсивные вызовы - сообщения, которые объекты посылают самим себе. При передаче такого сообщения стрелка указывает на ту же самую линию жизни.

Чтобы показать период времени, в течение которого объект является активным (для процедурного взаимодействия это следует указывать, когда процедура помещается в стек), изображается прямоугольник активности. Можно вообще не указывать прямоугольник активности; в этом случае диаграммы легче рисовать, но зато труднее понимать.

Управляющая информация может быть представлена двумя способами. Во-первых, существует некоторое условие, которое указывает, когда сообщение может быть передано (например, [нуженПовторныйЗа-каз]). Сообщение посылается, только если это условие истинно. Условия могут оказаться полезными в простых случаях, однако в более сложных ситуациях я предпочитаю изображать для каждого случая отдельную диаграмму последовательности.

Во-вторых, может оказаться полезным некоторый управляющий маркер, называемый маркером итерации, показывающий, что сообщение посылается несколько раз для множества принимающих объектов. Такая итерация указывается в квадратных скобках с предшествующей звездочкой, например *[для всех позиций заказа].

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

Как можно видеть, диаграмма последовательности на рис. 5.1 является очень понятной и наглядной. А это очень важно для разработчиков.

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

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



Асинхронное сообщение

новый

Транзакция

новый

Активизаций

Координатор Транзакции


4/j прочая обработка запрещена

все V- выполнено?

нормальное завершение

выполнено?

самоуничто-женив объекта

Самовызов

Рис. 5.2. Параллельные процессы и активизации

Когда создается некоторая Транзакция, она порождает Координатор Транзакции с целью координации проверки этой Транзакции. Этот координатор создает несколько (в данном случае два) объектов Контроллера Транзакции, каждый из которых несет ответственность за свою проверку. Этот процесс упрогцает создание различных дополнительных процессов проверки, поскольку каждая проверка вызывается асинхронно и выполняется параллельно.

Когда Контроллер Транзакции завершает свою работу, он посылает со-обгцение Координатору Транзакции. Координатор проверяет, все ли Контроллеры сообщили о своих проверках. Если нет, то координатор не выполняет никаких действий. Если же все проверки завершились и завершились успешно, как в данном случае, то координатор посылает сообщение Транзакции о нормальном завершении.

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



своего собственного процесса. Асинхронное сообщение может выполнять одно из трех действий:

1. Создание нового потока, при этом сообщение соединяется с прямоугольником активизации.

2. Создание нового объекта.

3. Установление связи с потоком, который уже выполняется.

Удаление объекта изображается большой буквой X. Объекты могут самоуничтожаться (как показано на рис. 5.2) либо могут быть уничтожены другим сообщением (рис. 5.3).

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

На рис. 5.3 я применил очень полезный прием: поместил текстовые описания происходящих процессов вдоль левой части диаграммы по-

новый

Когда

Транзакция создается...

...она создает Координатор для управления проверкой.

Координатор создает последовательность Контроллеров, по одному для каждого вида проверки. Эти Контроллеры выполняют каждый свою проверку как отдельный процесс.

Если заданная проверка закончилась неудачно, Координатор уничтожает все остальные Контроллеры находящиеся в стадии выполнения...

...и сообщает Транзакции о том, что она не верна.

Транзакция

новый

Транзакции

новый

первый Контроллер Транзакции

новый

транзакция не верна

проверка неудачная

прекратить проверки

второй Контроллер Транзакции

уничтожить

удаление

другого

объекта

Рис. 5.3. Диаграмма последовательности: неудачная проверка



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 [ 23 ] 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57



ООО «Мягкий Дом» - это Отечественный производитель мебели. Наша профильная продукция - это диваны еврокнижка. Каждый диван можем изготовить в соответствии с Вашими пожеланияи (размер, ткань и материал). Осуществляем бесплатную доставку и сборку.



Звоните! Ежедневно!
 (926)274-88-54 
Продажа и изготовление мебели.


Копирование контента сайта запрещено.
Авторские права защищаются адвокатской коллегией г. Москвы
.