2010-11-26 6 views
1

J'ai une super classe, que 40 autres classes héritent, à ce stade je voudrais simplifier le diagramme, pour être exact toutes les relations d'héritage (40 relations pointent vers une seule classe) toutes ces "flèches" font juste le diagramme un désordre complet, est-il possible de simplifier cela?Comment simplifier une notation d'héritage de diagramme de classe UML?

+0

Quel est le but? Lorsque vous avez 40 classes sur un seul diagramme, quelle valeur ce diagramme fournit-il? Quel genre de design a 40 classes héritées d'un? – duffymo

+0

Je suis d'accord avec @duffymo, UML a été inventé en premier lieu parce qu'ils avaient besoin d'un moyen standard (et simple) de modélisation, en particulier dans les premières phases de la conception d'un système (et commencer à le compliquer itérativement). De toute façon bonne chance. –

+1

1er, merci pour vos réponses, comme l'a mentionné duffymo ... 40 classes héritées d'un? Eh bien une classe simple qui a des attributs comme, horodatage de LastModification, dernière modification utilisateur, version, rôle, etc. Donc fondamentalement, toutes les autres 40 classes sont des paramètres qui ont besoin de ce type d'informations stockées, c'est pourquoi tous les paramètres héritent d'une classe simple informations de base, peut-être je vais changer la question et serait, quel type de diagramme dois-je utiliser le mieux ou quel genre de schéma est-ce que cela suit? – nicoliniyo

Répondre

0

Il n'y a pas de moyen direct de simplifier un tel cas dans UML Specs, mais vraiment 40 classes à hériter d'une classe? Je pense que vous devrez réexaminer votre conception.

En général, vous pouvez omettre les attributs et les méthodes des classes, ce qui est au moins préférable.

+0

1er, merci pour vos réponses, comme le dit Duffymo ... 40 classes héritant d'un? Eh bien une classe simple qui a des attributs comme, horodatage de LastModification, dernière modification utilisateur, version, rôle, etc. Donc fondamentalement, toutes les autres 40 classes sont des paramètres qui ont besoin de ce type d'informations stockées, c'est pourquoi tous les paramètres héritent d'une classe simple informations de base, peut-être je vais changer la question et serait, quel type de diagramme dois-je utiliser le mieux ou quel genre de schéma est-ce que cela suit? – nicoliniyo

0

Utilisez-vous l'héritage pour la réutilisation de code? Je n'ai jamais rencontré un scénario où il y a 40 sous-classes. Quoi qu'il en soit, une idée consiste à regrouper les classes logiquement liées en un seul diagramme de paquets et à avoir ensuite des relations de paquets.

Je voudrais proposer quelques suggestions si

  1. diagrammes UML sont 90 de ;-). Dans le monde actuel de l'agilité, je vois peu d'utilisation de ces diagrammes
  2. Regardez dans les outils qui peuvent faire de l'ingénierie inverse de votre code et créer des diagrammes de classe et de séquence en cas de besoin. Cela vous aide à visualiser uniquement les parties pertinentes d'une application à la demande
  3. Lisez à propos sub-typing versus sub-classing
+0

Eh bien, il a été compliqué d'inverser, comme je l'utilise hibernate, cadre de couture, et d'autres bibliothèques, de sorte qu'il est toujours incomplète ou juste à beaucoup quand je inverse, mais je vais lire votre suggestion! thanbks – nicoliniyo

+0

Seules les personnes ayant une bonne connaissance de la conception OOP apprécieront UML. – janetsmith

0

Ceci est une bonne question parce que j'eu un problème similaire dans un de mes projets. Ce que j'ai fait est de réduire la taille de chaque classe dans l'ordre juste pour avoir le nom affiché. J'ai alors sélectionné une disposition circulaire + hiérarchique et déplacé avec ma souris tous ces liens.

Le résultat a été brillant. L'outil que j'ai utilisé était EclipseUML Omondo.

0

Je suggère ce qui suit:

**

  • SCENARIO 1

**

Si vous ne prévoyez pas d'utiliser le modèle pour la génération de code :

  • Placer toutes les sous-classes dans un paquet. Donnez à ce paquet un nom pour indiquer que tout ce qu'il contient contient des éléments/classes hérités de la super classe spécifique. Par exemple, si la super classe est nommée "SuperFoo", j'appellerais le paquet "SuperFoo_SubTypes"
  • Placez une note dans le paquetage pour indiquer que toutes les classes du paquet héritent de la super classe.

**

  • SCENARIO 2

**

Vous prévoyez en effet de générer du code à partir de votre modèle:

Option 1 Je vous suggérerais peut-être de dessiner toutes les associations d'héritage comme d'habitude, puis de masquer la super classe en utilisant la fonctionnalité de masquage de votre outil de modélisation.

Option 2 Utilisez la notation alternative pour décrire l'héritage/généralisation, par chacune des sous-classes, écrit le nom de la superclasse en italique et dans les coins supérieurs à droite des éléments de sous-classe. Cette méthode est brièvement expliquée dans cet article: http://www.sparxsystems.com/resources/uml2_tutorial/uml2_classdiagram.html Cela dépendra bien sûr si votre outil de modélisation supporte cette notation.

J'espère que cela aide!

Questions connexes