Académique Documents
Professionnel Documents
Culture Documents
- Diagramme de classes -
• 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é).
• 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
…
•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
…
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>
+ Attribut publique
# Attribut protégé
- Attribut privé
+ Opération publique
# Opération protégée
- Opération privée
• 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)
Voiture
- Marque : string
- Modèle : string
- Turbo : boolean = false
+ Démarrer ()
+ Rouler ()
+ Freiner ()
Voiture
- Marque : string
- Modèle : string
- Turbo : boolean = false
- NbRoues : int = 4
- NbInstances = 0
+ Démarrer ()
+ Rouler ()
+ Freiner ()
+ IncrémenterNbInstances ()
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 ()
UML 48
pr. LAASSIRI Jalal / Dept 48
Les relations entre classes
• L’association
• L’agrégation
• La généralisation
Classe1 Classe2
Université Étudiant
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
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
NomAssoc >
Classe1 Classe2
Emploie >
Société Personne
• 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é
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é
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
*
Société SonEmployeur
1 SesEmployés Personne
Classe A Classe B
Clé
• Exemple :
* Case
Échiquier
Ligne 1 Case
Échiquier
Colonne
SesÉtudiants *
Étudiant * SesMatières
Matière
Moyenne
• Représentation simplifiée
• Agrégation
CoPropriétaire 0..*
Personne ◇ 1..* Immeuble
Immeuble
• Composition
Voiture
◆
1
Moteur Voiture Moteur
◆
* 1
Cylindre Carburateur
◇ ◇
• 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
+ GetNom () : string
+ GetDescription () : string
+ GetPoids () : float
+ GetPrixHT () : float
+ GetTauxTaxe () : float
+ GetPrixTTC () : float
+ GetTauxFrancs () : float
+ GetPrixTTCFrancs () : float
+ GetSesPaniers () : ensemble(PANIER)
+ CalculerPrixTTC () : void
+ CalculerPrixTTCFrancs () : void
• 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
Véhicule
Transmission
Continue Discrète
Animal
Carnivore Herbivore
A A
A
Impossible !!!
C
BC Impossible !!!
Animal
Station Protection
Nourriture
Bipède Quadrupède Herbivore Carnivore A plumes A poils A écailles
Lapin
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
• Classe qui ne peut avoir aucune instance directe ; on écrit son nom en italique
Forme
-Nom : string
+Calc-surface()
+Get-nom()
Forme
-Nom : string
+Calc-surface()
+Get-nom()
Rectangle Cercle
-Longueur : real -Rayon : real
-Largeur : real
+Calc-surface()
+Calc-surface()
Opération
polymorphe