UML нотация: что это за отношения? - PullRequest
1 голос
/ 22 сентября 2010

Глядя на диаграмму UML ниже (шаблон декоратора), как называется связь между Декоратором и компонентом? Это Ассоциация?

Decorator pattern

Ответы [ 6 ]

3 голосов
/ 22 сентября 2010

Два отношения между Компонентом и Декоратором составляют другой шаблон - Композит .

  • Декоратор является подтипом Компонента (отн. С треугольником)
  • Агрегаты Декоратора(включает в себя) много Компонентов (отн. с ромбом)

Позволяет создавать рекурсивные древовидные структуры.Операции, вызываемые в агрегатном декораторе, делегируются содержащимся в нем элементам.Следовательно, на вашей диаграмме поведение Decorator.Operation () заключается в вызове Component.Operation () для каждого из его агрегированных компонентов.Поскольку один или несколько из thpse могут быть декораторами, вызов Operation () распространяется через древовидную структуру.

2 голосов
/ 22 сентября 2010

Один - это расширение, другой агрегат (это тот, у которого маленький декоратор у Decorator).Это означает, что Декоратор может содержать 0 или более компонентов.

hth

Mario

1 голос
/ 22 сентября 2010

Это агрегация .Декоратор имеет много компонентов.

0 голосов
/ 22 сентября 2010

Вы описываете агрегацию. Проблема в том, что эта диаграмма должна быть обращена к вашему коду, или вы должны получить код из вашей диаграммы. Мне просто не хватает графического дизайна UML.

Когда я использую инструменты без сопоставления кода с UML, моё моделирование рано или поздно ужасно !! Я создаю хорошие диаграммы, но никто не использует их для презентации. Я понял, что это была пустая трата времени для всех в команде. Я переключился на профессиональный инструмент, и тогда мой проект действительно использовался командой, а не только графическое представление, которое использовалось один раз во время раскадровки. Что меня удивило, так это то, что разработчики также исправили мои диаграммы, потому что на этапе реализации то, что было хорошо в UML, было невозможно в коде :-) Вот почему UML как автономный не имеет значения для меня, если вы используете диаграмму классов. Я сделал эту ошибку, используя графический инструмент с открытым исходным кодом, но не буду делать это снова !!

0 голосов
/ 22 сентября 2010

Aggregation.Самый простой способ увидеть разницу - это «быть» и «иметь».Компонент объекта "имеет декоратор".Декоратор объекта "является компонентом".

0 голосов
/ 22 сентября 2010

расширяет отношения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...