Guide complet avec exemples détaillés en français
Un diagramme de classes UML (Unified Modeling Language) est un type de diagramme de structure qui montre la structure d'un système en modélisant les classes du système, leurs attributs, leurs opérations et les relations entre les objets. C'est l'un des diagrammes les plus utilisés en conception orientée objet.
Ce diagramme montre les classes de base pour un système de gestion d'école avec leurs attributs et méthodes principales.
Ce diagramme représente un système de bibliothèque avec les classes principales et leurs responsabilités.
Une classe UML est représentée par un rectangle divisé en trois compartiments : Nom de la classe (haut), Attributs (milieu), et Opérations/Méthodes (bas).
Cette classe Voiture montre différents types d'attributs (String, int, double, boolean) et méthodes publiques et privées.
Cette classe montre des attributs avec des types complexes comme Date et List, ainsi que des méthodes avec paramètres.
L'héritage est représenté par une flèche pleine avec un triangle à l'extrémité pointant vers la classe parente. La classe enfant hérite des attributs et méthodes de la classe parente.
Chien, Chat et Oiseau héritent d'Animal. Chaque classe enfant implémente la méthode abstraite faireDuBruit() de manière spécifique.
Les classes spécialisées héritent des attributs et méthodes communes, tout en ayant leurs propres spécificités et implémentations de calculerSalaire().
L'association représente une relation structurelle entre deux classes. Elle est représentée par une ligne simple entre les classes, avec éventuellement des rôles et multiplicités.
Un Client peut passer zéro ou plusieurs Commandes. Chaque Commande est passée par exactement un Client.
Un Médecin peut traiter plusieurs Patients et un Patient peut consulter plusieurs Médecins. L'association est bidirectionnelle.
L'agrégation est une forme spéciale d'association qui représente une relation "tout-partie" où les parties peuvent exister indépendamment du tout. Représentée par une ligne avec un losange vide du côté du "tout".
Une Université est composée de plusieurs Départements. Les Départements peuvent exister indépendamment de l'Université.
Un Panier contient plusieurs Articles. Les Articles peuvent exister sans être dans un Panier (stock, catalogue).
La composition est une forme forte d'agrégation où les parties ne peuvent pas exister indépendamment du tout. Représentée par une ligne avec un losange rempli du côté du "tout".
Une Maison est composée de Pièces. Si la Maison est détruite, les Pièces cessent d'exister (dans le contexte du modèle).
Une Commande est composée de Lignes de Commande. Les Lignes de Commande ne peuvent pas exister sans une Commande.
La dépendance représente une relation où un changement dans une classe peut affecter l'autre. Représentée par une flèche en pointillés avec une flèche pleine.
La classe Commande dépend de ServicePaiement pour traiter les paiements. La dépendance est temporaire et contextuelle.
Plusieurs classes dépendent de Logger pour enregistrer des informations. Logger est utilisé de manière statique.
La réalisation montre qu'une classe implémente une interface. Représentée par une flèche en pointillés avec un triangle vide pointant vers l'interface.
Différentes classes implémentent l'interface IPaiement, chacune avec sa propre implémentation de la méthode traiter().
Chaque classe implémente l'interface INotification avec des méthodes spécifiques à son type de notification.
La multiplicité définit combien d'instances d'une classe peuvent être associées à une instance d'une autre classe. Notations courantes : 1 (exactement un), 0..1 (zéro ou un), 0..* (zéro ou plusieurs), 1..* (un ou plusieurs).
Ce diagramme montre différentes multiplicités : une école peut avoir 0 ou plusieurs étudiants, 1 à 50 professeurs, etc.
Ce diagramme illustre des multiplicités variées : un client peut avoir jusqu'à 3 adresses, un produit peut appartenir à plusieurs catégories.
La visibilité définit l'accessibilité des attributs et méthodes : + (public), - (private), # (protected), ~ (package).
Les attributs et méthodes sont classés par visibilité : privé (-), protégé (#), package (~), et public (+).
La classe Voiture hérite des attributs et méthodes protégés (#) de Vehicule, mais pas des privés (-).