21 votes

Diagramme de classe UML: est-ce ainsi que l'on écrit une méthode et une propriété abstraite?

Lorsque j'ai créé pour la première fois un diagramme de classe uml pour un petit projet C#, j'ai eu des difficultés avec les propriétés. À la fin, j'ai simplement ajouté les propriétés en tant que variable avec <> au début. Maintenant, je me demande comment résoudre ceci avec une méthode abstraite? Devrais-je simplement ajouter <> à la méthode et c'est bon? Je fais quelque chose comme ça :

-----------------------------------
|           <>          |
|             MyClass             |
-----------------------------------
|<> + a : int           |
|<> + b : string        |
-----------------------------------
|<> # Job() : void      |
|<> # Job2() : string   |
|- SomeNonAbstractMethod() : void |
-----------------------------------

Est-ce que c'est correct? Des suggestions?

17voto

Christian Points 1547

Chaque "attribut" est en fait une propriété en UML2. Les méthodes abstraites sont affichées en texte italique (UML a une valeur booléenne pour cela).

La notation que vous utilisez est appelée Mot-clé (moyen simple) ou Stéréotype (plus complexe). Si vous voulez marquer une propriété comme étant "spéciale", c'est bien avec un mot-clé comme vous l'avez fait.

5voto

Si vous utilisez UMLet pour créer la classe UML, vous pouvez simplement mettre votre classe entre deux barres obliques : Classe abstraite UML avec une méthode abstraite utilisant UMLet

J'espère que cela aidera quiconque trouve ce message et cherche un moyen de le faire sur UMLet.

0voto

Vash Points 2857

Comme il n'y a pas de propriétés en UML, je pense que c'est une solution possible pour mettre en avant le fait qu'un attribut doit être implémenté comme une propriété. Cependant, vous devriez documenter l'utilisation de ce mot-clé non standard dans le document où vous utilisez le schéma.

Une autre solution serait de créer une convention selon laquelle tous les attributs publics doivent être implémentés comme des propriétés (sauf en cas d'exceptions...).

Si je me souviens bien, les méthodes abstraites sont affichées en utilisant du texte en italique. Je n'aime pas vraiment cette approche, car cela pourrait être plus facilement manqué dans votre diagramme. Cela dépend également des possibilités offertes par votre éditeur UML, où je préfère généralement m'adapter à la méthode de l'éditeur pour rester en ligne avec les autres diagrammes réalisés avec le même éditeur.

0voto

LudvigH Points 434

Dans UML 2.5.1, publié en 2017, une classe possède des propriétés (généralement appelées "propriété" dans de nombreux langages de programmation) et des opérations (généralement appelées "méthode" dans de nombreux langages de programmation).

Opérations abstraites

Les "méthodes" C# Job et Job2 sont des opérations abstraites.

Une opération (section 9.6) est un type de BehavioralFeature. Une BehavioralFeature peut être abstraite (section 9.9.2.5). Une BehavioralFeature est elle-même une classe abstraite (section 9.9.2.5). Chaque classe est un EncapsulatedClassifier (section 11.4.1). Chaque EncapsulatedClassifier est un StructuredClassifier (11.3.1). Chaque Classifiers est un Classifier (section 11.1). Je cite maintenant la norme (de la section 9.2.4.1) :

Le nom d'un Classifier abstrait est affiché en italique, lorsque la police utilisée le permet. Alternativement ou en plus, un Classifier abstrait peut être affiché en utilisant l'annotation textuelle {abstrait} après ou en dessous de son nom

Dans tous les cas, MyClass, Job et Job2 sont tous des classificateurs abstraits, et la manière préférée de montrer cela est par une police en italique. Et/ou utiliser la notation {abstrait}. La notation <> provient d'une norme UML plus ancienne.

Propriétés

a et b sont des propriétés appartenant à la classe MyClass. Une propriété possédée de cette façon est également appelée un attribut (11.4.3.1). La section 11.4.4 parle de la notation

Une classe possède quatre compartiments obligatoires : attributs, opérations, réceptions (voir 9.2.4) et structure interne (voir 11.2.4).

On peut en savoir plus sur les compartiments dans la section 9.2.4. Le message clé ici est : Le fait que a et b sont des propriétés est communiqué en les plaçant simplement dans le compartiment supérieur de la boîte de classe - le compartiment "attributs". C'est exactement ce que vous avez fait. L'écriture de <> pourrait être omise.

La notation <> signifie que les propriétés a et b suivent un stéréotype appelé propriété. Ce n'est pas défini dans UML, mais peut faire partie d'un profil UML. Selon https://stackoverflow.com/a/63784017, il s'agit d'un stéréotype spécifique à C#. Donc je suppose que vous pouvez conserver la notation que vous avez, indiquant que a et b sont non seulement des propriétés UML, mais aussi des proprietés C#.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X