Académique Documents
Professionnel Documents
Culture Documents
Et3 4operations PDF
Et3 4operations PDF
UML
Cours 4
Diagrammes de classes (suite)
Delphine Longuet
delphine.longuet@lri.fr
http://www.lri.fr/~longuet/Enseignements/16-17/Et3-UML
Opérations
Opérations
●
Service qui peut être demandé à tout objet de la classe
●
Comportement commun à tous les objets de la classe
Client Compte
nom : string numéro : int
propriétaire comptes
prénom : string devise : Devise
1..2 possède 1..*
naissance : Date solde : float
ouvrirCompte(init : float) déposer(montant : float)
devenirProprio(c : Compte) retirer(montant : float)
solde() : float
D. Longuet - UML 2
Opérations
Effets possibles d'une opération
●
Renvoyer le résultat d'un calcul
MonLivretA : Compte
numéro = 123456
solde()
devise = EUR
solde = 3509,43 3509,43
déposer(montant : float)
retirer(montant : float)
solde() : float
D. Longuet - UML 3
Opérations
Effets possibles d'une opération
●
Renvoyer le résultat d'un calcul
●
Modifier l'état du système
- modification de la valeur des attributs
D. Longuet - UML 4
Opérations
Effets possibles d'une opération
●
Renvoyer le résultat d'un calcul
●
Modifier l'état du système
- modification de la valeur des attributs
- ajout/suppressions de liens entre objets
D. Longuet - UML 5
Opérations
Effets possibles d'une opération
●
Renvoyer le résultat d'un calcul
●
Modifier l'état du système
- modification de la valeur des attributs
- ajout/suppressions de liens entre objets
- création/destruction d'objets
D. Longuet - UML 6
Exercice : bibliothèque
Donner les diagrammes d'objets :GBU
Jean:Bibliothécaire
correspondant aux états numérotés
enregistrer("Dupont",10)
du scénario concret.
OK
emprunter("Dupont","Misérables","Hugo") ①
GBU
(1234,1,2,1)
Enregistrer
crediter("Dupont",20) ②
un utilisateur
25
Augmenter
emprunter("Dupont","Necronomicon","al-Hazred") ③
une caution
(456,1,2,1)
Bibliothécaire Enregistrer
restituer(456) ④
un emprunt
Horloge (1,2,1)
Restituer un
⑤
exemplaire
Opérations :
Vérifier les
●
enregistrer(nom,caution)
emprunts
●
créditer(nom,montant) : caution
●
emprunter(nom,titre,auteur) : (code,travée,étagère,niveau)
●
restituer(code) : (travée,étagère,niveau)
D. Longuet - UML 7
Héritage d'opération
Opération commune aux sous-classes :
●
Définition dans la super-classe
CompteCourant CompteÉpargne
découvertAutorisé : float plafond : float
frais : float taux : float
calculerIntérêts() : float
D. Longuet - UML 8
Redéfinition d'opération
Opération commune aux sous-classes :
●
Définition dans la super-classe
●
Possibilité de redéfinition locale de l'opération dans une
sous-classe pour étendre le comportement de l'opération
Compte opération commune
numéro : int
à tous les comptes
devise : Devise
solde : float
retirer(montant : float) déposer(montant : float)
{if(soldemontant >= 0) retirer(montant : float)
then solde := soldemontant retirer(montant : float)
else solde := soldemontantfrais} solde() : float {if(soldemontant >= 0)
then solde := soldemontant}
CompteCourant CompteÉpargne
découvertAutorisé : float
redéfinition plafond : float
frais : float taux : float
retirer(montant : float) calculerIntérêts() : float
D. Longuet - UML 9
Classe abstraite
Classe sans instance car certaines opérations non définies
●
Opération non définie en italique
●
Nom de la classe en italique (ou stéréotype « abstract »)
Forme
opération non définie
nom : string
(abstraite) surface() : float
D. Longuet - UML 10
Polymorphisme
Contexte : Définition d'une opération abstraite dans les classes
héritant d'une classe abstraite
Forme
nom : string
surface() : float
surface = longueur*largeur surface = pi*rayon*rayon
« interface »
Point Comparable Date
abscisse : float égal(Object o) : boolean jour : int
ordonnée : float supérieur(Object o) : boolean mois : int
année : int
égal(Object o) : boolean
supérieur(Object o) : boolean égal(Object o) : boolean
supérieur(Object o) : boolean
diff(Date d) : int
classes réalisant String
l'interface content : string
égal(Object o) : boolean
supérieur(Object o) : boolean
print()
D. Longuet - UML 12
Exemple : échecs
Donner un diagramme de classes modélisant un jeu d'échecs simplifié
(plateau + pièces).
D. Longuet - UML 13
Exemple : échecs
Plateau 1 64 Case
x : int
y : int
0..1
D. Longuet - UML 14
Notations avancées
Attributs et opérations de classes
●
Attribut de classe : valeur commune à toutes les instances
●
Opération de classe : opération sur la classe elle-même
(pas besoin d'une instance pour être appelée)
●
Soulignés dans la classe
●
(static en Java)
Article
- référence : int
- prixHT : float
- nbInstances : int
+ calculerPrixTTC(taxe : float) : float
+ compterInstances() : int
D. Longuet - UML 15
Notations avancées
Visibilité
+ : public, accessible à toutes les classes
# : protégé, accessible uniquement aux sous-classes
- : privé, inaccessible à tout objet hors de la classe
Pas de visibilité par défaut
Vecteur
- début : Point
- /fin : Point
- longueur : float
- angle : float
# ajouter(v : Vecteur) : Vecteur
+ déplace(p : Point)
D. Longuet - UML 16
Attribut dérivé
Peut être calculé à tout moment à partir d'autres informations du
système
●
Notation : /attribut
●
Peut nécessiter des informations de plusieurs classes
Vecteur
- début : Point
- /fin : Point
attribut dérivé - longueur : float
- angle : float fin =
(longueur*cos(angle),
# ajouter(v : Vecteur) : Vecteur longueur*sin(angle))
+ déplace(p : Point)
D. Longuet - UML 17
Association dérivée
Redondance d'une association : Association n'apportant pas
d'information supplémentaire, se demander si nécessaire
Compte
1 1..* 1..* 1 Client
Banque numéro : int
nom : string
nom : string banque comptes devise : Devise comptes propriétaire
naissance : Date
solde : float
1..* banques 1..* clients
ClientsBanque
D. Longuet - UML 18
Association dérivée
Redondance d'une association : Association n'apportant pas
d'information supplémentaire, se demander si nécessaire
Si nécessaire, la faire apparaître comme association dérivée
Compte
1 1..* 1..* 1 Client
Banque numéro : int
nom : string
nom : string banque comptes devise : Devise comptes propriétaire
naissance : Date
solde : float
1..* banques 1..* clients
/ClientsBanque
association dérivée
D. Longuet - UML 19
Limites du diagramme de classes
Diagramme de classes représente la structure du système en termes
d'objets et de relations entre ces objets
D. Longuet - UML 20
Contraintes, invariants
Propriétés :
●
Portant sur les éléments du modèle
●
Doivent être vérifiées à tout instant
●
En général, restriction sur les diagrammes d'objets possibles à
partir du diagramme de classes
●
Héritage des contraintes de la super-classe vers les sous-classes
D. Longuet - UML 21
Contraintes sur les attributs
dans le diagramme
dans un document annexe
D. Longuet - UML 22
Contraintes associées à la multiplicité
Compte Personne 2 parents
numero : int * 1..* nom : string Personne
devise : Devise prenom : string nom : string enfants
solde : float naissance : Date prenom : string *{ordered}
naissance : Date
Par défaut : ensemble non ordonné
ensemble
ordonné
D. Longuet - UML 23
Contraintes sur les associations
Salle
1 1..* Place
nom : string
numéro : int
capacité : int
P1:Place
numéro = 1
Olympia:Salle
nom = Olympia P2:Place
capacité = 2000 numéro = 2
P3:Place
numéro = 3
D. Longuet - UML 24
Contraintes sur les associations
Personne
subordonné nom : string 1..* 0..1 Entreprise
1..* prénom : string employés employeur nom : string
naissance : Date
0..1 chef
{pour toute Personne p, contrainte portant sur
p.employeur = p.chef.employeur} plusieurs associations
PierreDupont : Personne
IBM:Entreprise
nom = "Dupont" employeur
prénom = "Pierre" nom = "IBM"
naissance = 12/04/1988
AnneBérou : Personne
Microsoft:Entreprise
nom = "Bérou" employeur
chef prénom = "Anne" nom = "Microsoft"
naissance = 14/12/1965
D. Longuet - UML 25
Contraintes, invariants
{age = diff(naissance,today)}
Personne
* appartient * Groupe
nom : string
{subset} thème : string
naissance : Date
création : Date
/age : int {age ≥ 0} 1 administre *
1
●
L'âge est toujours positif
* {ordered} ●
L'âge est calculé comme la différence
ExpériencesPro entre la date de naissance et la date
entreprise : string d'aujourd'hui
entrée : Date ●
L'administrateur d'un groupe en est
sortie : Date membre
●
On a accès aux expériences
professionnelles dans l'ordre
de la date d'entrée
D. Longuet - UML 26