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.
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#
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
- 01Dessinez l'héritage quand quelque chose dans le modèle tient le type parent sans se soucier du sous-type.
- 02Employez la composition quand la partie est supprimée avec le tout, et une association simple sinon.
- 03Une interface à une seule réalisation est une classe avec des étapes en plus ; deux en font un point d'extension.
- 04Les multiplicités sont les décisions du diagramme. Vides, elles signifient qu'il est inachevé.
- 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
- 01Qu'est-ce que UML ?
- 02Symboles UML
- 03Choisir un diagramme
- 04Diagrammes de classes
- 05Exemples de diagrammes de classes
- 06Dessiner un diagramme de classes
- 07Symboles du diagramme de classes
- 08Diagrammes de séquence
- 09Exemples de diagrammes de séquence
- 10Dessiner un diagramme de séquence
- 11Diagrammes de cas d'utilisation
- 12Exemples de cas d'utilisation
- 13Diagrammes d'activité
- 14Exemples d'activité
- 15Diagrammes états-transitions
- 16Exemples d'états-transitions
- 17Diagrammes de composants
- 18Exemples de composants
- 19Dessiner un diagramme de composants
- 20Symboles de composants
- 21Diagrammes de déploiement
- 22Exemples de déploiement
- 23Diagrammes d'objets
- 24Diagrammes de paquetages
- 25Diagrammes de structure composite
- 26Diagrammes de communication
- 27Séquence vs communication
- 28Diagrammes de temps
- 29Diagrammes globaux d'interaction
- 30Diagrammes de profil
- 31UML avec l'IA
- 32Exemple e-commerce
- 33Exemple bancaire
- 34Exemple microservices
- 35Exemple AWS
À lire aussi
Diagrammes de structure
Diagrammes de structure
Référence de notation
Fondamentaux
Fondamentaux
Diagrammes de comportement