Как выразить циклы в диаграммах связи?
Я хотел бы знать, как выразить в диаграмме коммуникации что-то вроде:
foreach (User user in UsersCatalog) {
list.add(user.getId());
}
У меня на самом деле есть что-то вроде следующего
http://img691.imageshack.us/img691/9213/semttuloyc.png
(Utilizador = Пользователь)
но, как вы заметите, это не очень хорошо отражает тот факт, что я делаю что-то вроде цикла.
Как я могу сделать это?
3 ответа
Просто определите getId() : int
со звездочкой (*):
1.4 *getId()
для данного примера.
Почему бы вам не дополнить эту диаграмму диаграммой последовательности? Диаграммы последовательности лучше выражают временную связь между событиями и имеют предварительно определенные обозначения для выражения циклов.
Как сказал Джорди, для описания циклов диаграммы последовательности лучше. Причина в том, что вы хотите описать взаимодействие между объектами, общающимися с помощью передачи сообщений. Для этой цели UML определяет различные диаграммы взаимодействия, ориентируясь на разные аспекты взаимодействия. Диаграммы последовательности фокусируются на последовательностях сообщений, передаваемых между объектами (линиями жизни), поэтому имеет смысл захватывать отправляющие сообщения в цикле-последовательности. Диаграммы коммуникации ориентированы на объекты связи, которые посылают определенные сообщения друг другу. Эти диаграммы бесполезны для моделирования циклов, потому что они показывают только, какие сообщения отправляются и в каком порядке. Однако, если вы используете коммуникационную диаграмму для хорошей цели и просто хотите включить цикл, который у вас есть в коде, вы должны следовать советам elysiums, но помните, что звездочка означает, что число сообщений будет неизвестным, поэтому вы должны добавить выражение (в идеале OCL), который будет захватывать условие для цикла. Для получения дополнительной информации обратитесь к ним: http://www.smartdraw.com/resources/tutorials/uml-collaboration-diagrams/ http://en.wikipedia.org/wiki/Unified_Modeling_Language