Как смоделировать внедрение зависимостей в UML? - PullRequest
4 голосов
/ 07 мая 2010

У меня есть Контрактный класс. Договор действует с 1 января 2010 г. по 31 декабря 2010 г.

Может быть в активном или пассивном состоянии, в зависимости от того, в какую дату я запрашиваю у экземпляра его состояние. ех. если я спрашиваю 4 июля 2010 года, он находится в состоянии Active, но если я спрашиваю 1 января 2011 года, он находится в состоянии Passive.

Экземпляры создаются с помощью внедрения зависимости конструктора, то есть они уже активны или пассивны уже при создании, в качестве параметра для внутреннего элемента состояния недопустимо значение NULL.

Одна начальная / созданная вершина рисуется на диаграмме конечного автомата UML. У меня есть две стрелки, ведущие из начальной вершины, одна ведет в состояние Active, а другая в состояние Passive.

Это правильное представление внедрения зависимостей в UML?

Вопрос конкретно касается диаграмм машин состояний, где первое состояние после начального состояния / вершины определяется вне границ диаграммы.

Инструмент Джуда / Ашта позволяет создавать конструкции такого типа, то есть рисовать несколько линий из начальной вершины диаграммы, что заставляет меня поверить, что это правильный графический синтаксис UML.

Это связано с Как моделирует состояние машины, когда состояние зависит от функции? который инициировал вопрос о том, как моделировать DI в целом, в UML.

Ответы [ 3 ]

1 голос
/ 07 мая 2010

вы можете решить часть состояний, как я предложил в вашем другом вопросе, и DI можно показать с помощью зависимости на диаграмме классов.

0 голосов
/ 07 мая 2010

Внедрение зависимостей - это просто деталь реализации (даже если это очень важно). Таким образом, в вопросе о том, как моделировать внедрение зависимостей в UML, вы можете моделировать DI как ассоциацию, агрегацию или композицию, в зависимости от того, что вы хотите выразить этими классами.

0 голосов
/ 07 мая 2010

Я бы сказал нет.Вопрос, который нужно задать, таков: различаются ли машина состояния поведения / поведение между активной и пассивной версиями вашего класса?

Если да, тогда используйте две отдельные диаграммы конечного автомата для объекта класса, одну для пассивного и одну дляActive.

Диаграмма активности может использоваться, чтобы показать, что выбор сделан (с помощью объединения) до создания класса.

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

...