2013-07-30 5 views
1

Чтобы быть конкретным, у меня есть базовый прецедент A и два удлиненных варианта использования A1, A2. Затем я добавляю элемент «включить» в A, назовем его B. Мой вопрос: будет ли A1, A2 автоматически включать этот элемент B? Или мне нужно добавить две пунктирные стрелки от A1, A2 до B?Диаграмма использования использования UML <<include>> и <<extend>>

У меня недостаточно балла, чтобы опубликовать изображение здесь, поэтому просто используйте эту картинку, чтобы проиллюстрировать мою идею. Мне не хватает стрелок от A до A1, A2, надеюсь, что это вас не смущает.

   A ------> B(include) 
      /\ 
     extend/ \extend 
      / \ 
      A1  A2 

Спасибо!

ответ

1

Действительно, если вы ссылаетесь на B в A1 и A2, вам нужно будет включить (ElementImport в UML) B от них. Но вы также можете иметь пакет, содержащий A, A1 и A2, и импортировать B из этого пакета, таким образом, B будет доступен для всех элементов этого пакета.

2

Из того, что я понимаю из вашего примера, вам не нужно обобщение между A1/A2 и A, а не расширение? Расширение означает необязательную часть прецедента A, обобщение означает разные «версии» прецедента.

И в случае обобщения да, включенный прецедент наследуется. В случае расширения это не так.

0

А1 и A2 не будут включать B. Вам нужно будет включать его специально для каждого, если это на самом деле то, что такое поведение (или вы можете сделать, как предлагает Xaelis и использовать семантику пакета). С другой стороны, если A1 и A2 являются специализациями A (как указывает Стеф), они будут включать B, потому что A включает его. В моем сознании есть вопрос, действительно ли вы намереваетесь специализироваться, а не расширять.

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