Généralisation de cas d'utilisation par rapport à l'extension

UML Diagrammes de Cas d'Utilisation permettent apparemment deux façons équivalentes de montrer qu'un cas d'utilisation peut être réalisé de plusieurs manières différentes, à savoir cas d'utilisation des généralisations par opposition à cas d'utilisation des extensions. J'ai vu la suite fondamentalement exemple modélisé à l'aide de l'approche de fréquence égale, parfois au sein d'une seule source.

Généralisation de cas d'utilisation par rapport à l'extension

Généralisation de cas d'utilisation par rapport à l'extension

À mon avis, une extension est une relation moins que la généralisation d'un remplacement direct des effectifs de cas d'utilisation pour le cas de base doit être possible dans la généralisation, mais pas nécessairement dans les extensions.

Il me semble que la généralisation implique une mise en œuvre polymorphe est souhaitée, alors que l'extension implique une certaine ramification de la structure doit être utilisé.

void makePayment(const PaymentDetails* pd)
{
   pd->pay();
}

par opposition à

void makePayment(const PaymentDetails* pd)
{
   switch(pd->type)
   {
       case EFT:
                payViaEFT(pd); 
                break;
       case PAYPAL:
                payViaPayPal(pd); 
                break;
       case CREDITCARD:
                payViaCreditCard(pd); 
                break;
   }
}

N'est pas le Cas d'Utilisation en scène beaucoup trop tôt pour une telle mise en oeuvre des préoccupations spécifiques à modéliser? Il y a beaucoup plus approprié de diagrammes UML. Est-il une règle dure et rapide sur les deux à utiliser et si oui, quel est-il?

source d'informationauteur DuncanACoulter | 2013-02-28