UML用例图允许两种看似等价的方式来表明给定的用例可能以几种不同的方式实现,即use case generalizations而不是use case extensions。我已经看到了以下基本示例,使用任一种方法以相同频率进行建模,有时在单一来源内。用例泛化与扩展
在我看来,一个扩展比概括为一体的专业化使用情况基本情况的直接替代必须是泛化可能更弱的关系,但不一定在扩展。
在我看来,泛化意味着多态实现是期望的,而扩展意味着要使用一些分支结构。
void makePayment(const PaymentDetails* pd)
{
pd->pay();
}
,而不是
void makePayment(const PaymentDetails* pd)
{
switch(pd->type)
{
case EFT:
payViaEFT(pd);
break;
case PAYPAL:
payViaPayPal(pd);
break;
case CREDITCARD:
payViaCreditCard(pd);
break;
}
}
是不是用例阶段实施等具体问题还为时尚早建模?对此,有更合适的UML图。是否有一个硬性和快速的规则,关于哪两个使用,如果是的话是什么?
这两个实现都模拟相同的问题。它们不与一个UC图或另一个关联。多态性更合乎需要,因为它更简单,更容易扩展并且不易受人为错误的影响。 – 2015-05-04 18:55:45