Vous êtes sur la page 1sur 46

UML : Vue structurelle

- Diagramme de classes -

pr. LAASSIRI Jalal / Dept 37


Définitions
• Structure statique d’un système
– Classes (ensembles d’objets)
– Relations entre classes (ensembles de liens entre objets)

• Opérations / méthodes
– Opération : service qui peut être demandé à n’importe quel objet de
la classe.
– Méthode : implémentation d’une opération.
– Chaque opération non abstraite d’une classe doit avoir une méthode
qui fournit un algorithme exécutable comme corps (cet algorithme
est donné dans un langage de programmation ou dans du texte
structuré).

pr. LAASSIRI Jalal / Dept 38


Niveau de détail d’analyse

Spécification : plusieurs niveaux de détails :


– Niveau de détail d’analyse
Pas de précision sur la mise en œuvre
Indépendant du logiciel
Plusieurs niveaux de précision au fil des itérations d’analyse

• simplifié
–Uniquement le nom de la classe NomClasse

•intermédiaire NomClasse
–Nom de la classe attribut1 NomClasse
–Nom des attributs, ou des opérations attribut2
attribut3 attribut1
… attribut2
•complet attribut3
–Nom de la classe …
–Noms des attributs
–Noms des méthodes Opération1
Opération2

pr. LAASSIRI Jalal / Dept 39


Niveau de détail de conception

– Niveau de détail de conception


Identification de l’interface des classes :
type des objets, comportement externe, façon interne de les mettre en
œuvre Indépendant du logiciel

•Attributs :
–Type
–Valeurs par défaut
–Degré de visibilité NomClasse
–Caractéristique - Attribut1 : type1
•Opérations : # Attribut2 : type2 = valeur2
–Signature # /Attribut3 : type3

–Degré de visibilité
–Caractéristique + Opération1 (arg1, arg2,…) : type4
# Opération2 () : void

pr. LAASSIRI Jalal / Dept 40


Notation des attributs et opérations

Nom de classe
Attributs

Opérations( )

• Attribut
<visibilité> <nomAttribut> : <type> = <valeur par défaut>

• Opération
<visibilité> <nomOpération> (listeParamètres) : <typeRetour>
Paramètre
<nom> : <type> = <valeur par défaut>

pr. LAASSIRI Jalal / Dept 41


Visibilité

Visibilité = degré de protection


+ : publique (accessible à toutes les classes)
les classes peuvent accéder aux données et méthodes d'une
classe définie avec le niveau de visibilité public
# : protégé (accessibles uniquement aux sous-classes)
l'accès aux données est limité aux méthodes de la classe elle-
même
- : privé (inaccessible à tout objet hors de la classe)
Pas de visibilité
par défaut NomClasse

+ Attribut publique
# Attribut protégé
- Attribut privé

+ Opération publique
# Opération protégée
- Opération privée

pr. LAASSIRI Jalal / Dept 42


Type

• Attribut
• type de base (entier, booléen, caractère, tableau…)
integer, double, char, string, boolean, date, time, void
• Au niveau analyse, pas d’attribut instance d’une classe (on utilise
une association)
• Au niveau conception, on décide quelles associations peuvent être
représentées par des attributs

• Opération
• Type quelconque (de base ou classe)

pr. LAASSIRI Jalal / Dept 43


Valeur par défaut des attributs

• Affectée à l’attribut à la création des instances de la classe


• En analyse, on se contente souvent d’indiquer le nom des attributs

Voiture

- Marque : string
- Modèle : string
- Turbo : boolean = false

+ Démarrer ()
+ Rouler ()
+ Freiner ()

pr. LAASSIRI Jalal / Dept 44


Attributs et opérations de classe

• Notation : nomAttribut ou nomOpération


• Attribut partagé par toutes les instances de la classe
• Opération sur des attributs de classes

Voiture

- Marque : string
- Modèle : string
- Turbo : boolean = false
- NbRoues : int = 4
- NbInstances = 0

+ Démarrer ()
+ Rouler ()
+ Freiner ()
+ IncrémenterNbInstances ()

pr. LAASSIRI Jalal / Dept 45


Exemples / niveaux d’abstraction

voiture voiture
immatriculation + immatriculation : string
couleur + couleur : string
marque + marque : string
puissance # puissance : int attributs
poids # poids : int types
date - date : Date
propriétaire - propriétaire : string

demarrer + demarrer()
arreter - contact() : bool
conduire + conduire(a : string = « kenitra », b : string) méthodes
voiture vendre + vendre(prix : float) prototype

Niveaux d’accès
Classe non documentée Classe documentée Classe détaillée

UML 46
pr. LAASSIRI Jalal / Dept 46
Attributs et opérations dérivés

• Notation : /nomAttribut
• Propriété redondante, dérivée d’autres propriétés déjà allouées
• En conception, un attribut dérivé peut donner lieu à une opération qui
encapsulera le calcul effectué

Commande Commande
Numéro Numéro
PrixHT PrixHT
TVA TVA
/PrixTTC /PrixTTC

CalculerPrixTTC ()

pr. LAASSIRI Jalal / Dept 47


Sémantique

Un diagramme de classes est une collection d'éléments de modélisation


statiques (classes, paquetages...), qui montre la structure d'un modèle

Un diagramme de classes fait abstraction des aspects dynamiques et temporels

Pour un modèle complexe, plusieurs diagrammes de classes complémentaires


doivent être construits
On peut par exemple se focaliser sur :
les classes qui participent à un cas d'utilisation (cf. collaboration)
les classes associées dans la réalisation d'un scénario précis
les classes qui composent un paquetage
la structure hiérarchique d'un ensemble de classes

UML 48
pr. LAASSIRI Jalal / Dept 48
Les relations entre classes

• L’association
• L’agrégation
• La généralisation

pr. LAASSIRI Jalal / Dept 49


L’association

• L’association exprime une connexion sémantique entre classes


• La plupart des associations sont binaires : connectent 2 classes
• Notation :

Classe1 Classe2

Université Étudiant

pr. LAASSIRI Jalal / Dept 50


Association n-aire
Salle
• Représentation au niveau de
l’association

Enseignant ◇ Étudiant

Cours
Début
Fin
• Représentation au moyen d’une
classe
+ contrainte qui exprime que
les multiples branches de
l’association s’instancient Salle
simultanément en un même lien
<< assoc. Ternaire>>
Cours
Enseignant Étudiant
Début
Fin

pr. LAASSIRI Jalal / Dept 51


Association qualifiée

Une association qualifiée met en relation deux classes sur la base d’un attribut
spécifique appelé « clé »

* 1..n
Banque numCompte Personne

52
pr. LAASSIRI Jalal / Dept 52
Nommage des associations

• Indication du sens de lecture de l’association


• Une association peut se lire dans les 2 sens, en fonction des besoins
• Usage : forme verbal, active ou passive – Pb : confusion avec le comportement
➔ nommage des extrémités : plus en phase avec la représentation statique

NomAssoc >
Classe1 Classe2

Emploie >
Société Personne

< Est employé par


Société Personne

pr. LAASSIRI Jalal / Dept 53


Nommage des rôles

• Le rôle décrit comment une classe voit une autre classe à travers une
association
• Une association a par essence 2 rôles, selon le sens dans lequel on la
regarde
• Usage : Forme nominale

Rôle1
Classe1 Classe2
Rôle2

Société Employeur
Personne Parent
Employé
Personne
Directeur
Société Personne Enfant
Employé

pr. LAASSIRI Jalal / Dept 54


Principales contraintes

Contrainte {ordonnée} : une relation d’ordre décrit les


objets

Contrainte {sous-ensemble} : une collection est incluse


dans une autre collection

Contrainte {ou-exclusif} : pour un objet donné, une


seule association est valide

UML 55
pr. LAASSIRI Jalal / Dept 55
Exemples

Peintre Tableau
1 peint 1..n
{ordonnée}

Personne Armée
militaire

{sous-ensemble}
général

Personne Licence
enseignant
{ou-exclusif}

étudiant
56
pr. LAASSIRI Jalal / Dept 56
Multiplicité

• Chaque rôle porte une indication de multiplicité : nombre d’objets


de la classe considérée pouvant être liés à un objet de l’autre classe
• Information portée par le rôle

Rôle1 m2
Classe1 Classe2
m1 Rôle2

Valeur : signification :
1 Un et un seul
0..1 Zéro ou un
M .. N De M à N (entiers naturels)
* De zéro à plusieurs
0 .. * De zéro à plusieurs
1 .. * D'un à plusieurs

pr. LAASSIRI Jalal / Dept 57


pr. LAASSIRI Jalal / Dept 58
Lecture d’un association

« Un employeur emploi plusieurs personnes »

*
Société SonEmployeur
1 SesEmployés Personne

« Un employé est employé par un seul employeur »

pr. LAASSIRI Jalal / Dept 59


Les restrictions

• Une restriction (ou qualification) consiste à sélectionner un sous-ensemble


d’objets parmi l’ensemble des objets qui participent à une association

Classe A Classe B
Clé
• Exemple :

* Case
Échiquier

Ligne 1 Case
Échiquier
Colonne

pr. LAASSIRI Jalal / Dept 60


Classe associative

• Ensemble d’attributs qualifiant la relation

SesÉtudiants *
Étudiant * SesMatières
Matière

Moyenne
• Représentation simplifiée

Étudiant Moyenne Matière

pr. LAASSIRI Jalal / Dept 61


L’agrégation(1)

• Connexions bidirectionnelles dissymétriques


– une des extrémités est prédominante par rapport à l’autre
– Ne concerne qu’un seul rôle
• Représentation des relations de type :
– tout et parties
– composé et composants
– maître et esclaves
• Deux type d’agrégation :
– Agrégation partagée (par référence) – notion de co-propriété
•La création (resp. la destruction) des composants est indépendante de la création
(resp. la destruction) du composite.
•Un objet peut faire partie de plusieurs composites à la fois.
– Composition (par valeur) :
•Cas particulier de l’agrégation : attributs contenus physiquement par l’agrégat
•La création (resp. la destruction) du composite entraîne la création (resp. la
destruction) des composants.
•Un objet ne fait partie que d’un seul composite à la fois.

pr. LAASSIRI Jalal / Dept 62


Exemples

• Agrégation

CoPropriétaire 0..*
Personne ◇ 1..* Immeuble
Immeuble

• Composition

Voiture

1
Moteur Voiture Moteur

* 1
Cylindre Carburateur

pr. LAASSIRI Jalal / Dept 63


L’agrégation(2)

◇ ◇

pr. LAASSIRI Jalal / Dept 64


Navigabilité d’une association

• Qualité d’une association qui permet le passage d’une classe vers une autre
• Par défaut, on peut naviguer dans les 2 sens
• On peut cependant limiter la navigabilité :

• ExempleClasse
: 1 Classe 2
Une instance d’utilisateur peut accéder à des instances
de Mot de passe, mais pas l’inverse.

Utilisateur
détenteur * Mot de passe
1 clef

pr. LAASSIRI Jalal / Dept 65


Méthode - 1ers attributs
PRODUIT
• Attributs décrivant l'objet
- Nom : string
- Description : string • Attributs de classes
- Poids : float
- PrixHT : float • Attributs dérivés
- TauxTaxe : float = 19,6
- /PrixTTC : float
- TauxFrancs : float = 6,5559
- /PrixTTCFrancs : float

pr. LAASSIRI Jalal / Dept 66


Méthode - 1ères méthodes
PRODUIT
• Constructeur (s)
- Nom : string
- Description : string • Accesseurs (1 pour chaque attribut)
- Poids : float
- PrixHT : float • Calcul des attributs dérivés
- TauxTaxe : float = 19,6
- /PrixTTC : float
- TauxFrancs : float = 6,5559
- /PrixTTCFrancs : float

+ PRODUIT (nom : string, description :


string, poids : float, prixHT : float) :
PRODUIT

+ GetNom () : string
+ GetDescription () : string
+ GetPoids () : float
+ GetPrixHT () : float
+ GetTauxTaxe () : float
+ GetPrixTTC () : float
+ GetTauxFrancs () : float
+ GetPrixTTCFrancs () : float
+ GetSesPaniers () : ensemble(PANIER)

+ CalculerPrixTTC () : void
+ CalculerPrixTTCFrancs () : void

pr. LAASSIRI Jalal / Dept 67


Méthode - Autres méthodes
PRODUIT
• Modifieurs
- Nom : string
- Description : string – Publics
- Poids : float
- PrixHT : float – Privés
- TauxTaxe : float = 19,6
- /PrixTTC : float • Autres méthodes
- TauxFrancs : float = 6,5559
- /PrixTTCFrancs : float

+ PRODUIT (nom : string, description :


string, poids : float, prixHT : float) :
PRODUIT
+ GetNom () : string
+ GetDescription () : string
+ GetPoids () : float
+ GetPrixHT () : float
+ GetTauxTaxe () : float
+ GetPrixTTC () : float
+ GetTauxFrancs () : float
+ GetPrixTTCFrancs () : float
+ GetSesPaniers () : ensemble(PANIER)
+ CalculerPrixTTC () : void
+ CalculerPrixTTCFrancs () : void

+ SetPrixHT (prixHT : float) : void


- SetTauxTaxe (taux : float) : void

pr. LAASSIRI Jalal / Dept 68


Méthode - Associations et rôles
PRODUIT
PANIER
- Nom : string
- Description : string - /PrixTTC : float
- Poids : float - /Poids : float
- PrixHT : float - /PrixTTCFrancs : float
- TauxTaxe : float = 19,6
- /PrixTTC : float *
- TauxFrancs : float = 6,5559 SesProduits
- /PrixTTCFrancs : float

+ PRODUIT (nom : string, description :


string, poids : float, prixHT : float) : + PANIER (unProduit : PRODUIT) : PANIER
PRODUIT
+ GetPrixTTC () : float
+ GetNom () : string + GetPoids () : float
+ GetDescription () : string + GetPrixTTCFrancs () : float
+ GetPoids () : float + GetSesProduits () : ensemble(Produit)
+ GetPrixHT () : float
+ GetTauxTaxe () : float + CalculerPrixTTC () : void
+ GetPrixTTC () : float + CalculerPoids () : void
+ GetTauxFrancs () : float + CalculerPrixTTCFrancs () : void
+ GetPrixTTCFrancs () : float
+ AjouterAuPanier (unProduit : PRODUIT) :
+ CalculerPrixTTC () : void void
+ CalculerPrixTTCFrancs () : void + SupprimerDuPanier (unProduit :
PRODUIT) : void
+ SetPrixHT (prixHT : float) : void

pr. LAASSIRI Jalal / Dept 69


Méthode - Version "light"
PRODUIT
• Attributs
Nom
Description – Explicite : nom
Poids
PrixHT – Implicite :
TauxTaxe
/PrixTTC •Visibilité privée
TauxFrancs •Type, valeur par défaut
/PrixTTCFrancs
• Méthodes
+ SetPrixHT (prixHT : float) : void
– Explicite : méthodes spécifiques
– Implicite :
•Constructeur
•Accesseurs "GetToto" (1 par
attribut et rôle)
•Modifieurs privés "SetToto"
•Calcul des attributs dérivés

pr. LAASSIRI Jalal / Dept 70


Hiérarchies de classes

• Gérer la complexité
Arborescences de classes d’abstraction croissante
• Généralisation : Super-classes
• Spécialisation : Sous-classes

Classe plus
Super-classe générale

Classe plus
Sous-classe
spécialisée

pr. LAASSIRI Jalal / Dept 71


Généralisation

Factoriser les éléments communs


attributs, opérations et contraintes

Abstraction plus générales

Véhicule

Véhicule terrestre Véhicule aérien

Voiture Camion Avion Hélicoptère

pr. LAASSIRI Jalal / Dept 72


Spécialisation

Extension cohérente d'un ensemble de classes

Transmission

Continue Discrète

Variateur Dérailleur Boîte de vitesses

Extension par spécialisation

pr. LAASSIRI Jalal / Dept 73


Propriétés de la généralisation

Signifie toujours : est un ou est une sorte de

Animal

Carnivore Herbivore

Lion Mouton Lapin

pr. LAASSIRI Jalal / Dept 74


Propriétés de la généralisation

Non-réflexive, non-symétrique, transitive

A A

A
Impossible !!!
C

BC Impossible !!!

pr. LAASSIRI Jalal / Dept 75


Généralisation multiple

Animal

Station Protection
Nourriture
Bipède Quadrupède Herbivore Carnivore A plumes A poils A écailles

Lapin

pr. LAASSIRI Jalal / Dept 76


L’héritage

• Technique la plus utilisée pour réaliser la généralisation


• Construire une classe à partir d’une ou plusieurs autres classes, en partageant
des attributs, des opérations et parfois des contraintes, au sein d'une hiérarchie
de classes.

pr. LAASSIRI Jalal / Dept 77


Exemple

CompteBancaire
Généralisation Spécialisation
crédit : nombre
débit : nombre
déposer(nombre)
retirer(nombre)
donner-solde

CompteÉpargne
taux :nombre
calculer-intérêts

pr. LAASSIRI Jalal / Dept 78


Héritage Multiple (Exemple)

pr. LAASSIRI Jalal / Dept 79


Classe et Opération abstraites

• Classe qui ne peut avoir aucune instance directe ; on écrit son nom en italique

• Opération incomplète qui a besoin de sa classe fille pour fournir une


implémentation ; on écrit son nom en italique.

Forme

-Nom : string
+Calc-surface()
+Get-nom()

pr. LAASSIRI Jalal / Dept 80


Polymorphisme

Forme

-Nom : string
+Calc-surface()
+Get-nom()

Rectangle Cercle
-Longueur : real -Rayon : real
-Largeur : real
+Calc-surface()
+Calc-surface()
Opération
polymorphe

pr. LAASSIRI Jalal / Dept 81


Conclusion

• Les classes sont connectées par des relations


• L’association exprime une connexion sémantique
• L’agrégation est une forme d’association plus forte
• La généralisation permet d’ordonner les objets au sein de hiérarchies de classes

pr. LAASSIRI Jalal / Dept 82

Vous aimerez peut-être aussi