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?
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.
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>>
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.