Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
: 2009/2010
ENSI – II2
a- Historique
Organisation du développement :
• Méthodes fonctionnelles et Systémiques
• SASD, SART, Jackson, …. / Années 60 → 90
• Apparitions de méthodes objets : 90
• Booch, OMT (Rumbaugh), OOSE (Jacobson)
Chap.3 : UML 2
UML 2.1
Qu’est qu’un modèle? 1. Le choix des modèles à créer a une forte influence
Un modèle est une simplification de la réalité sur la manière d’aborder un problème et sur la
Pourquoi modéliser? nature de sa solution.
Les modèles permettent de mieux comprendre le système 2. Tous les modèles peuvent avoir différents niveaux
que l’on développe de précision.
3. Les meilleurs modèles ne perdent pas le sens de
Nous construisons des modèles pour les systèmes la réalité.
complexes parce que nous ne sommes pas en mesure 4. Parce qu’aucun modèle n’est suffisant à lui seul, il
d’appréhender de tels systèmes dans leur intégralité. est préférable de décomposer un système
important en un ensemble de petits modèles
presque indépendants.
1
Chapitre 3 : UML & Approche objet A.U. : 2009/2010
ENSI – II2
Le modèle est important pour : ☺ Un modèle est une vue subjective mais pertinente de la réalité
• Comprendre un problème ☺ Un modèle définit une frontière entre la réalité et la perspective de l'observateur
• Supporter un travail coopératif d'ingénierie Ce n'est pas "la réalité", mais une vue très subjective de la réalité
• Prévoir et simuler la réalisation d'un développement
• Identifier et suivre les lots de travaux
• Guider, contrôler, automatiser la production
Et le logiciel?
• diagramme de classes
Chaque type de diagramme UML possède une structure (les types des
• diagramme d’objets éléments de modélisation qui le composent sont prédéfinis).
•…
Un type de diagramme UML véhicule une sémantique précise (un type de
diagramme offre toujours la même vue d'un système).
Dynamique
(comment le système Fonctionnel Combinés, les différents types de diagrammes UML offrent une vue
EVOLUE) (ce que le système FAIT) complète des aspects statiques et dynamiques d'un système.
• diagramme de collaboration
• diagramme de cas d’utilisation Plusieurs vues pour un même type de diagramme
• diagramme d’états-transitions
•… •…
De quoi parle-t-on ? Comment ‘logique’ ? Comment ‘physique’ ? UML propose des notations et des diagrammes
• Diagramme de classes (description au niveau modélisation, cas général)
Analyse Conception Code • Diagramme d’objets (description au niveau instance, exemples)
2
Chapitre 3 : UML & Approche objet A.U. : 2009/2010
ENSI – II2
Par défaut, les attributs sont cachés et les opérations sont visibles
13 Chap.3 : UML 14
3
Chapitre 3 : UML & Approche objet A.U. : 2009/2010
ENSI – II2
EstEnfantDe
EstGardePar
Souha : Personne Hédi : Personne
OK
EstEnfantDe
Chacun des deux objets joue un rôle diffèrent dans le lien utilisations différentes selon le contexte
APourCompte
R Salah : Client c1 : Compte
APourCompte a b titulaire compte
Salah : Client c1 : Compte g f
titulaire compte
M1
Cl i e n t Co m p te
a l i : Cl i en t c 1 : Co mp te
APourCompte
Client Compte de classes objets s a l a h : Cl e
i nt
APo u rCo m pte>
c 2 : Co mp te
titulaire compte
(modélisation) Un lien est une instance d’association s a n a : Cl i ent c 3 : Co mp te
4
Chapitre 3 : UML & Approche objet A.U. : 2009/2010
ENSI – II2
EstGéréPar
Compte Banque
comptesGérés banqueGérante Nommer en priorité les rôles
Chap.3 : UML 25 Chap.3 : UML 26
EstAcceptéPar>
: Distributeur
: CarteBleue
Compte Banque
signataire
1 M0
Consortium ali : Client
titulaires
c1 : Compte : Banque
CarteBleue
0..* * 1 titulaires
salah : Client c2 : Compte
: Consortium
Code
retraitMax EstAcceptéPar> 0..*
Distributeur sana : Client
titulaires
c3 : Compte : Banque
1..*
signataire
: CarteBleue
EstAcceptéPar>
sophie : Client : Distributeur
EstAcceptéPar>
5
Chapitre 3 : UML & Approche objet A.U. : 2009/2010
ENSI – II2
Compte
. . .
Cl i e n t * * *
n u m é ro
Banque
s olde
... n u m é ro
nom
ti tu l a i res
Co n s o rti um
0
.
.
*
Client numéro
numéro
titulaires
• solde
Ca rte Bl e ue
nom
défini l’ensemble de tous les états possibles
0 *
.
. 1
*
Co d e
re tra i tM ax
...
Es tAc c ep té Pa r> 0
.
.
1 signataire 0..*
•
Di s tri b u teur *
1
Consortium
CarteBleue
0..* * 1
Un diagramme d’objets s
i
g
n
a
t ali :
a
Cl i ent
t
:
Ca rte
Bl e ue
c1 :
Co mp
te
:
B
Code
•
i i a
r t n
e u q
retraitMax
l u
EstAcceptéPar> 0..*
a e
M1
s al ah te c2 :
: :
us Co m
Co ns
Cl i ent l p te
o rti u
a m
Distributeur
i
r
e
ts
i
sana : t c3 : :
Cl i ent u Co mp
l te B
a a
s i n
•
i r q
e :
1..*
g Ca rte u
n s e
Bl e ue
a Es tA
t c cept
a é Par
M0
q u e
u l
e a
i
rt
c2 : ei s al ah
: Co m st :
Co ns p te u Cl i ent
o rti u l
m a
i
r
e
ts
i
: c3 : t sana :
Co mp u Cl i ent
B te l
a a
n i > >
s
q r i : :
: e
u Ca rte g >
e s n
Bl e ue : :
a :
Es tA t
c cept
é Par a :
: i s o phi
Distri > e :
r
b uteu e Cl i ent
r Es tA
: Cl i e n t : : : Co n s o rti um
: :
...
:
: Co m p te
:
Ba nq
ue
: Co n s o rti um
: Cl i e n t
t
i
t
u
l
a
i
r
e
s
: Co m p te
: Co m p te
:
Ba nq
ue
: Co n s o rti um
t
i
t
u
l
a
i
r
e
s
: Co m p te
: Co m p te
:
Ba nq
ue
: Co n s o rti um
•
r
e
s
t t t
: Cl i e n t : Di s tri b uteu r
> >
>
t1 t2 t3
Chap.3 : UML 33 Chap.3 : UML 34
Rappel
3.4 Navigation
Algorithme Algorithme
Objets du du monde réel du logiciel
scénario) Objets du (scénario) Objets du Association unidirectionnelle
monde
logiciel langage On ne peut naviguer que dans un sens
réel
6
Chapitre 3 : UML & Approche objet A.U. : 2009/2010
ENSI – II2
Composition Composition
Composition Composition
1 1..* 1..*
Contraintes liées à la composition : Chapitre Section
1. Un objet composant ne peut être que dans 1 seul objet composite Document
0..1
2. Un objet composant n’existe pas sans son objet composite 0..1
0..*
3. Si un objet composite est détruit, ses composants aussi Figure
M1
1..*
1..* 1..*
Section M0 : section
Chapitre
Document : chapitre
0..* : section Contrainte :
Figure
: figure le graphe d'objets
: document forme un arbre
: chapitre : section (ou une forêt)
0..1
: figure
Chap.3 : UML 41 Chap.3 : UML 42
Composition Composition
c1 : Cercle
M0 M0
: Polygone rayon = 5
: : : :
Point
x=0 Point
x=0 Point
x = 10 Point
x = 10
y = 10 y=0 y=0 y=0
7
Chapitre 3 : UML & Approche objet A.U. : 2009/2010
ENSI – II2
employés sociétés
Emploi
M1 salaire
Personne 0..2 Société
* augmenter()
M0 e1
salaire
salaire==1500
1500
Emploi
salaire xerox
Le salaire est une information correspondant
augmenter() e2 • ni à une personne,
employé
salaire = 5000
employé
• ni à une société,
Le nom de la classe correspond au nom de l’association Mark ST mais à un emploi (un couple personne-société).
(problème: il faut choisir entre forme nominale et forme verbale) e3
salaire = 1000
sana employé
Classes associatives
Classes associatives
RAPPEL: Pour une association donnée, un couple d'objets ne peut être employé sociétés
connectés que par un seul lien correspondant à cette association. Personne 0..2 Société
(sauf si l'association est décorée par {nonunique} en UML2.0) *
Emploi e1
Emploi>
salaire p1 s1
p1 Emploi> s1
Ci-dessus, une personne peut avoir deux emplois, mais pas dans la même société
Cette contrainte reste vraie dans le cas où l’association est décrite à partir
d ’une classe associative.
e1
: Emploi p1 s1
salaire = 1500 e2
C Emploi
Transformation
systèmatique
pour revenir aux
concepts de base
8
Chapitre 3 : UML & Approche objet A.U. : 2009/2010
ENSI – II2
M0 v1 M0 p1
compteDébité compteCrédité Peut-on avoir plusieurs joueur match Un joueur peut il avoir
Situation virements entre deux Situation ali plusieurs participations à un
c1 c2 finale
possible ? comptes ? possible ? match donné ?
compteDébité compteCrédité joueur match
v2 p2
Chap.3 : UML 51 Chap.3 : UML 52
Exemple 3 Exemple 4
CarteGrise Veuvage Veuvage
dateDélivrance
date date
Personne
propriétaires voitures
Voiture
montantAssurance Ou ? montantAssurance
* {nonunique}
{non unique} * conjointLaisséVeuf
* 0..1
0..1
conjointLaisséVeuf 1 1 conjointDécédé
propriétaire CarteGrise voiture
* *
Personne Voiture Personne *
1 carteGrises dateDélivrance carteGrises 1 conjointsDécédés Personne
M0 cg1 M0 v1
propriétaires voitures conjointLaisséVeuf conjointsDécédés Peut on toucher deux
Situation ali la106 Situation ali sana fois l'assurance ?
possible ? possible ?
propriétaires voitures conjointLaisséVeuf conjointsDécédés
cg2 v2
Chap.3 : UML 53 Chap.3 : UML 54
Les classes associatives sont des associations mais aussi des classes.
Elles ont donc les mêmes propriétés et peuvent par exemple être liées par des Généralisation des classes associatives binaires : Une association peut
associations. relier une, deux ou plusieurs classes
employé société
9
Chapitre 3 : UML & Approche objet A.U. : 2009/2010
ENSI – II2
Un qualifieur est un attribut (ou un ensemble d'attributs) dont la valeur sert à * membres * <<enumeration>>
Titre
déterminer l'ensemble des instances associées à une instance via une Personne
association. Association1901
Secretaire
titre:Titre President
* 0..1 Tresorier
membres
"Pour un répertoire, à un nom donné on associe qu'un fichier sylvia
Tresorier
(ou 0 s'il existe aucun fichier de ce nom dans ce répertoire)." ass1
President ahmed
Correspond à la notion intuitive d'index absente ci-dessous
Secretaire Taha
President
Repertoire Fichier ass2
*
Chap.3 : UML 57 Chap.3 : UML 58
nl : NumLigne r2 nom="f" f2
Echiquier Case r2
nc : NumCol 1 1
0 comme cardinalité minimale, sauf si le domaine de l'attribut qualifieur est fini et Exemple liens "hard" en Unix: un fichier peut correspondre à des noms
toutes les valeurs ont une image. différents dans des répertoires différents
Chap.3 : UML 59 Chap.3 : UML 60
10
Chapitre 3 : UML & Approche objet A.U. : 2009/2010
ENSI – II2
CompteEpargne calculIntérêts ()
appartient également à la c4 o4
o2
o2 o3
super-classe ce1 o2
ce3 o5
c4 c2
ce2
c1 Objet Lien Inclusion
ensembliste
Compte CompteEpargne
Chap.3 : UML 68 Chap.3 : UML 69
11
Chapitre 3 : UML & Approche objet A.U. : 2009/2010
ENSI – II2
Structure Enumération
• Définition : Ensemble d’attributs pouvant être regroupé. • Définition : Ensemble de littéraux d’énumération, ordonné.
Société Association_ENSI
12
Chapitre 3 : UML & Approche objet A.U. : 2009/2010
ENSI – II2
Pile Pile
Pile
T : Integer[1..100] T : Integer[1..100]
empiler(Integer) Indice : Integer = 0 Indice : Integer= 101
depiler()
sommet() : Integer
vide() : booleen
Axiomes :
0..1 succ
∀ P ∈ Pile, ∀ x ∈ int,
Pile
• vide(nouvelle()) = vrai <<structure>>
• vide(empiler(P,x)) = faux
Element
• sommet(empiler(P,x)) = x Tete : Element
info : Integer
• depiler(empiler(P,x)) = P
Interfaces Implémentation
Chap.3 : UML 76 Chap.3 : UML 77
Dépendances
Déclaration d'opérations
Une relation de dépendance entre une classe C1 (source) et une
[ visibilité ] nom [ ( params ) ] [ : type ] [ { props... } ] classe C2 (Cible) indique qu’une modification de C2 peut avoir
params := [ in | out| inout ] nom [ : type] [ =defaut ] [{ props... } ] une influence sur le fonctionnement de C1.
getAge()
+ getAge() : Integer
- updateAge( in date : Date ) : Boolean En général, une relation de dépendance résulte du fait qu’une classe C1 connaît
# getName() : String [0..1] l’existence d’une classe C2. A cet effet, UML propose plusieurs stéréotypes :
+getAge() : Integer {isQuery}
« call » : la source appelle une opération de la cible
+addProject() : { concurrency = sequential }
« create » : la source crée une instance de la cible
« permit » : le source est amie de la cible
+addProject() : { concurrency = concurrent }
« use » : la source a besoin de la cible pour être implémentée
+main( in args : String [*] {ordered} )
Adapter le niveau de détail au niveau d'abstraction Remarques :
La non précision de visibilité public Seules les dépendances non triviales sont précisées sur les diagrammes.
13
Chapitre 3 : UML & Approche objet A.U. : 2009/2010
ENSI – II2
Classe emboîtée
• Déclarée dans la portée lexicale d’une
autre classe.
Classe utilitaire
Les classes utilitaires: permettent de
regrouper des éléments dans un module
sans pour autant définir une classe
complète.
Les classes utilitaires ne peuvent être Spécifier la gestion des associés
instanciées car elles ne sont pas des
types de données. (gestion des liens entre objets)
Traiter les classes associatives
Classe Paramétrée
• Modèle de classe
• Paramètres Formels génériques (types, Optimiser la navigation
opérations…)
Par exemple :
• { ordered } : les éléments de la collection sont ordonnés
>
:
> :
: Cl i e n t : : : Co n s o rti um
t
i
t
: Cl i e n t u : Co m p te :
l Ba nq
t a ue
i i
t r
: Cl i e n t u : Co m p te : e
l Ba nq s
a ue :
i
r
e
s >
:
: Cl i e n t : Di s tri b uteu r
>
>
: Cl i e n t : Di s tri b uteu r
>
t t' lignes
Ligne
RelevéDeCompte
* Opération
Spécifier les contraintes de gestion {ordered,addOnly}
Spécifier les méthodes assurant la gestion des liens
Il est possible de définir de nouvelles contraintes
Préciser la portée
Exemple
85
Chap.3 : UML
⇑ 84 Chap.3 : UML 85
a rs rolea b a rs rolea b
A R B A R B
1 * carda 1 1 * carda 1
86
Chap.3 : UML 86 Chap.3 : UML 87
14
Chapitre 3 : UML & Approche objet A.U. : 2009/2010
ENSI – II2
M0 M0
Chap.3 : UML
⇑ 90 Chap.3 : UML 91
15
Chapitre 3 : UML & Approche objet A.U. : 2009/2010
ENSI – II2
Pour les associations 1..1, les attributs de l’association peuvent être déplacés dans une
des classes qui participent à l’association
Pour les association 1 vers N, le déplacement est généralement possible vers la classe
du coté N.
La promotion de l’association au rang de classe pour augmenter la lisibilité ou en raison
de la présence de l’association vers d’autres classes.
promotion en classe de la relation
Etudiant -Travail, avec un attribut Note
attribut Mention qualifie un diplôme :
La portée visibilité des rôles il correspond à la conception de la
+, -, # relation Diplôme - Etudiant,
attribut Numéro qualifie une
R chambre: il correspond à la conception
a b de la relation: Etudiant- Chambre.
-g +f
Chap.3 : UML 94 95
ajouter un sens de navigation et/ou une contrainte d’appartenance
ajouter de nouvelles associations,
modifier/supprimer les anciennes associations
Horloge Horloge {frozen}
Exemple :
8 dames sur un échiquier placées de telle sorte qu’aucune ne peut attaquer une autre ? -hh: CC = 24
2
-mm: CC = 60
Echiquier nouvelle(int,int) CompteurCyclique
2..4 incrémenter() +nouvelle(int,int)
Echiquier -valeur : int = 0
testNoAttack() voisine consulter() : Int x Int x Int +incrémenter()
voisine
-max : int {frozen}
2..4 +consulter_hh() : int
testNoAttack() +nouveau(int)
+consulter_mm() : int
Case +incrémenter()
Case 0..1 +valeur() : int
Première occupée Voisine +raz()
successeur occupée
0..1
Chap.3 : UML
⇑ 98 Chap.3 : UML 99
16
Chapitre 3 : UML & Approche objet A.U. : 2009/2010
ENSI – II2
Exemple
Règles de généralisation
Racine
Spécialisation
Généralisation
g()
A B
f() g() A B
g() h()
f() h()
Exemple 2 :
Spécialisation 4.4.2 Diversification des implémentations
Figure
couleur Le concept d’interface a été introduit dans UML pour modéliser des
position du centre
épaisseur du trait techniques de description de composants qu’on trouve sur le marché.
type de trait
déplacer
Une interface est la déclaration d’une collection d’opérations qui
sélectionner peuvent être utilisées pour définir un service. Une interface spécifie
pivoter
afficher des opérations visibles d’une classe sans en définir la structure
interne. Elle ne spécifie souvent qu’une partie limitée du
comportement d’une classe. Les interfaces n’ont ni implémentation,
Dimension 0 Dimension 1 Dimension 2 ni attributs, ni états, ni associations. Elles peuvent cependant
orientation orientation
type de remplissage disposer de relations de généralisation.
redimensionner redimensionner
remplir
Une interface est représentée par un petit cercle ayant un nom
Une classe Une interface
Point Ligne Arc Spline Polygones Cercles
angle
bornes nb cotés
angle départ Pts de contrôle diamètre
angle fin
sommets Représentation d’une interface au moyen d’un petit cercle
pivoter relié à la classe qui fournit effectivement les services
afficher afficher afficher afficher afficher
afficher
Chap.3 : UML
⇑ 102 Chap.3 : UML 103
Les interfaces
Réalisation
Les interfaces La réalisation est une relation sémantique entre deux
• Pour montrer les opérations dans une interface, on la spécifie classificateurs, selon laquelle un des classificateurs décrit un
comme une classe avec le stéréotype «interface» contrat dont l’exécution est garantie par l’autre.
Exemple
«Interface»
«Interface»
Pile
Stockable
{abstraite}
{abstraite}
empiler() {abstraite}
depiler() {abstraite} charger() {abstraite}
sommet() {abstraite} sauver() {abstraite}
vide() {abstraite}
17
Chapitre 3 : UML & Approche objet A.U. : 2009/2010
ENSI – II2
Si deux concepts sont liés par une relation de spécialisation, Les classes abstraites ne sont pas instanciables directement,
alors toute instance du concept spécialisé doit pouvoir jouer le Les classes abstraites forment une base pour les logiciels extensibles,
rôle d’une instance du concept général. Les nouveaux besoins, les extensions et les améliorations sont
concentrées dans de nouvelles sous-classes,
Il doit être possible de substituer une instance du concept spécialisé à une Une classe est désignée comme abstraite au moyen de la propriété
instance du concept général dans toutes les applications où ce dernier booléenne Abstraite définie pour tous les éléments généralisables,
joue un rôle.
La propriété Abstraite peut également être appliquée à une opération
A
f() Pile Figure
g() {abstraite} {abstraite}
centre : Point
empiler() {abstraite}
C translater()
B depiler() {abstraite}
sommet() {abstraite} surface() {abstraite}
h() vide() {abstraite}
f()
Exemple
Chap.3 : UML
⇑ 110
18