Académique Documents
Professionnel Documents
Culture Documents
2
La notation UML
3
Histoire d’UML
● 1994: UML 0.1
○ unification des méthodes existantes
○ consensus entre Rumbaugh, Booch and Jacobson
● 1995: UML 1.0
○ normalisation par l’OMG
● 2005: UML 2.0
○ adoption par l’OMG
○ inclusion d’OCL
● 2013: UML 2.5
○ le travail continue 4
Diagrammes UML
Diagrammes structurels (statiques)
● diagramme de classes
● diagramme d'objets
● diagramme de composants
● diagramme de déploiement
● diagramme de paquetages
● diagramme de structures composites
7
Diagramme de classes UML
Représente le modèle conceptuel du domaine
d’application du système.
● concepts (classes) que le système utilise
● liens (associations) entre ces concepts
Aide à
● comprendre le problème
● identifier concepts et leurs relations
● communiquer
8
Classes et objets
Une classe décrit les propriétés et le
comportement d’un ensemble d’objets.
Un objet est une instance d’une classe
● dotée d’une identité
● d’un état (attributs)
● d’un comportement (méthodes)
NomClasse
attribut1: Type1
attribut2: Type2
methode1(): Type1
methode2(Type1): void
class Etudiant {
Étudiant
String nom;
nom: String String codePerm;
codePerm: String
11
Représentation graphique des attributs
NomClasse
attribut1: Type1
attribut2: Type2
methode1(): Type1
methode2(Type1): void
class Etudiant {
Étudiant
String nom;
nom: String String codePerm;
codePerm: String
NomClasse
attribut1: Type1
attribut2: Type2
methode1(): Type1
methode2(Type1): void
class Etudiant {
Étudiant
String nom;
nom: String String codePerm;
codePerm: String
Intérêts de l’encapsulation
● Cacher les détails d’implémentation
● Protéger l’intégrité des données
15
Visibilité en UML
Visibilités
● public +
○ accessible par tous
● protected #
○ accessible dans la classe ou ses sous-classes
● private -
○ accessible seulement dans la classe
● package ~ (ou rien)
○ accessible dans tout le package
16
Représentation graphique de la visibilité
17
Association
Lien entre les classes dans le problème
● association entre deux classes (association binaire)
● ou plus (association n-aire)
Étudiant
Université
nom: String étudiants étudie_à université
codePerm: String nom: String
* 1
nbEtudiants(): Int
payer(Facture): void
Étudiant
Université
nom: String
codePerm: String nom: String
Flèche implicite
université: Université étudiants: List<Étudiant>
19
Implémentation de l’association
Étudiant
Université
nom: String
codePerm: String nom: String
université: Université étudiants: List<Étudiant>
● relation unidirectionnelle
○ à sens unique
étudie_à université
Étudiant Université
1
21
Association réflexive
Classe associée à elle-même:
est_dans
Répertoire Fichier
22
Association n-aire
Pour lier plus que deux classes
Professeur
nom: String
matricule: String
Étudiant Salle
nom: String code: String
codePerm: String * 1
Cours
23
Une implémentation de l’association n-aire
24
Classe d’association
Quand une association doit posséder des propriétés
Résultat
session: String
note: Float
Étudiant Cours
nom: String a_suivi cours sigle: String
codePerm: String * titre: String
25
Implémentation d’une classe d’association
class Resultat {
String session;
Float note;
}
class Resultat {
String session;
Float note;
}
class Resultat {
String session;
Float note;
Cours cours;
}
Tournoi
date: Date se_déroule_dans
récompense: Int
1
*
participe_à
Participation
rang: Int
affronte
*
* *
Joueur Équipe Match
32
Représentation graphique de l’héritage
<<abstract>>
Animal
respirer()
manger()
Vache Canard
meugler() cancaner()
produireLait() voler()
33
Implémentation de l’héritage
34
Exercice
Écrire un diagramme de classes
● Une compétition regroupe plusieurs participants.
● Tous les participants ont un identifiant unique.
● Il y a deux types de participants: juniors et seniors.
● Les juniors ont une date de fin d’étude prévue.
● Les seniors ont un nombre d’années d’expérience.
● Il y a deux types de compétitions: informatique ou sportive.
● Une compétition d’informatique peut nécessiter un laptop.
● Toutes les compétitions rapportent des points.
● Une compétition de sport rapporte un bonus de points.
35
Solution
<<abstract>> <<abstract>>
Participant Compétition
participe_à
id: String points: Int
* *
36
Interface
Contrainte d’interface
● ensemble de propriétés publiques
● doit être respectée par toute classe
implémentant l’interface
● fournit un super-type commun à plusieurs
concepts
37
Représentation graphique d’une interface
<<interface>>
Véhicule
rouler()
freiner()
<<implémente>> <<conduit>>
Voiture Personne
conduire(Véhicule)
38
Implémentation de l’héritage
@Override
void freiner() {}
}
39
Exercice
Écrire un diagramme de classes
● Les bénévoles et les participants possèdent tous un
badge.
● Un badge possède un identifiant unique.
● Seules les personnes avec un badge peuvent entrer dans
les salles de compétition.
40
Solution
<<interface>>
PersonneBadge Salle
<<accepte>>
getId(): String
entrer(PersonneBadge)
e>>
<<i
ent
mp
lém
lém
mp
ent
<<i
e>>
Participant Bénévole
41
Conclusion
UML - Diagramme de classes
● pour modéliser le domaine d’application
d’un système
○ concepts (classes)
○ liens entre ces concepts (relations)
■ association, agrégation / composition, spécialisation
42
UML - Diagramme
d’objets
43
Diagramme d’objets UML
Représente un instantané de l’état du système.
● objets:instances de classes
● liens: instances de relations entre classes
Aide à
● illustrer un diagramme de classes
● montrer l’état d’un système à un instant t
● expliquer les cas particuliers ou
complexes
44
Diagramme d’objets
Diagramme de classes
ChargéDeCours Cours
enseigne
nom: String sigle: String
1 *
Diagramme d’objets
inf3143:Cours
enseigne sigle=”INF3143”
alex:ChargéDeCours
nom=”Alex”
inf2170:Cours
enseigne sigle=”INF2170”
45
Relation de dépendance d’instanciation
enseigne
ChargéDeCours Cours
* 1
alex:ChargéDeCours inf3143:Cours
enseigne
46
Autre exemple (diagramme de classes)
Séance
salle: String
ChargéDeCours Cours
nom: String sigle: String
1 *
47
Autre exemple (diagramme d’objets)
:Séance
salle=”SB-M210”
inf3143:Cours
sigle=”INF3143”
alex:ChargéDeCours
nom=”Alex”
inf2170:Cours
sigle=”INF2170”
:Séance
salle=”PK-4610”
48
Exercice
e1.emprunts.add(l1)
e1.emprunts.add(l3)
e2.emprunts.add(l2)
49
Solution (diagramme de classes)
50
Solution (diagramme d’objets)
titre=”titre3” secteur=”Histoire”
e1:Etudiant
code=”ABDC1234”
l1:Livre
titre=”titre1”
b1: Bibliotheque
secteur=”Sciences”
e2:Etudiant l2:Livre
code=”DCBA4321” titre=”titre2”
51
Conclusion
UML - Diagramme d’objets
● pour modéliser un état
○ objets: instances de classes
○ liens: instances de relations
Diagramme de classes
● exprime les règles
Diagramme d’objets
● exprime les faits
52
Ressources
● Miles, R. and Hamilton, K - Learning UML 2.0
- O’Reilly Media, 2006 (chap 1.1, 1.5, 4, 5)
● Pilone, D and Pitman, N - UML 2.0 in a
Nutshell - O’Reilly Media, 2005 (chap 1, 2)
● www.uml.org
● laurent-audibert.developpez.com/Cours-UML/
53