Как изобразить создание нового объекта на коммуникационной диаграмме(Прочитано 13848 раз)
Здравствуйте!

Имеется следующая начальная заготовка диаграммы:


Вот краткое описание.
Удаленный сервер передает пакет в систему (шаг 1). На шаге 1.1. проверяется тип пакета, и если этот пакет удовлетворяет определенным требованиям (тип, содержимое, значения некоторых полей и т.д.) взводится flag. На шаге 1.2. в зависимости от того взведен ли flag создается внутреннее сообщение системы типа PrivateMessage с определенными значениями внутренних полей ( в зависимости от содержимого первоначального пакета, передаваемого в систему удаленным сервером)

Созданное сообщение системы далее (шаг 1.3.) передается в обработчик сообщений системы.

Теперь вопрос. Корректно ли указывать на коммуникационных диаграммах создание новых объектов? Правильно ли я это делаю ( шаг 1.2.)?

Заранее большое спасибо!



Корректно ли указывать на коммуникационных диаграммах
Уже и такие диаграммы есть?...
А не подскажете ли, что это за стандарт?



Уже и такие диаграммы есть?...
А не подскажете ли, что это за стандарт?
Коммуникационные диаграммы

Диаграмма коммуникации

UML 2 Communication Diagrams

UML 2



Теперь вопрос. Корректно ли указывать на коммуникационных диаграммах создание новых объектов? Правильно ли я это делаю ( шаг 1.2.)?

1.2: <<create>> [flag] ....



А в чем отличие диаграмм коммуникации от диаграмм кооперации?... Я так и не поняла.



"диаграмма кооперации" - это из UML 1.
Название вводило в заблуждение, так как можно было подумать, что на этой диаграмме изображают кооперации (есть такая сущность в UML).
В UML 2 "диаграмма кооперации" переименована в "диаграмму коммуникации"



1.2: <<create>> [flag] ....

Спасибо! Дело в том что flag это сторожевое условие (guard). Потому наверное все таки:
1.2: [flag]: <<create>>

В подтверждение того факта что на коммуникационных диаграммах можно использовать стереотип <<create>> нашел несколько диаграм, например


Здесь в 3.1 и 4.1.5 используются стереотипы <<create>> и <<destroy>>

А вот на этой диаграмме вообще странная нотация (взято с сайта http://www.visual-paradigm.com/support/documents/vpumluserguide/94/265/7026_drawingcommu.html):


С последовательностью 1 все понятно. А вот 2.2 изображен на мой взгляд не в соответствии со стандартом UML2/2.1.

Поясню. На шаге 2.1 "выискивается" объект cart типа Cart при помощи вызова метода search(). Метод я так понимаю статический, потому как перед именем класса SearchScreen нет символа  ":".

На шаге 2.2 для меня начинаются непонятки... Неуказанным на диаграмме методом (от балды по-русски) был создан объект book типа Book и его просто воткнули на диаграмму. У объкта вызван нестатический метод selectBook() который вернул объект типа book. Но у нас уже был простите за тафталогию объект book...

На шаге 2.3 при помощи статического метода типа Cart создается объкт cart при помощи статического метода addToCart(book)

Теперь вопрос у знатоков, я правильно читаю последовательность 2 или заблуждаюсь? Спасибо!
 






Прошу простить за орфографические и пунктуационные ошибки. После размещения поста не нащел кнопок редактирования тела сообщения :(



Спасибо! Дело в том что flag это сторожевое условие (guard). Потому наверное все таки:
1.2: [flag]: <<create>>


Да, конечно так.



...
Метод я так понимаю статический, потому как перед именем класса SearchScreen нет символа  ":".
...

Здесь и далее: наличие/отсутствие символа ":" никак не связано со статичностью или  не статичностью метода.

А по поводу того, что нарисовано на диаграмме, то я думаю, что там какие-то проблемы с нумерацией вызываемых методов.
Все изображенные методы (сюдя по нотации) - синхронные. Поэтому, когда будет выполнен 2.1, то управление обязано вернуться в OrderSystem и уж оттуда ну никак нельзя запустить 2.2 и 2.3.
« Последнее редактирование: 07 Января 2010, 10:39:26 от denis-itk »



Спасибо за ответ! По ходу обсуждения возник еще один вопрос

Здесь и далее: наличие/отсутствие символа ":" никак не связано со статичностью или  не статичностью метода.

Согласно нотации для диаграмм последовательностей (например http://www.ibm.com/developerworks/rational/library/3101.html) имеем:
Цитировать
The UML standard for naming a lifeline follows the format of:
Instance Name : Class Name

Я думал что тот же принцип действует и для коммуникационных диаграмм (согласно книге http://www.books.ru/shop/books/519159, глава 12.11, стр. 290). Собственно из-за недостаточной освещенности коммуникационных диаграмм в этой книге у меня и возник первоначальный вопрос.

Тем не менее без двоеточия мы вызываем метод типа, а двоеточие указывает что на диаграмме размещен экземпляр типа, соответственно вызывается метод экземпляра типа. Если перед двоеточием нет символьной метки, то нам не хочется указывать символьное имя экземпляра типа. Потому на диаграмме вызываются статические методы типов OrderSystem, LoginScreen, SearchScreen и т.д. Также имеются один экземпляр типа Book с именем book.

Я правильно трактую нотацию или где-то недопонимаю? Спасибо!




Я правильно трактую нотацию или где-то недопонимаю? Спасибо!

Смотри сюда




 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19