Le diagramme de classes
Vocabulaire UML (classes, attributs et multiplicités, associations, navigabilité), niveau de détail demandé — et la méthode de conception : une méthode par cas d'utilisation, enrichie pas à pas sur le cinéma.
Rappels de conception orientée objet
Représenter un système comme un ensemble d'objets qui interagissent. Un objet est
une entité concrète ou abstraite du domaine (vélo, compte bancaire, liste chaînée),
décrit par un état (ses attributs) et des comportements (ses opérations — les
méthodes en Java). Une classe décrit les objets de même nature : exemple
CompteBancaire — attributs numéro, propriétaires, solde ; opérations créditer,
débiter, connaître le solde.
Le diagramme de classes et ses usages
Il décrit un ensemble de classes et leurs relations : lors de la conception (l'architecture d'un futur logiciel), comme documentation technique d'un existant, ou pour la génération de code. Dans ce cours, il sert à la conception.
Vocabulaire
Éléments limités au programme : classe, classe abstraite, interface ; relations : association, héritage, implémentation (flèche triangle pleine pour l'héritage, pointillée pour l'implémentation).
Un attribut est défini par son nom, son type (simple : int, double, String, char, Date — ou non simple, par association) et sa multiplicité :
| Multiplicité | Signification |
|---|---|
1 | exactement un (par défaut) |
0..1 | attribut optionnel |
1..★ | au moins un — collection non vide |
★ | 0 ou plus — collection possiblement vide |
n..m | entre n et m |
La visibilité (+/−/#) sera omise dans ce cours.
Associations : en ligne ou par association
Une association se dessine par un trait (bi-directionnelle) ou une flèche (uni-directionnelle). La règle de choix :
Si le type de l'attribut fait partie du diagramme de classes, l'attribut se déclare
par association — sinon (comme Devise), il se déclare en ligne.
Dans Personne : nom et adresse en ligne, comptes par association (multiplicité
*). Dans CompteBancaire : numéro et solde en ligne, devise en ligne (type hors
diagramme), propriétaire1 et propriétaire2 par association (multiplicités 1..2 :
le premier ne peut pas être null). La navigabilité se justifie fonctionnellement :
une Salle connaît les Film programmés (Collection<Film>, multiplicité 0..5 avec
programmer(Film f) qui vérifie la limite), mais un Film n'a pas d'attribut lié aux
salles.
Le niveau de détail demandé
Dans vos diagrammes : chaque classe a trois zones (nom, attributs, opérations) ; attribut en ligne avec nom, type et multiplicité ; attribut par association avec nom et multiplicités. Sont omis de préférence pour la lisibilité : la visibilité et les getters/setters.
La méthode de conception
Objectif : concevoir une application qui répond aux besoins.
- Créer une classe Main.
- Y ajouter une méthode par cas d'utilisation, avec les données en entrée de la fiche descriptive comme paramètres.
- Enrichir le diagramme jusqu'à ce que chaque méthode soit implémentable — ni plus, ni moins.
Le cours déroule l'exemple du cinéma pas à pas. Enregistrer film : stocker titre,
description et image → la classe Film apparaît. Planifier séance : il faut une
Séance liée à Film (rôle film 1) — la salle est d'abord un simple attribut
salle : String. Vendre tickets : la garantie « pas plus de tickets que la capacité
de la salle » fait de la salle une vraie classe Salle avec nbPlaces, et la séance
suit ses ventes avec nbTicketsVendus ; le scénario alternatif (« il ne reste pas
assez de places ») justifie le type de retour <boolean, int> de vendreTicket —
succès et places restantes à afficher. Calculer chiffre d'affaires : par film et par
période. Enfin, des méthodes d'aide rangent les traitements dans les classes qui
possèdent les données : vendreTickets(qté) sur Séance, et
calculerChiffreAffaires(débutPériode, finPériode) sur Film, qui connaît ses
séances (rôle séances *).
Si la méthode est appliquée avec rigueur, le diagramme obtenu identifie les informations nécessaires et leurs relations, sans rien de superflu. C'est un premier diagramme de classes de conception — il ne sera pas forcément implémenté tel quel, mais c'est le point de départ demandé en R3.03.
A retenir
- attribut : nom, type, multiplicité — par association si le type est dans le diagramme ;
- navigabilité justifiée par la fonction ;
- conception : classe Main, une méthode par cas d'utilisation, enrichir pour rendre chaque cas implémentable ;
- vocabulaire à connaître : classe, association, opération, multiplicité, attribut en ligne / par association.
Sujet de DS 2022.pdf
R3.03 · Pour s'entraîner : le diagramme de classes de Sansouci est la question 3 du DS 2022
Chargement du document…
Dernière mise à jour le
Scénarios et fiches descriptives
Du « comment implémenter » au scénario nominal et à ses alternatifs — puis la fiche descriptive d'un cas d'utilisation : format, règles d'écriture, préconditions, acteurs secondaires, déclencheur.
TD 1 — Diagrammes de cas d'utilisation
Correction du TD 1 : le site de vente groupée Groupin et le service de parrainage entre cyclistes — besoins extraits par « En tant que… je dois pouvoir… », acteurs identifiés, diagrammes corrigés et pièges.