Форум Сообщества Аналитиков

Общий раздел => Теория моделирования и нотации => UML SysML и пр. => Тема начата: tillias от 04 Января 2010, 23:32:01

Название: Как изобразить создание нового объекта на коммуникационной диаграмме
Отправлено: tillias от 04 Января 2010, 23:32:01
Здравствуйте!

Имеется следующая начальная заготовка диаграммы:
(http://imagebin.ca/img/y6eQ0k5.png)

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

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

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

Заранее большое спасибо!
Название: Re: Как изобразить создание нового объекта на коммуникационной диаграмме
Отправлено: ida - брэнд с 14-летней историей от 06 Января 2010, 17:49:27
Корректно ли указывать на коммуникационных диаграммах
Уже и такие диаграммы есть?...
А не подскажете ли, что это за стандарт?
Название: Re: Как изобразить создание нового объекта на коммуникационной диаграмме
Отправлено: Galogen от 06 Января 2010, 17:59:33
Уже и такие диаграммы есть?...
А не подскажете ли, что это за стандарт?
Коммуникационные диаграммы (http://www.google.ru/search?client=opera&rls=ru&q=%D0%BA%D0%BE%D0%BC%D0%BC%D1%83%D0%BD%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D1%8B%D0%B5+%D0%B4%D0%B8%D0%B0%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D1%8B&sourceid=opera&ie=utf-8&oe=utf-8)

Диаграмма коммуникации (http://ru.wikipedia.org/wiki/Диаграмма_коммуникации)

UML 2 Communication Diagrams (http://www.agilemodeling.com/artifacts/communicationDiagram.htm)

UML 2 (http://ru.wikipedia.org/wiki/UML)
Название: Re: Как изобразить создание нового объекта на коммуникационной диаграмме
Отправлено: Денис Иванов от 06 Января 2010, 22:16:24
Теперь вопрос. Корректно ли указывать на коммуникационных диаграммах создание новых объектов? Правильно ли я это делаю ( шаг 1.2.)?

1.2: <<create>> [flag] ....
Название: Re: Как изобразить создание нового объекта на коммуникационной диаграмме
Отправлено: ida - брэнд с 14-летней историей от 07 Января 2010, 00:14:46
А в чем отличие диаграмм коммуникации от диаграмм кооперации?... Я так и не поняла.
Название: Re: Как изобразить создание нового объекта на коммуникационной диаграмме
Отправлено: Денис Иванов от 07 Января 2010, 00:57:02
"диаграмма кооперации" - это из UML 1.
Название вводило в заблуждение, так как можно было подумать, что на этой диаграмме изображают кооперации (есть такая сущность в UML).
В UML 2 "диаграмма кооперации" переименована в "диаграмму коммуникации"
Название: Re: Как изобразить создание нового объекта на коммуникационной диаграмме
Отправлено: tillias от 07 Января 2010, 09:18:57
1.2: <<create>> [flag] ....

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

В подтверждение того факта что на коммуникационных диаграммах можно использовать стереотип <<create>> нашел несколько диаграм, например
(http://codeidol.com/img/learnuml2/learnuml2_0815.jpg)

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

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

С последовательностью 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 или заблуждаюсь? Спасибо!
 



Название: Re: Как изобразить создание нового объекта на коммуникационной диаграмме
Отправлено: tillias от 07 Января 2010, 09:20:46
Прошу простить за орфографические и пунктуационные ошибки. После размещения поста не нащел кнопок редактирования тела сообщения :(
Название: Re: Как изобразить создание нового объекта на коммуникационной диаграмме
Отправлено: Денис Иванов от 07 Января 2010, 10:22:33
Спасибо! Дело в том что flag это сторожевое условие (guard). Потому наверное все таки:
1.2: [flag]: <<create>>


Да, конечно так.
Название: Re: Как изобразить создание нового объекта на коммуникационной диаграмме
Отправлено: Денис Иванов от 07 Января 2010, 10:33:35
...
Метод я так понимаю статический, потому как перед именем класса SearchScreen нет символа  ":".
...

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

А по поводу того, что нарисовано на диаграмме, то я думаю, что там какие-то проблемы с нумерацией вызываемых методов.
Все изображенные методы (сюдя по нотации) - синхронные. Поэтому, когда будет выполнен 2.1, то управление обязано вернуться в OrderSystem и уж оттуда ну никак нельзя запустить 2.2 и 2.3.
Название: Re: Как изобразить создание нового объекта на коммуникационной диаграмме
Отправлено: tillias от 07 Января 2010, 11:41:49
Спасибо за ответ! По ходу обсуждения возник еще один вопрос

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

Согласно нотации для диаграмм последовательностей (например 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.

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

Название: Re: Как изобразить создание нового объекта на коммуникационной диаграмме
Отправлено: Денис Иванов от 25 Января 2010, 16:41:41
Я правильно трактую нотацию или где-то недопонимаю? Спасибо!

Смотри сюда (http://blog.it-konsulting.spb.ru/?p=387)