Académique Documents
Professionnel Documents
Culture Documents
Le langage UML
Plan du cours
II – L’approche Objet
V - Compléments :
- OCL,
- Correspondance UML – Java,
- UML vs Merise.
OMT
ROOM
HOOD
UML
etc...
2.0
Rational OMG UML 2005
Fin 1990 1.4
1995 UML 2003
OMT
(Rumbaugh et al.)
Unified Method 1.3
0.8 1996 UML Juin 1999
Booch
1.1
UML 0.9 Nov. 1997
OOSE
(Jacobson et al.)
II
L’approche Objet
Prix Marg
e
Constructeur
Voiture
♦ Exemples :
• un signal électrique : l’amplitude, la pulsation, la phase, …
• une voiture : la marque, la puissance, la couleur, le nombre de
places assises, …
• un étudiant : le nom, le prénom, la date de naissance, l'adresse,
…
♦ Le comportement
• décrit les actions et les réactions d’un objet
• regroupe toutes les compétences d’un objet
• se représente sous la forme d’opérations (méthodes)
♦ Tout objet possède une identité qui lui est propre et qui
le caractérise.
♦ Les objets
• ne vivent pas en ermites
• Les objets interagissent les uns avec les autres
• Les objets communiquent en échangeant des messages
♦ La classe
• est une description abstraite d’un ensemble d’objets
• peut être vue comme la factorisation des éléments communs à
un ensemble d’objets
• c’est un modèle d’objets ayant les mêmes types de propriétés et
de comportements. Chaque instance d’une classe possède ses
propres valeurs pour chaque attribut.
III
diagram
Structure Behavior
diagram diagram
U2
Class Package Activity Interaction
diagram diagram diagram diagram
Component Deployment State Machine
Sequence
diagram diagram diagram
diagram
Composite Object Use Case
Structure diagram diagram diagram Communication
diagram
U2
Interaction
overview diagram
U2
Timing
U2 Nouveaux diagrammes UML2 diagram
Diagramme de Test
séquences
Diagramme de d’ Mise en
états service
IV
Le diagramme de classes
♦ Exemples :
• Niveau de détail d’analyse
° simplifié
– Uniquement le nom de la classe
° intermédiaire NomClasse
– Nom de la classe
– Nom des attributs, ou des opérations NomClasse
° complet NomClasse attribut1
– Nom de la classe attribut1 attribut2
– Noms des attributs attribut2 attribut3
…
– Noms des méthodes attribut3
…
Opération1
Opération2
…
Nom de classe
Attributs
Opérations( )
♦ Attribut
<visibilité> <nomAttribut> : <type> = <valeur par défaut>
♦ Opération
<visibilité> <nomOpération> (listeParamètres) : <typeRetour>
♦ Paramètres
<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, currency, date, time, void
• Au niveau analyse, pas d’attribut instance d’un 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 ()
♦ 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 ()
♦ L’association
♦ L’agrégation
♦ La composition
♦ La généralisation
♦ La dépendance
Université Étudiant
♦ Représentation au niveau
Salle
de l’association
d’une classe
+ contrainte qui exprime Cours
Début
que les multiples Fin
branches de l’association
s’instancient Salle
simultanément en un
même lien << assoc. Ternaire>>
NomAssoc
Classe1 → Classe2
Emploie
Société Personne
→
Rôle1
Classe1 Classe2
Rôle2
Société Employeur
Personne Parent
Employé
Personne
Directeur
Société Personne Enfant
Employé
Modélisation Objet, le langage UML Philippe Declercq (46)
Multiplicité
Rôle1 m2
Classe1 m1 Rôle2 Classe2
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
SonEmployeur *
Société 1 Personne
SesEmployés
Catalogue
Une restriction (ou Catalogue
association (association
qualifiée) Partant d'un catalogue, connaissant un
"numeroID", je ne peux trouver qu’au plus
un Document. La multiplicité est réduite à
1 mais un catalogue contient toujours
plusieurs document.
Moyenne
♦ Agrégation
♦ Composition
Classe 1 Classe 2
♦ Exemple :
Une instance d’utilisateur peut accéder à des instances
de Mot de passe, mais pas l’inverse.
détenteur *
Utilisateur 1 clef Mot de passe
PRODUIT ♦ Constructeur(s)
♦ Accesseurs (1 pour
- Nom : string
- Description : string
- Poids : float
- PrixHT : float
- TauxTaxe : float = 19,6
- /PrixTTC : float
chaque attribut)
♦ Calcul des attributs
- TauxFrancs : float = 6,55957
- /PrixTTCFrancs : float
+ GetNom () : string
+ GetDescription () : string
+ GetPoids () : float
+ GetPrixHT () : float
+ GetTauxTaxe () : float
+ GetPrixTTC () : float
+ GetTauxFrancs () : float
+ GetPrixTTCFrancs () : float
+ GetSesPaniers () : ensemble(PANIER)
+ CalculerPrixTTC () : void
+ CalculerPrixTTCFrancs () : void
♦ Autres méthodes
- TauxFrancs : float = 6,5559
- /PrixTTCFrancs : float
PRODUIT PANIE
- Nom : string - /PrixTTC : float R
- Description : string - /Poids : float
- Poids : float - /PrixTTCFrancs : float
- PrixHT : float
- TauxTaxe : float = 19,6 *
- /PrixTTC : float SesProduits
- TauxFrancs : float = 6,5559
- /PrixTTCFrancs : float + PANIER (unProduit : PRODUIT) : PANIER
+ CalculerPrixTTC () : void
+ CalculerPrixTTCFrancs () : void
PRODUIT ♦ Attributs
Nom
Description
• Explicite : nom
Poids
PrixHT
• Implicite
TauxTaxe
/PrixTTC
° Visibilité (privée)
TauxFrancs
/PrixTTCFrancs
° Type, valeur par défaut
+ SetPrixHT (prixHT : float) : void ♦ Méthodes
• 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
♦ Diagramme de classe
• Une voiture :
° Quatre roues, des pneus
° Un moteur,
° Un coffre,
° Des passagers….
Classe plus
Super-classe générale Mammifère
Véhicule
Continue Discrète
Animal
Carnivore Herbivore
A A
A
Impossible
!!!
C
B Impossible !!!
Animal
Lapin
Généralisation Spécialisation
CompteBancaire
crédit : nombre
débit : nombre
déposer(nombre)
retirer(nombre)
donnerSolde()
CompteÉpargne
taux : nombre
calculerIntérêts()
Le diagramme d’objets
bouton3:Rectangl
• Instances avec valeurs d’attributs e
Nom : string=“bouton-poussoir”
Longueur : real=13.5
Largeur :
real=3.2
Pierre :
Un lien Étudiant
Évry :
Université Un lien
Jean-Jacques :
Étudiant
Rennes :
Un lien
Université
Pascal :
Étudiant
enseigne
Enseignant Matière
* 1..*
Dupont:Enseignant
Génie-Logiciel:Matière
Aiguier:Enseignant Réseaux:Matière
Système:Matière
Petit : Enseignant
♦ Notation :
Client
Association
« participe à »
Le diagramme de séquence
Le diagramme de communication
Objets
Temps
Ligne de vie
d’un objet
Barre d’activité :
message l’objet est actif, il
flèche retour
effectue quelque chose
Modélisation Objet, le langage UML Philippe Declercq (102)
Messages imbriqués
message synchrone
message asynchrone
Création
Suppression
Message réflexif
♦ Exemple :
♦ Description du système :
• Reprendre l’énoncé de l’exercice sur les cas d’utilisation
(planche 82).
♦ Objectif :
• Réaliser un diagramme de classes pour le système CBM,
• Réaliser un diagramme de séquence objet lorsque qu’un
utilisateur demande les détails de toutes les commandes d’une
librairie donnée.
saLibrairie
COMMANDE LIBRAIRIE
numéro
1 nom
date adresse
getDate() solvabilité
isSolvable ()
sesLdC
*
LIGNE DE COMMANDE
quantité
1
sonLivre
LIVRE EDITEUR
ISBN sesLivres nom
titre * adresse
getLivre (titre) : LIVRE
getDétailCommandes()
getSesCommandes()
sesCommandes
getDétailCommande()
getDate()
date
Pour chaque getSesLignes()
commande
sesLdC
getDétailLigne
() getLivre()
sonL
ivre
getTitre()
Pour chaque
ligne de com. titre
getQuantité()
sesCommandes saLibrairie
COMMANDE LIBRAIRIE
numéro
* 1
nom
date adresse
getDate() solvabilité
getSesLignes() isSolvable ()
getDetailCommande() getSesCommandes()
getDetailCommandes()
sesLdC
*
LIGNE DE COMMANDE
quantité
getDétailLigne()
getQuantité()
getLivre()
1
sonLivre
LIVRE EDITEUR
ISBN sesLivres nom
titre * adresse
getTitre() getLivre (titre) : LIVRE
getDétailCommandes()
getSesCommandes()
getDate()
date
getSesLignes()
Pour chaque
commande sesLdC
getQuantité()
quantité
getLivre()
Pour chaque ldc
de chaque com. sonLivre
getTitre()
titre
{date
+{titre,quantité}}
Le diagramme d’états
♦ Exemple :
Nom d'état
év-in[cond in]/action-in entry[cond entry]/action-entry
do/activité
év-1/action-1
év-out[cond out]/action-out …
év-n/action-n
exit[cond exit]/action-exit
év-i[cond y]/action-i
♦ En entrée
• Action sur la transition d'entrée
• Action d'entrée
• Activité associée à l'état
♦ En interne
• Interruption de l'activité en cours (contexte sauvé)
• Action interne
• Reprise de l'activité
♦ En sortie
• Interruption de l'activité en cours (contexte perdu)
• Action de sortie
• Action sur la transition de sortie
♦ Auto-transition
• Interruption de l'activité en cours (contexte perdu)
• Action de sortie
• Action sur l'auto-transition
• Action d'entrée
• Activité associée à l'état
event1 / action1
Nom de l'état Nom de l'état
Super-état
Sous-état
Le diagramme d’activités
♦ Utilisation :
• Décrire un processus métier,
• Décrire un cas d’utilisation,
• Décrire un algorithme ou une méthode.
décision
bifurcation
♦ Exemple :
Signal reçu
Signal émis
Le diagramme de paquetages
♦ Exemples :
• Mauvais !
• Beaucoup mieux !
Le diagramme de composants
♦ Notation : ou
Interface requise
Interface requise
(flèche de dépendance)
Le diagramme de déploiement
♦ Notation : ou
♦ Exemples :
• nœuds matériels : serveur, PC de bureau, disque dur
• nœuds logiciels : système d’exploitation, serveur web
♦ Notation :
Chemin de communication
avec type de
communication
♦ Notation : ou
♦ Exemples :
• fichiers exécutables (.exe, .jar),
• fichiers de bibliothèque (.dll),
• fichiers source (.java),
• fichiers de configuration (.xml, .properties).
Modélisation Objet, le langage UML Philippe Declercq (170)
Artefacts, nœuds et composants
Compléments
OCL
♦ UML :
♦ UML :
♦ UML :
♦ UML :
}
abstract public class Animal {
…
public Personne proprietaire;
}
♦ UML :
♦ Java :
public class Emploi {
private string fonction;
private Personne employe;
private Entreprise employeur;
}
♦ UML :
UML vs MERISE