UML中的<extend>依赖关系

omg*_*omg 3 uml extend

除了UML的上下文,如果A扩展B,则B是A的子集.

但是在UML中,恰恰相反,如果A扩展B,则A是B的子集,

为什么这么奇怪?

Joh*_*ers 6

<<extend>>依赖性仅用于使用案例.这意味着在某些情况下,一个用例扩展了另一个用例.在下面的:

扩展用例

客户端查看帐户详细信息.在某些情况下,客户还可以"查看未结订单"作为"查看帐户详细信息"的一部分.客户端也可能将"查看历史记录"视为"查看帐户详细信息"的一部分.

这与泛化/专业化无关.


<<extend>>在用例图中令人困惑.混淆的最小部分是用例图不是用例!

用例是文档,而不是图表.例如,上图可能是从以下用例文本中提取的:

  1. 客户查看帐户详细信息

扩展:
1a.如果客户点击"打开订单"链接
客户端视图打开订单
1b.如果客户点击"查看历史记录"链接
客户端查看历史记

在更详细的模型中,这些"扩展点"将列在图上的"查看帐户详细信息"用例元素中.但在我看来,这使得图表非常混乱.

我第一次真正了解到UML由Martin Fowler的阅读"UML精粹".我在发布这个答案之前检查了那本书,发现福勒建议忽略<<extend>>.