2010-05-07 4 views
4

У меня есть класс контракта. Договор действителен 1 января 2010 года - 31 декабря 2010 года.Как моделировать инъекцию зависимостей в UML?

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

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

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

Является ли это правильное представление инъекции зависимостей в UML?

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

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

Это связано с How model statemachine, when state is dependent on a function? , который инициировал вопрос о том, как моделировать DI вообще, в UML.

+0

потенциальный дубликат, лучше (= более наглядный) ответ здесь (используйте пунктирные линии): http://stackoverflow.com/questions/4488481/how-to-show-dependency-injection-on-a-uml-class- диаграмма – knb

ответ

1

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

+0

«вы можете добавить вызов этой функции в конструкторе, поэтому ваш контракт находится в правильном состоянии сразу» Да, этого я хочу достичь, НО может быть несколько правильных состояний (в примере активны или Пассив), и я не знаю UML достаточно хорошо, чтобы иметь возможность выразить его в правильной нотации UML. – user77115

+0

Как вы ответили, использование нескольких начальных вершин является недопустимым обозначением UML, так что это не вариант. Часть того, что я пытаюсь выяснить, заключается в том, что допустимы множественные стрелки, ведущие из начальной вершины UML? – user77115

+0

@ hjo1620 это не так, но вы можете использовать элемент выбора, чтобы иметь несколько стрелок от этого элемента. –

0

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

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

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

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

+0

Хорошая идея в дополнение к диаграмме активности, показывающей выбор. Это то, что мне кажется интуитивным: http://imagebin.ca/view/6SN7pN.html Как это изменится с идеей лейбла, которую вы предлагаете? – user77115

0

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

+0

Любой пример перевода со схемы statemachine (SMD), в классы, реализованные с использованием DI? Я надеюсь увидеть всю цепочку, от диаграммы UML SMD до реализации, в одном небольшом примере. – user77115

Смежные вопросы