Archyno
UMLDiagrammes de structure

Exemples de diagrammes de classes UML

Deux domaines modélisés correctement, avec un argument pour chaque trait - une bibliothèque qui a besoin d'héritage et un panier qui a besoin de composition.

6 min de lectureUML 2.5.15 sur 35

La réponse courte

  • Deux domaines couvrent toutes les sortes de relations que vous tracerez : une bibliothèque qui a besoin d'héritage et un panier qui a besoin de composition.
  • Un diagramme est une vue sur un modèle, pas le modèle. Une vue contenant toutes les classes ne répond à rien.
  • De cinq à douze classes. Au-delà de douze, les relations se croisent et l'attention part dans le suivi des traits plutôt que dans le domaine.
  • Dessinez les classes dont il est question et laissez les deux cents autres dans le modèle, où un outil saura les retrouver.
Un diagramme de classes UML d'une bibliothèque. LibraryItem est une classe abstraite avec title et id ; Book et DVD la généralisent toutes deux. Member est associée à Loan, un à zéro ou plusieurs, et Loan est associée à exactement un LibraryItem.
Une bibliothèque. La base abstraite porte ce que tout exemplaire possède ; les sous-types portent ce qu'eux seuls possèdent.

01Une bibliothèque, où l'héritage mérite sa place#

Le diagramme ci-dessus mérite d'être lu relation par relation. Book et DVD généralisent LibraryItem, ce qui se dessine par un triangle creux pointant vers le parent - et la raison de le dessiner ainsi plutôt qu'en deux classes sans lien aux attributs dupliqués est l'association en dessous. Loan pointe vers exactement un LibraryItem, et comme il pointe vers le parent abstrait, il peut prêter l'un ou l'autre sous-type sans savoir lequel.

C'est tout le test de l'héritage dans un modèle de domaine : non pas "ces deux choses se ressemblent-elles", mais y a-t-il quelque part dans le modèle quelque chose qui veut tenir l'une ou l'autre sans se soucier de laquelle. Si rien ne le fait, deux classes séparées sont la réponse la plus petite et la plus honnête.

Notez les multiplicités sur l'association Member-Loan : 1 à 0..*. Un membre sans emprunt est un membre ; un emprunt sans membre est un bug. Cette asymétrie est un fait réel du domaine et elle est inscrite sur le trait plutôt que laissée à un commentaire. L'article sur le diagramme de classes explique comment chacun de ces symboles se dessine.

02Un panier, où la composition mérite sa place#

Un diagramme de classes UML d'un panier d'achat. Basket est composé d'une ou plusieurs BasketLine, et chaque BasketLine est associée à exactement un Product. Basket est associé à une interface PricingRule, que PercentageOff et BuyOneGetOne réalisent toutes deux.
Un panier. Le losange plein dit qu'une ligne ne survit pas au panier sur lequel elle se trouve.

Celui-ci ne contient aucun héritage, et c'est justement pourquoi il est montré à côté de la bibliothèque. Il a à la place une composition et une interface, et chacune est là pour une raison dont l'autre diagramme n'avait pas l'usage.

Le losange plein entre Basket et BasketLine est une affirmation : supprimez le panier et les lignes partent avec lui, parce qu'une ligne de panier n'a aucun sens toute seule. Comparez avec l'association simple de BasketLine vers Product, où le produit survit manifestement à la ligne - même forme de relation, deux durées de vie différentes, et la notation les distingue.

PricingRule est le point d'extension. Deux réalisations sont dessinées parce qu'une seule réalisation n'est pas une abstraction, c'est une classe avec une étape en plus - et dès qu'il y en a deux, ajouter une troisième promotion devient une nouvelle classe plutôt qu'une nouvelle branche dans une méthode existante.

03Comment lire l'un ou l'autre en trente secondes#

Les deux diagrammes récompensent le même ordre de lecture, et ce n'est pas de gauche à droite. Commencez par les multiplicités, car ce sont les décisions : elles disent ce que le système autorise et sont le plus difficile à changer ensuite. Lisez ensuite les losanges, qui disent ce qui est supprimé avec quoi. Puis les triangles, qui disent ce qui peut tenir lieu de quoi. Les attributs en dernier, et seulement ceux dont vous doutez.

Un diagramme qui survit à cette lecture mérite d'être gardé. Un diagramme aux multiplicités vides n'est pas terminé, quel que soit le nombre d'attributs qu'il liste - et c'est de loin l'état dans lequel on trouve le plus souvent un diagramme de classes.

En une ligne chacun

  1. 01Dessinez l'héritage quand quelque chose dans le modèle tient le type parent sans se soucier du sous-type.
  2. 02Employez la composition quand la partie est supprimée avec le tout, et une association simple sinon.
  3. 03Une interface à une seule réalisation est une classe avec des étapes en plus ; deux en font un point d'extension.
  4. 04Les multiplicités sont les décisions du diagramme. Vides, elles signifient qu'il est inachevé.
  5. 05Cinq à douze classes par diagramme. Une vue qui contient tout ne répond à rien.

Ensuite : comment en dessiner un de zéro, et la référence des symboles pour vérifier une marque dont vous n'êtes pas sûr.

04Questions fréquentes#

Quel est un bon exemple de diagramme de classes UML ?

Un diagramme assez petit pour être lu d'un coup d'oeil et assez complet pour qu'on puisse le discuter. Une bibliothèque avec un LibraryItem abstrait et deux sous-types montre l'héritage ; un panier composé de ses lignes montre la composition. Ensemble, ils couvrent chaque sorte de relation que vous tracerez.

Un diagramme de classes doit-il montrer toutes les classes ?

Non. Un diagramme est une vue sur un modèle, pas le modèle lui-même, et une vue qui contient tout ne répond à rien. Dessinez les classes dont il est question, et laissez les deux cents autres dans le modèle, où un outil saura toujours les retrouver.

Combien de classes sur un diagramme de classes ?

Entre cinq et une douzaine. En dessous de cinq, on n'a en général pas encore dit assez pour que cela vaille la peine ; au-delà de douze, les relations se croisent et le lecteur dépense son attention à suivre des traits plutôt qu'à comprendre le domaine.

Dans cette série

À lire aussi

Tous les articles