web-dev-qa-db-fra.com

Raccourci pour indiquer ou impliquer des getters et setters dans les diagrammes de classes UML

Dans un diagramme de classes UML, si une classe a 5 attributs privés qui doivent être mutables et lisibles, l'UML devient assez moche avec 10 méthodes get/set même sans aucune des fonctionnalités intéressantes de la classe:

Bloated

Mis à part la laideur, je pense que l'UML devrait se concentrer sur les fonctionnalités les plus intéressantes de la classe. Ai-je raison?

Existe-t-il un raccourci standard pour désigner ou impliquer des getters et setters pour des attributs privés?

19
kdbanman

Vous avez raison: il n'est pas nécessaire d'inclure le (bruit de) signatures "passe-partout" des normalisateurs et des getters dans un modèle de classe. Malheureusement, UML ne définit pas de notation standard pour impliquer les getters et les setters pour les attributs privés. Vous devez donc utiliser votre propre convention. Par exemple, vous pouvez inclure une explication générale (que toutes les propriétés privées ont des getters et des setters, alors que les propriétés privées en lecture seule n'ont que des getters) en UML Commentaire , représenté par un rectangle avec le coin supérieur droit plié (également appelé "symbole de note") attaché au diagramme.

Si vous préférez rendre la convention getter/setter plus explicite pour les propriétés concernées, créez vos propres stéréotypes (par exemple, "get/set" et "get") à utiliser pour catégoriser ces propriétés privées, comme le montre le diagramme suivant :

Class with get/set attribute stereotypes

J'utilise également ceci pour décrire/documenter les getters et setters implicites des classes ECMAScript 6.

22
Gerd Wagner

UML ne définit pas d'opérations de définition de getter. Les méthodes Get et Set sont utilisées dans les langages de programmation pour réaliser la définition des attributs. Par exemple, l'attribut en lecture seule aura la méthode getter uniquement dans le code d'implémentation. si l'attribut est défini comme calculé, la méthode getter est généralement utilisée dans le code pour implémenter le calcul, et setter peut être supprimé, car les attributs calculés sont généralement en lecture seule. La visibilité de l'attribut est généralement déplacée vers la visibilité des méthodes getter et setter dans le code. Il n'est pas logique de définir des méthodes geter et setter dans le code pour les attributs définis en lecture-écriture et non calculés.

2
Vladimir