我有一个父用例。我不想让用户使用父用例。我只希望用户能够访问子用例。可以把它想象成Java中的抽象类。您永远不能实例化抽象类。用例图是否允许这样的行为?
答案 0 :(得分:1)
是的,可以有“父”或“子”用例。用于对此关系建模的连接器称为generalization
。请参见此处:Use case generalization versus extension此处还提供了包含图表的示例。
请注意:如果您对一个用例建模,那么那就是其他(!)而不是<<extend>>
一个。
您可以在文本用例描述中添加有关调用约束的注释。
答案 1 :(得分:0)
@ observer的答案几乎是完美的(我已经给它+1了:)),除了他没有完全回答你的问题。
您在案件中可能采取的措施如下:
Actor0
将通过Pay bill
或Pay with
credit card
设置为Pay with PayPal
。 Actor1
只能Pay with credit card
。这意味着:
答案 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
关系描述。它用于提取由不同用例重用的公共功能块。例如:
在此处查看更多信息:What's is the difference between include and extend in use case diagram?