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