用例图 - 扩展用例,但从不使用父用例?

时间:2013-02-18 21:30:01

标签: uml use-case

我有一个父用例。我不想让用户使用父用例。我只希望用户能够访问子用例。可以把它想象成Java中的抽象类。您永远不能实例化抽象类。用例图是否允许这样的行为?

4 个答案:

答案 0 :(得分:1)

是的,可以有“父”或“子”用例。用于对此关系建模的连接器称为generalization。请参见此处:Use case generalization versus extension此处还提供了包含图表的示例。

请注意:如果您对一个用例建模,那么那就是其他(!)而不是<<extend>>一个。

您可以在文本用例描述中添加有关调用约束的注释。

答案 1 :(得分:0)

@ observer的答案几乎是完美的(我已经给它+1了:)),除了他没有完全回答你的问题。

您在案件中可能采取的措施如下:

enter image description here

  • Actor0将通过Pay billPay with credit card设置为Pay with PayPal
  • 另一方面,Actor1只能Pay with credit card

这意味着:

  1. 使用泛化来模拟“父”用例与其“子”之间的关系。
  2. 让你想要“访问”一个孩子的演员只与那个用例相关联。

答案 2 :(得分:-2)

是的! (最后,因为UseCase是分类器的特化)。

引用统一建模语言(OMG UML),上层建筑:

<强>推广

  • UseCase (来自UseCases)专门用于 BehavioredClassifier (来自BasicBehaviors,Communications)。

  • BehavioredClassifier 专门用于分类器(来自内核,依赖项,PowerTypes,接口)。

属性分类器具有以下属性:

  • isAbstract :Boolean(如果为true,则分类器不提供完整的声明,通常无法实例化。)

  • isFinalSpecialization :Boolean(如果为true,则分类器不能通过泛化专门化)。

约束:分类器只能专门化有效类型的分类器。

   self.parents()->forAll(c | self.maySpecializeType(c))

其他操作

查询maySpecializeType()确定此分类器是否可能与指定类型的分类器具有泛化关系。默认情况下,分类器可以专门化相同或更一般类型的分类器。

Classifier::maySpecializeType(c : Classifier) : Boolean;
maySpecializeType = self.oclIsKindOf(c.oclType)

最后,但并非最不重要,即使它说maySpecializeType()“打算由具有不同专业化约束的分类器重新定义”...... maySpecializeType() > UseCase 或 BehavioredClassifier

资料来源:统一建模语言(OMG UML),上层建筑,版本2.4.1。

答案 3 :(得分:-2)

你的术语有点偏,但总的来说答案是肯定的。

没有“父母”或“儿童”用例这样的术语。通常,用例是由用户触发的行为。您似乎需要的内容由基础和包含的用例之间的include关系描述。它用于提取由不同用例重用的公共功能块。例如:Use-case include relationship example

在此处查看更多信息:What's is the difference between include and extend in use case diagram?