web-dev-qa-db-fra.com

Existe-t-il une convention pour afficher les méthodes remplacées dans les diagrammes de classes statiques UML?

Si la classe Human hérite de certaines méthodes de la superclasse Mammal inchangées (telles que laysEggs: () -> false) et remplace d'autres méthodes (telles que postsToStackOverflow : () -> true), y en a-t-il différence entre la façon dont les différentes méthodes sont indiquées dans une partie du diagramme de classe statique UML pour Human? Par exemple, seules les méthodes remplacées sont-elles affichées dans la zone pour Human, ou sont-elles toutes les deux affichées, avec une annotation pour les méthodes substituées?

15
Ellen Spertus

Maintenant il y en a. Certains anonymes m'ont amené à creuser dans les 2.5.1. Spécifications . Dans. 102 il est dit

Les membres hérités par un classificateur peuvent être affichés sur un diagramme de ce classificateur en ajoutant un symbole caret "^" à la représentation textuelle qui serait affichée si le membre n'était pas hérité. Ainsi, la notation d'une propriété héritée est définie comme suit:

<inherited-property> ::= ’^’ <property>

Les spécifications elles-mêmes n'utilisent pas (encore) beaucoup la notation caret, à l'exception de la figure 9.11 de la p. 115 et figure 10.9 p. 173.


Dans les spécifications 2.5 et avant la réponse était: Non, il n'y en a pas. Vous pouvez seulement dire qu'une méthode est remplacée en inspectant les méthodes de la classe dont elle est héritée.

17
qwerty_so

Bien qu'elle ne soit pas spécifiée dans la norme UML, voici une notation comprise pour indiquer quand une fonction en remplace une autre:

+ toString() : String <<override>>
13
ThisClark

Je duplique la déclaration de méthode, si je veux montrer que la classe héritée la remplacera, dans les autres cas, omettez simplement la déclaration.

1
Bohdan Savych