Le diagramme de classes

Objectif du cours L’objectif de ces notions est de vous apprendre à lire et esquisser un diagramme de classes : classes, attributs, opérations, visibilités, relations (héritage, association, agrégation, composition, dépendance, réalisation), multiplicités, navigabilité, et notions de couplage/cohésion.

À à quoi sert un diagramme de classes ?
  • À représenter la structure statique d’un domaine (concepts, attributs, liens).
  • À préparer/communiquer la conception (API, contrats, responsabilités).
  • Va servir de support aux autres modèles (use cases, séquences, persistance).

À retenir : UML n’impose pas l’implémentation, il décrit. Le code peut ensuite diverger, mais il doit rester cohérent avec les décisions prises.


1) Les classes

NomDeClasse «stéréotype»
- attribut : Type [= défaut] {contraintes} # autreAttribut : Type
+ operation(param: Type) : Retour {propriétés} ~ helper()

Visibilités :

  • + public
  • # protégé
  • ~ package (interne)
  • - privé

Nomenclature :

  • Nommez avec des noms pour les classes
  • Nommez noms + types précis pour les attributs
  • Nommez verbes pour les opérations

2) Les relations (liens)

RelationIdéeDiagramme rapideTraduction courante (Java)
Généralisation« est-un(e) »A ◁── Bclass B extends A
Réalisation« implémente »I ◁·· Bclass B implements I
Association« a-une » (référence)A ─── Bchamp / référence
Agrégation« a des » (partageable)A ◇── Bcollection / référence (cycle de vie indépendant)
ça implique que :
- l’objet A est attribut de l’objet B.
Composition« est composé de » (très fort)A ◆── Bchamp obligatoire, cycle de vie lié
ça implique que :
- l’objet B devra se retrouver comme attribut d’une ou plusieurs méthodes de l’objet A
- l’objet A est attribut de l’objet B
Dépendance« utilise » (faible, ponctuel)A - - > Bparamètre local, import, appel statique
ça implique que :
- l’objet A dépendant de l’objet B
- l’objet B devra se retrouver comme attribut d’une ou plusieurs méthodes de l’objet A.
NotationSignification / Exemple
Multiplicitésn, 0..n, *, 1..*, 0..*, n..m
Navigabilitéflèche du côté « connaissant » → A ───> B

3) Notions de couplage et cohésion (qualités de conception)

  • La cohésion (à l’intérieur d’une classe/module), mesure à quel point les éléments d’une classe vont ensemble.

On rechercher une cohésion forte : une responsabilité claire (SRP), API compactes.

  • Le couplage (entre classes/modules), mesure à quel point des éléments dépendent les uns des autres. On rechercher un couplage faible : interfaces, inversion de dépendance, dépendances stables. Exemple : exposer des types internes (classes concrètes) au lieu d’interfaces → couplage fort.

Exercice – la boutique en ligne (diagramme de classes UML)

On vous demande de modéliser le noyau d’une petite boutique en ligne, ayant deux types d’utilisateurs interagissent avec le système : les clients qui achètent des produits et les administrateurs qui gèrent le catalogue. Les achats se font via un panier d’achat qui se transforme en commande, expédiée selon des informations d’expédition. Chaque commande est composée de détails de commande (lignes).

Objectif : produire un diagramme de classes UML complet (attributs, opérations, associations, multiplicités et généralisations) répondant aux exigences ci-dessus.