Vous êtes sur la page 1sur 150

Modlisation UML

Christine Solnon
INSA de Lyon - 3IF

2012 - 2013

1/137

Introduction

Positionnement de lUE / IF
Domaines denseignement du dpartement IF : Systme dInformation Rseaux Architectures matrielles Logiciel Systme Mthodes et Outils Mathmatiques Formation gnrale Dveloppement logiciel Units dEnseignement du domaine Dveloppement logiciel" : C++ (3IF) Gnie logiciel (3IF) Modlisation UML (3IF) Qualit logiciel (4IF) Grammaires et langages (4IF) Ingnierie des IHM (4IF) Mthodologie de dveloppement objet (4IF)
2/137

Introduction

Rfrentiel des comptences


Utiliser des diagrammes UML pour modliser un objet dtude Interprter un diagramme UML donn
IF3-UML, IF4-DevOO, IF4-IHM

Concevoir un diagramme UML modlisant un objet dtude


IF3-UML, IF3-C++, IF3-DASI, IF4-DevOO, IF4-IHM, IF4-LG

Vrier la cohrence de diffrents diagrammes modlisant un mme objet dtude


IF3-UML, IF4-DevOO, IF4-LG

Concevoir larchitecture dun logiciel orient objet Structurer un logiciel en paquetages et classes faiblement coupls et fortement cohsifs
IF3-UML, IF3-C++, IF3-DASI, IF4-DevOO, IF4-LG

Utiliser des Design Patterns


IF3-UML, IF3-C++, IF3-DASI, IF4-DevOO, IF4-LG
3/137

Introduction

Organisation

6 sances de cours du 8 novembre au 13 dcembre 4 sances de travaux dirigs (TD) du 19 novembre au 18 dcembre 1 devoir surveill (DS) le 10 janvier

4/137

Introduction

Pour en savoir plus...


Sur la modlisation en gnral Modles et Mtamodles Guy Caplat Sur le mta-modle de rfrence dUML : http ://www.omg.org/uml Sur UML et la modlisation objet Modlisation Objet avec UML Pierre-Alain Muller, Nathalie Gaertner Chapitre sur la notation tlchargeable sur le site dEyrolles Sur les design patterns et la conception oriente objet UML 2 et les design patterns Craig Larman Tte la premire : Design Patterns Eric Freeman & Elizabeth Freeman ...et plein dautres ouvrages DocINSA !
5/137

Introduction

Introduction la modlisation

Plan du cours

Introduction Introduction la modlisation Introduction UML Modliser la structure avec UML Modliser le comportement avec UML Principes et patrons de conception oriente objet

2 3 4

6/137

Introduction

Introduction la modlisation

Quest-ce quun modle ?

Modle = Objet conu et construit (artefact) : Pour reprsenter un sujet dtudes Exemple de sujet : les circuits lectriques Sappliquant plusieurs cas de ce sujet dtude Incarnant un point de vue sur ces cas Exemple de point de vue : U = RI Abstraction de la longueur des ls, la forme du circuit, ... Un mme sujet dtudes peut avoir plusieurs modles Chaque modle donne un point de vue diffrent sur le sujet Gnricit Abstraction Exemple de cas : des mesures (tension, intensit, ...) sur des circuits Reprsentativit

7/137

Introduction

Introduction la modlisation

Langages de modlisation
Langages utiliss pour exprimer un modle : Langues naturelles : qui voluent hors du contrle dune thorie Ex : Franais, Anglais, ... Langages articiels : conus pour des usages particuliers Langages formels : syntaxe dnie par une grammaire Ex : Logique, langages informatique (C, Java, SQL, ...), ... Pouvoir dexpression dun langage : Ensemble des modles que lon peut exprimer Le choix du langage inuence la conception du modle... ...et donc la perception du sujet dtudes ! Interprtation dun langage : Procdure pour comprendre un modle (Smantique) Modle ambig : Plusieurs interprtations diffrentes possibles Modle excutable : Interprtation excutable par une machine
8/137

Introduction

Introduction la modlisation

Langages de modlisation bass sur les graphes


Dnition Un graphe est dni par un couple (N, A) tel que N est un ensemble de nuds (aussi appels sommets) Composants du modle A N N est un ensemble darcs Relation binaire entre les composants du modle Nuds et arcs peuvent tre tiquets par des proprits La modlisation par les graphes date de [Euler 1735]

[Image emprunte Wikipedia] 9/137

Introduction

Introduction UML

Plan du cours

Introduction Introduction la modlisation Introduction UML Modliser la structure avec UML Modliser le comportement avec UML Principes et patrons de conception oriente objet

2 3 4

10/137

Introduction

Introduction UML

Historique dUML

[Image emprunte Wikipedia]

11/137

Introduction

Introduction UML

UML et lOMG
OMG = Object Management Group (www.omg.org) : Fond en 1989 pour standardiser et promouvoir lobjet Version 1.0 dUML (Unied Modeling Language) en janvier 1997 Version 2.4.1 en aout 2011 Dnition dUML selon lOMG : Langage visuel ddi la spcication, la construction et la documentation des artefacts dun systme logiciel LOMG dnit le mta-modle dUML Syntaxe et interprtation en partie formalises Attention : UML est un langage... pas une mthode Mthode dans le cours 4IF Dveloppement Orient Objet"
12/137

Introduction

Introduction UML

3 faons dutiliser UML selon [Fowler 2003]


(On y reviendra en 4IF...)

Mode esquisse (mthodes Agile) : Diagrammes tracs la main, informels et incomplets Support de communication pour concevoir les parties critiques Mode plan : Diagrammes formels relativement dtaills Annotations en langue naturelle Gnration dun squelette de code partir des diagrammes Ncessit de complter le code pour obtenir un excutable Mode programmation (Model Driven Architecture / MDA) : Spcication complte et formelle en UML Gnration automatique dun excutable partir des diagrammes Limit des applications bien particulires Un peu utopique (...pour le moment ?)
13/137

Introduction

Introduction UML

Diffrents modles UML


UML peut tre utilis pour dnir de nombreux modles : Modles descriptifs vs prescriptifs Descriptifs Dcrire lexistant (domaine, mtier) Prescriptifs Dcrire le futur systme raliser Modles destins diffrents acteurs Pour lutilisateur Dcrire le quoi Pour les concepteurs/dveloppeurs

Dcrire le comment

Modles statiques vs dynamiques Statiques Dcrire les aspects structurels Dynamiques Dcrire comportements et interactions Les modles sont dcrits par des diagrammes (des graphes) Chaque diagramme donne un point de vue diffrent sur le systme

14/137

Introduction

Introduction UML

14 types de diagrammes dUML 2.2

...et un langage pour exprimer des contraintes : OCL


15/137

Introduction

Introduction UML

Diagrammes UML : Points de vue sur le systme

[Image emprunte Muller et Gaertner]

16/137

Introduction

Introduction UML

Notations communes tous les diagrammes (1/2)


Strotypes et mots-cls (on y reviendra en 4IF...) : Dnition dune utilisation particulire dlments de modlisation Interprtation (smantique) particulire Notation : nomDuStrotype ou {nomDuMotCl} ou icone Nombreux strotypes et mots-cls prdnis : invariant, create, actor, {abstract}, {bind}, {use}... Valeurs marques (on y reviendra aussi en 4IF...) : Ajout dune proprit un lment de modlisation Notation : { nom1 = valeur1 , ..., nomn = valeurn } Valeurs marques prdnies (ex. : derived : Bool) ou personnalises (ex. : auteur : Chane) Commentaires : Information en langue naturelle Notation : o- - - - - - - - - - - - - - - - - - 17/137

Introduction

Introduction UML

Notations communes tous les diagrammes (2/2)


Relations de dpendance : Notation : [source]- - - - - - - - - >[cible] Modication de la source peut impliquer une modication de la cible Nombreux strotypes prdnis : bind, realize, use, create, call, ... Contraintes (on y reviendra aussi en 4IF) : Relations entre lments de modlisation Proprits qui doivent tre vries Attention : les contraintes nont pas deffet de bord Notation : o- - - - - - - -{ contrainte } 3 types de contraintes : Contraintes prdnies : disjoint, ordered, xor, ... Contraintes exprimes en langue naturelle Ex. : temps dexcution infrieur 10 ms Contraintes exprimes avec OCL (Object Constraint Language) Ex. : context Pile inv : self.nbElts >= 0 Strotypes : invariant, prcondition, postcondition
18/137

Modliser la structure avec UML

Plan du cours

1 2 3 4

Introduction Modliser la structure avec UML Modliser le comportement avec UML Principes et patrons de conception oriente objet

19/137

Modliser la structure avec UML

Point de vue statique sur le systme


Dcrire la structure du systme en termes de : Composants du systme Objets, Classes, Paquetages, Composants, ... Relations entre ces composants Spcialisation, Association, Dpendance, ... Pas de facteur temps Diffrents diagrammes statiques que nous allons voir : Diagrammes dobjets (Cours) Diagrammes de classes (Cours + TD) Diagrammes de paquetage (Cours + TD) Diagrammes de composants (Cours) Diagrammes de dploiement (Cours)
20/137

Modliser la structure avec UML

Structuration Oriente Objet

Plan du cours
1 2

Introduction Modliser la structure avec UML Structuration Oriente Objet Diagrammes dobjets Diagrammes de classes Diagrammes de paquetage Diagrammes de composants Diagrammes de dploiement Modliser le comportement avec UML Principes et patrons de conception oriente objet

3 4

21/137

Modliser la structure avec UML

Structuration Oriente Objet

Pourquoi une structuration oriente objet ?


Unicit et universalit du paradigme Rduire le dcalage entre monde rel et logiciel Objets rels Objets conceptuels Objets logiciels Rutilisabilit et volutivit facilites par diffrents mcanismes Encapsulation, Modularit, Abstraction, Polymorphisme, Hritage Faible couplage inter-objets / Forte cohsion intra-objet Paradigme qui arrive maturit Bibliothques de classes, Design patterns, UML, Mthodologies de dveloppement (USDP, Agile, XP, ...), ... Environnements de dveloppement intgrs (IDE)
22/137

Modliser la structure avec UML

Structuration Oriente Objet

Quest-ce quun objet ?


Objet = Etat + Comportement + Identit Etat dun objet : Ensemble de valeurs dcrivant lobjet Chaque valeur est associe un attribut (proprit) Les valeurs sont galement des objets ( liens entre objets) Comportement dun objet : Ensemble doprations que lobjet peut effectuer Chaque opration est dclenche par lenvoi dun message Excution dune mthode Identit dun objet : Permet de distinguer les objets indpendamment de leur tat 2 objets diffrents peuvent avoir le mme tat Attribue implicitement la cration de lobjet Lidentit dun objet ne peut tre modie Attention : identit = nom de la variable qui rfrence lobjet
23/137

Modliser la structure avec UML

Structuration Oriente Objet

Quest ce quune classe dobjets ?


Classe = regroupement dobjets similaires (appels instances) Toutes les instances dune classe ont les mmes attributs et oprations Abstraction des caractristiques non communes Classes sans instance Classes abstraites : Certaines oprations peuvent tre abstraites (non dnies) Interfaces : Pas dattribut et toutes les oprations sont abstraites Relation de spcialisation/gnralisation entre classes Une classe A est une spcialisation dune classe B si tout attribut/opration de B est galement attribut/opration de A Implmentation par hritage

24/137

Modliser la structure avec UML

Diagrammes dobjets

Plan du cours
1 2

Introduction Modliser la structure avec UML Structuration Oriente Objet Diagrammes dobjets Diagrammes de classes Diagrammes de paquetage Diagrammes de composants Diagrammes de dploiement Modliser le comportement avec UML Principes et patrons de conception oriente objet

3 4

25/137

Modliser la structure avec UML

Diagrammes dobjets

Diagrammes dobjets
Objectif : Reprsenter les objets et leurs liens un instant donn Utilisation : documenter des cas de test, analyser des exemples, ... Moyen : Graphe Nuds du graphe = Objets Possibilit de supprimer le nom, la classe et/ou les attributs (objet anonyme, non typ ou dtat inconnu) Artes du graphe = Liens entre objets
o1 : C1 o2 : C2 o2 : C2 o3 : C3
nomObjet : ClasseObjet nomAttr_1 = val_1 nomAttr_2 = val_2 ...

Lien binaire : entre 2 objets Lien n-aire : entre n objets Possibilit de nommer les liens et les rles Correspondance entre liens et attributs

o1 : C1

26/137

Modliser la structure avec UML

Diagrammes dobjets

Exemple de diagramme dobjets

[Image emprunte J.-M. Jezequel]

27/137

Modliser la structure avec UML

Diagrammes dobjets

Au travail !

Pierre, Paul, Jacques, Marie et Anne sont tudiants au dpartement IF. Robert et Suzie sont enseignants au dpartement IF. Robert enseigne le C et le rseau ; Suzie enseigne langlais, les math et le Java. Pierre, Paul et Marie suivent les cours de C, de rseau et Java ; Jacques et Anne suivent les cours de C, math et anglais.

28/137

Modliser la structure avec UML

Diagrammes de classes

Plan du cours
1 2

Introduction Modliser la structure avec UML Structuration Oriente Objet Diagrammes dobjets Diagrammes de classes Diagrammes de paquetage Diagrammes de composants Diagrammes de dploiement Modliser le comportement avec UML Principes et patrons de conception oriente objet

3 4

29/137

Modliser la structure avec UML

Diagrammes de classes

Abstraction dun ensemble de diagrammes dobjets

[Image emprunte J.-M. Jezequel]

30/137

Modliser la structure avec UML

Diagrammes de classes

Diagrammes de classes
Un diagramme de classes est un graphe : Nud du graphe = Classe Abstraction dun ensemble dobjets Arc du graphe = Relation entre des classes : Relation dassociation Abstraction dun densemble de liens entre objets Relation de gnralisation / spcialisation Factorisation de proprits communes plusieurs classes Trs nombreuses utilisations, diffrents niveaux : Pendant la capture des besoins : Modle du domaine Classes correspondant des objets du domaine Pendant la conception/implmentation : Modle de conception Classes correspondant des objets logiciels
31/137

Modliser la structure avec UML

Diagrammes de classes

Reprsentation UML des classes


Rectangle compos de compartiments : Compartiment 1 : Nom de la classe (commence par une majuscule, en gras) Compartiment 2 : Attributs Compartiment 3 : Oprations Possibilit dajouter des compartiments (exceptions, ...) Diffrents niveaux de dtail possibles : Possibilit domettre attributs et/ou oprations
NomClasse1 attr1 : Chaine attr2 : Entier ... op1(p1:Entier) : Entier op2() : Chaine ...
32/137

NomClasse2 attr1 attr2

NomClasse3

Modliser la structure avec UML

Diagrammes de classes

Reprsentation UML des attributs


Format de description dun attribut : [Vis] Nom [Mult] [":" TypeAtt] ["=" Val] [Prop] Vis : + (public), - (priv), # (protg), (package) Mult : "[" nbElt "]" ou "[" Min .. Max "]" TypeAtt : type primitif (Entier, Chane, ...) ou classe Val : valeur initiale la cration de lobjet Prop : {gel}, {variable}, {ajoutUniquement}, ... Attributs de classe (statiques) souligns Attributs drivs prcds de "/" Exemples : # onOff : Bouton - x : Rel coord[3] : Rel + pi : rel = 3.14 {gel} inscrits[2..8] : Personne /age : Entier

33/137

Modliser la structure avec UML

Diagrammes de classes

Reprsentation UML des oprations


Format de description dune opration : [Visibilit] Nom ["(" Arg ")"] [":" Type] Visibilit : + (public), - (priv), # (protg) Arg : liste des arguments selon le format [Dir] NomArgument : TypeArgument o Dir = in (par dfaut), out, ou inout Type : type de la valeur retourne (type primitif ou classe) Oprations abstraites (non implmentes) en italique Oprations de classe (statiques) soulignes Possibilit dannoter avec des contraintes strotypes precondition et postcondition Programmation par contrats Possibilit de surcharger une opration : mme nom, mais paramtres diffrents Strotypes doprations : create et destroy

34/137

Modliser la structure avec UML

Diagrammes de classes

Associations entre classes


Abstraction des relations dnies par les liens entre objets

Liens entre objets :


:C2 :C1 :C2 :C1 :C2 :C1 :C2 :C4 :C3 :C3 :C4 :C4 :C3 :C4 :C4

Associations entre classes dobjets :


1..* C1 1..* C2 1 0..1 C3 0..1 0..2 C4

35/137

Modliser la structure avec UML

Diagrammes de classes

Associations entre classes (1/2)


Role de C1 dans lassociation Sens de lecture role2 mult2

C1

role1 mult1

Nom

C2

Nombre dinstances de C1 pouvant etre lies une instance de C2 (ex. : 1, 0..1, *, 1..*, 4, 4..10, ...)

Interprtation en franais : Un C1 Nom un C2 (ou un C2 Nom un C1 si sens de lecture inverse) Un C1 est rle1 dun C2 et mult1 C1 peuvent jouer ce rle pour un C2 Un C2 est rle2 dun C1 et mult2 C2 peuvent jouer ce rle pour un C1 Exemple :

Entreprise

employeur 0..1

Est employe par

employ Personne 1..*


36/137

Modliser la structure avec UML

Diagrammes de classes

Associations entre classes (2/2)


Role de C1 dans lassociation Sens de lecture role2 mult2

C1

role1 mult1

Nom

C2

Nombre dinstances de C1 pouvant etre lies une instance de C2 (ex. : 1, 0..1, *, 1..*, 4, 4..10, ...)

Interprtation en langage de programmation orient objet La classe C1 a un attribut de nom rle2 Type = C2 si mult2 {1, 0..1}, ou collection de C2 sinon La classe C2 a un attribut de nom rle1 Type = C1 si mult1 {1, 0..1}, ou collection de C1 sinon Exemple :

Entreprise

employeur 0..1

Est employe par

employ Personne 1..*


36/137

Modliser la structure avec UML

Diagrammes de classes

Au travail !
Chaque tudiant du dpartement IF suit un ensemble dunits denseignement (UE). Chaque UE a un coefcient et est constitue de cours, de travaux dirigs (TD) et de travaux pratiques (TP). Chaque cours, TD ou TP a une date. Les cours sont faits en amphi, les TD en salle de classe et les TP en salle machine. Pour les TP et TD, les tudiants sont rpartis dans des groupes. Pour chaque TP, chaque tudiant est en binme avec un autre tudiant. Les cours et les TD sont assurs par un enseignant. Les TP sont assurs par deux enseignants. Pour chaque UE, ltudiant a une note de devoir surveill ; pour chaque TP, le binme a une note de TP.

37/137

Modliser la structure avec UML

Diagrammes de classes

Navigabilit
Quest-ce que la navigabilit dune association entre C1 et C2 ? Capacit dune instance de C1 (resp. C2) accder aux instances de C2 (resp. C1) Par dfaut : Navigabilit dans les deux sens C1 a un attribut de type C2 et C2 a un attribut de type C1 Spcication de la navigabilit : Orientation de lassociation C1 a un attribut du type de C2, mais pas linverse Attention : Dans un diagramme de classes conceptuelles, toute classe doit tre accessible partir de la classe principale
38/137

C1

C2

C1

C2

Modliser la structure avec UML

Diagrammes de classes

Proprits et contraintes sur les associations


Proprits sur extrmits dassociations {variable} : instance modiable (par dfaut) {frozen} : instance non modiable {addOnly} : instances ajoutables mais non retirables (si mult. > 1) Contraintes prdnies Sur une extrmit : {ordered}, {unique}, ... Entre 2 associations : {subset}, {xor}, ...

[images extraites de Muller et Gaertner]


39/137

Modliser la structure avec UML

Diagrammes de classes

Associations qualies
Restriction dune relation / qualicateur : Slection dun sous-ensemble dobjets laide dun attribut qualicatif (cl) Lattribut qualicatif appartient lassociation
Classe source qualificatif {sousensemble} Classe destination

Exemples :
Banque 1 * Compte

Banque numCpte

Compte

[image extraite de www.omg.org]


40/137

Modliser la structure avec UML

Diagrammes de classes

Classes-associations
Association attribue :
C1 n m C2 <=> C1 1 C3 attr1 m attr2 ... n 1 C2

attr1 attr2 ...

Le nom de la classe association peut etre omis

Une classe association peut participer dautres associations :

C1

C2

C3 attr1 attr2 ...

C4

41/137

Modliser la structure avec UML

Diagrammes de classes

Associations n-aires
Associations entre n classes (avec n > 2)
Enseignant * Groupe * * Salle <=> Groupe 1 1 * Enseignant 1 * Cours * Salle

Classes-Associations n-aire
Enseignant * Groupe * * Salle Cours date heure <=> Groupe 1 1 Enseignant 1 * Cours date heure *

Salle

42/137

Modliser la structure avec UML

Diagrammes de classes

Associations particulires : composition et agrgation


Composition :
Livre 1 1..n Chapitre 1 1..n Paragraphe

Relation transitive et antisymtrique La cration (copie, destruction) du composite (container) implique la cration (copie, destruction) de ses composants Un composant appartient au plus un composite Agrgation :
Polygone * 3..n Point

Simple regroupement de parties dans un tout


43/137

Modliser la structure avec UML

Diagrammes de classes

Gnralisation et Hritage
Niveau conceptuel : Gnralisation Relation transitive, non rexive, et non symtrique La sous-classe est-une-sorte-de la super classe Toute instance de la sous-classe est instance de la super classe Niveau implmentation : Hritage Mcanisme propos par les langages de programmation Objet "B hrite de A" signie que B possde : Toutes les proprits de A (attributs, op., assoc., contraintes) Possibilit de rednir les oprations de la sous-classe Polymorphisme Ainsi que des nouvelles proprits qui lui sont propres Permet de factoriser les proprits communes plusieurs classes Une opration dnie pour A est accessible aux sous-classes de A
44/137

Modliser la structure avec UML

Diagrammes de classes

Hritage et gnralisation : Exemple

45/137

Modliser la structure avec UML

Diagrammes de classes

Hritage vs Composition
Problme : Modliser le fait quil y a des voitures bleues, des voitures rouges et des voitures vertes. Solution 1 : Hritage Crer une classe abstraite Voiture Crer 3 classes VoitureBleue, VoitureRouge et VoitureVerte qui hritent de Voiture Solution 2 : Composition Crer une classe Voiture et une classe Couleur (numration) Crer une association entre Voiture et Couleur Comment reprsenter ces 2 solutions en UML ?

46/137

Modliser la structure avec UML

Diagrammes de classes

Hritage vs Composition
Problme : Modliser le fait quil y a des voitures bleues, des voitures rouges et des voitures vertes. Solution 1 : Hritage Crer une classe abstraite Voiture Crer 3 classes VoitureBleue, VoitureRouge et VoitureVerte qui hritent de Voiture Solution 2 : Composition Crer une classe Voiture et une classe Couleur (numration) Crer une association entre Voiture et Couleur Comment reprsenter ces 2 solutions en UML ? Quelle solution choisissez-vous ?
46/137

Modliser la structure avec UML

Diagrammes de classes

Hritage vs Composition
Problme : Modliser le fait quil y a des voitures bleues, des voitures rouges et des voitures vertes. Solution 1 : Hritage Crer une classe abstraite Voiture Crer 3 classes VoitureBleue, VoitureRouge et VoitureVerte qui hritent de Voiture Solution 2 : Composition Crer une classe Voiture et une classe Couleur (numration) Crer une association entre Voiture et Couleur Comment reprsenter ces 2 solutions en UML ? Quelle solution choisissez-vous ? Et si on veut modliser le fait quil y a des personnes hommes et des personnes femmes ?

46/137

Modliser la structure avec UML

Diagrammes de classes

Hritage vs Dlgation
Problme : Appeler dans une classe B une opration op() dune classe A ? Solution 1 : Hritage Faire hriter B de A op() peut tre appele depuis nimporte quelle instance de B Solution 2 : Dlgation Ajouter une association de B vers A Ajouter dans B un attribut a de type A a.op() peut tre appele depuis nimporte quelle instance de B Comment reprsenter ces 2 solutions en UML ?

47/137

Modliser la structure avec UML

Diagrammes de classes

Hritage vs Dlgation
Problme : Appeler dans une classe B une opration op() dune classe A ? Solution 1 : Hritage Faire hriter B de A op() peut tre appele depuis nimporte quelle instance de B Solution 2 : Dlgation Ajouter une association de B vers A Ajouter dans B un attribut a de type A a.op() peut tre appele depuis nimporte quelle instance de B Comment reprsenter ces 2 solutions en UML ? Quelle solution choisissez-vous ?
47/137

Modliser la structure avec UML

Diagrammes de classes

Hritage vs Dlgation
Problme : Appeler dans une classe B une opration op() dune classe A ? Solution 1 : Hritage Faire hriter B de A op() peut tre appele depuis nimporte quelle instance de B Solution 2 : Dlgation Ajouter une association de B vers A Ajouter dans B un attribut a de type A a.op() peut tre appele depuis nimporte quelle instance de B Comment reprsenter ces 2 solutions en UML ? Quelle solution choisissez-vous ? On y reviendra avec les Design Patterns...
47/137

Modliser la structure avec UML

Diagrammes de classes

Contraintes sur les relations de gnralisation


{disjoint} ou {overlapping} {complete} ou {incomplete} {disjoint,complete} Partition {leaf} ou {root}

[Image emprunte www.omg.org]

48/137

Modliser la structure avec UML

Diagrammes de classes

Classes gnriques (templates)


Quest-ce quune classe gnrique ?
T

Classe paramtre par dautres classes Factorisation de code

Pile <<bind>>(String) <<bind>>(Float) PileDeString PileDeFloat

Exemple : Une pile paramtre par le type T des lments empils


Code C++ :
template <class T> class Pile { public: Pile() { ... } void empile(T e) { ... } ... private: ... }; ... Pile<float> pile1; Pile<string> pile2; pile1.empile(2.5); pile2.empile("Hello"); ...

Code Java :
public class Pile<T> { public Pile() { ... } public void empile(T e) { ... } ... private ... }; ... Pile<Float> pile1 = new Pile<Float>(); Pile<String> pile2 = new Pile<String>(); pile1.empile(2.5); pile2.empile("Hello"); ...

49/137

Modliser la structure avec UML

Diagrammes de classes

Classes abstraites
Quest-ce quune classe abstraite ? Classe qui ne peut tre instancie Doit tre spcialise en des classes non abstraites Peut contenir des oprations abstraites (non dnies) Notation : mot cl {abstract} ou nom en italique Pourquoi des classes abstraites ? Spcier un comportement commun plusieurs classes Manipuler des instances de classes diffrentes de faon uniforme Polymorphisme Exemple :
Dessin * vues ElementGraphique epaisseurTrait:int dessine() estClique(x,y):bool Carr ... dessine() estClique(x,y):bool Rond ... dessine() estClique(x,y):bool ...
50/137

Modliser la structure avec UML

Diagrammes de classes

Interface
Quest-ce quune interface ? Classe sans attribut dont toutes les oprations sont abstraites Ne peut tre instancie Doit tre ralise (implmente) par des classes non abstraites Peut hriter dune autre interface Pourquoi des interfaces ? Utilisation similaire aux classes abstraites En Java : une classe ne peut hriter de plus dune classe, mais elle peut raliser plusieurs interfaces Notations UML : Nom : interface Itf1 Hritage : Itf1 Itf2 Ralisation : Class1 - - - Itf1 Itf1 ou Class1 -O

Itf1 Utilisation : Class2 - - use - - > Itf1 ou Class2 -C


51/137

Modliser la structure avec UML

Diagrammes de classes

Exemple

[image emprunte Craig Larman]

52/137

Modliser la structure avec UML

Diagrammes de classes

Quelques strotypes et most-cls


{abstract} : classe abstraite (alternative : nom en italique) interface : interface numration : instances appartiennent un ensemble ni de littraux type primitif : instances sont des valeurs dun type primitif classe implmentation : implmentation dune classe dans un langage de prog. utilitaire : variables et procdures globales

53/137

Modliser la structure avec UML

Diagrammes de classes

Synthse des diffrentes relations

Association Navigable dans les 2 sens : Navigable dans un sens : > ou X> Composition : Agrgation : <> Gnralisation : Ralisation dune interface : O ou - - - - - - - - - - - Utilisation dune interface : C ou - - - - use - - - - > Intanciation dune classe gnrique : - - - - bind (Type) - - - - > Dpendance : - - - - - - - - - - - - >

54/137

Modliser la structure avec UML

Diagrammes de classes

Cherchez lerreur (1/3)

Maison

1..*

Pice

1..2

Fenetre

55/137

Modliser la structure avec UML

Diagrammes de classes

Cherchez lerreur (1/3)

Maison

1..*

Pice

1..2

Fenetre

Navigabilit : Tout objet doit tre accessible via une association

55/137

Modliser la structure avec UML

Diagrammes de classes

Cherchez lerreur (2/3)

Bagage *

Passager * 1 1 Vol

56/137

Modliser la structure avec UML

Diagrammes de classes

Cherchez lerreur (2/3)

Bagage *

Passager * 1 1 Vol

Eviter les associations redondantes : Le vol dun bagage est obtenu partir du passager Les bagages dun vol sont obtenus partir des passagers Possibilit de spcier que lassociation Bagage-Vol est drive...

56/137

Modliser la structure avec UML

Diagrammes de classes

Cherchez lerreur (3/3)

Chambre

Rservation * dateDeb dateFin * 1 Hotel 1 *

Client Personne nom

Grant

57/137

Modliser la structure avec UML

Diagrammes de classes

Cherchez lerreur (3/3)

Chambre

Rservation * dateDeb dateFin * 1 Hotel 1 *

Client Personne nom

Grant

Navigabilit : En labsence de rservations, on ne peut accder ni aux chambres ni aux clients

57/137

Modliser la structure avec UML

Diagrammes de paquetage

Plan du cours
1 2

Introduction Modliser la structure avec UML Structuration Oriente Objet Diagrammes dobjets Diagrammes de classes Diagrammes de paquetage Diagrammes de composants Diagrammes de dploiement Modliser le comportement avec UML Principes et patrons de conception oriente objet

3 4

58/137

Modliser la structure avec UML

Diagrammes de paquetage

Diagrammes de paquetages
Quest-ce quun paquetage (package) ? lment de modlisation qui : Contient dautres lments de modlisation (classes, autres paquetages, ...) Possibilit de ne pas reprsenter tous les lments contenus Dnit un espace de nom

[Image extraite de Muller et Gaertner]

59/137

Modliser la structure avec UML

Diagrammes de paquetage

Espaces de nom et visibilit


2 lments dans 2 paquetages diffrents sont diffrents, quel que soit leur nom

Nom complet = nom prx par les noms des paquetages englobants : Banque::Compte = Commerce::Compte Visibilit dun lment : + (public) ou - (priv) Les lments dun paquetage P voient : Les autres lments de P Les lments des paquetages englobant P

60/137

Modliser la structure avec UML

Diagrammes de paquetage

Dpendances entre paquetages


Retent les dpendances entre lments des paquetages : Une classe A dpend dune classe B (not A - - - - - - - - > B) si : Il existe une association navigable de A vers B (ou A possde un attribut de type B) Une mthode de A a un paramtre ou une var. locale de type B Strotypes sur les dpendances inter-paquetage A - - - accde - - - > B : Tout lment public de B est accessible par son nom complet depuis A A - - - importe - - - > B : Tout lment public de B est accessible par son nom depuis A Cration dalias si ncessaire Valeur marque {global} : Paquetage visible par tous les autres paquetages Inutile de montrer les dpendances vers ce paquetage
61/137

Modliser la structure avec UML

Diagrammes de paquetage

Architecture logique
Quest-ce quune architecture logique ? Regroupement des classes logicielles en paquetages Point de dpart pour un dcoupage en sous-systmes Objectifs dune architecture logique : Encapsuler et dcomposer la complexit Faciliter le travail en quipes Faciliter la rutilisation et lvolutivit Forte cohsion intra paquetage Faible couplage inter paquetages Exemples darchitectures logiques : Architecture en couches Architecture Modle - Vue - Contrleur (MVC) Architecture Multi-tiers ...
62/137

Modliser la structure avec UML

Diagrammes de composants

Plan du cours
1 2

Introduction Modliser la structure avec UML Structuration Oriente Objet Diagrammes dobjets Diagrammes de classes Diagrammes de paquetage Diagrammes de composants Diagrammes de dploiement Modliser le comportement avec UML Principes et patrons de conception oriente objet

3 4

63/137

Modliser la structure avec UML

Diagrammes de composants

Diagrammes de composants
Composant : Encapsule ltat et le comportement dun ensemble de classiers (classes, composants...) Spcie les services fournis et requis : Interfaces fournies : provided interfaces ou O Interfaces requises : required interfaces ou C interfaces Substituable tout composant qui offre/requiert les m Exemple :

[Image extraite de www.ibm.com/developerworks/rational]


64/137

Modliser la structure avec UML

Diagrammes de composants

Relations entre composants


Inclusion entre composants et Fourniture ou Utilisation dinterfaces

[Image extraite de www.ibm.com/developerworks/rational]

65/137

Modliser la structure avec UML

Diagrammes de dploiement

Plan du cours
1 2

Introduction Modliser la structure avec UML Structuration Oriente Objet Diagrammes dobjets Diagrammes de classes Diagrammes de paquetage Diagrammes de composants Diagrammes de dploiement Modliser le comportement avec UML Principes et patrons de conception oriente objet

3 4

66/137

Modliser la structure avec UML

Diagrammes de dploiement

Diagrammes de dploiement
Modliser le dploiement du systme sur une architecture physique Disposition des artefacts sur les nuds physiques Artefacts : instances de composants, processus, ... Nuds physiques : Ordinateur, Tlphone, Imprimante, ... Moyens de communication entre les nuds

67/137

Modliser le comportement avec UML

Plan du cours

1 2 3 4

Introduction Modliser la structure avec UML Modliser le comportement avec UML Principes et patrons de conception oriente objet

68/137

Modliser le comportement avec UML

Modliser le comportement avec UML


Dcrire le comportement du systme en termes dinteractions Systme vu comme une boite noire : Qui interagit avec le systme, et dans quel but ? Diagramme de cas dutilisation Comment interagit le systme avec son environnement ? Diagramme de squence systme Systme vu comme une boite blanche : Comment interagissent les objets du systme ? Diagramme de squence et/ou de communication Dcrire lvolution du systme dans le temps Comment voluent les tats des objets ? Diagrammes dtats-transitions
69/137

Modliser le comportement avec UML

Diagrammes dinteraction

Plan du cours

1 2 3

Introduction Modliser la structure avec UML Modliser le comportement avec UML Diagrammes dinteraction Diagrammes de cas dutilisation Diagrammes dtats-transitions Principes et patrons de conception oriente objet

70/137

Modliser le comportement avec UML

Diagrammes dinteraction

Diagrammes dinteraction
Point de vue temporel sur les interactions

Pendant la capture des besoins (systme = boite noire) : Interactions entre acteurs et systme Dcrire les scnarios des cas dutilisation Pendant la conception (systme = boite blanche) : Interactions entre objets Rchir laffectation de responsabilits aux objets Qui cre les objets ? Qui permet daccder un objet ? Quel objet reoit un message provenant de lIHM ? ... de faon avoir un faible couplage et une forte cohsion Elaboration en parallle avec les diagrammes de classes Contrler la cohrence des diagrammes !
71/137

Modliser le comportement avec UML

Diagrammes dinteraction

Diagrammes de squence vs diagrammes de communication

Diagrammes de squence : Structuration en termes de temps objets Exemple :


o1:T1
msg1(p1)

Diagrammes de communication : Structuration en multigraphe Numrotation des arcs pour modliser lordre des interactions Exemple :

axe vertical axe horizontal

o2:T2
msg2(p2) ret2 msg3(p3) ret1 ret3

o3:T3

1: ret1=msg1(p1)

o1:T1
1.1: ret2=msg2(p2) 1.2: ret3=msg3(p3)

o2:T2

o3:T3

72/137

Modliser le comportement avec UML

Diagrammes dinteraction

Diagrammes de squence
Ligne de vie et activation

Message dont lmetteur nest pas connu Nom de lobjet Objet anonyme Type de lobjet o1:T1
msg() msg1(p1)

:T2

Activation par envoi de message

Temps
ret1

Dure dactivation

Valeur retourne (facultatif) Ligne de vie de o1

73/137

Modliser le comportement avec UML

Diagrammes dinteraction

Diagrammes de squence
Cration et destruction dobjets

o1:T1
Crer

o2:T2

...change de messages...

Dure de vie do2

Dtruire

74/137

Modliser le comportement avec UML

Diagrammes dinteraction

Diagrammes de squence
Messages rexifs, messages asynchrones et contraintes temporelles
o1:T1
msg1(p1)

o1:T1
msg1()

o2:T2

o2:T2

msg2()

ret1

o1:T1
msg1() x yx < 2s y msg2()

o2:T2 Dlai de propagation

75/137

Modliser le comportement avec UML

Diagrammes dinteraction

Diagrammes de squence : Cadres


Mot rserv pour dclarer un diagramme de squence Nom du diagramme de squence sd xx o1:T1 msg1() loop [condition] msg2() ret connexions alt [condition1] msg3() Rfrence au diagramme xx msg1() ref xx o2:T2 o3:T3 o1:T1 o2:T2

[else]

msg4()

ret

Existe aussi : par, opt, critique

76/137

Modliser le comportement avec UML

Diagrammes dinteraction

Diagrammes de squence
Messages polymorphes

f: Fenetre dessiner() loop

vues[i]: VueGraphique VueGraphique

[i variant de 0 f.nbVues] afficher()

afficher()

VueRond

VueCarr

:VueRond afficher()

o2:T2

:VueCarr afficher()

o3:T3

msg1()

msg2()

77/137

Modliser le comportement avec UML

Diagrammes dinteraction

Liens entre diag. de classes et dinteraction

[Figure extraite du livre de C. Larman]

78/137

Modliser le comportement avec UML

Diagrammes dinteraction

Diagrammes de communication
Prsentation alternative dune squence dinteractions

79/137

Modliser le comportement avec UML

Diagrammes de cas dutilisation

Plan du cours

1 2 3

Introduction Modliser la structure avec UML Modliser le comportement avec UML Diagrammes dinteraction Diagrammes de cas dutilisation Diagrammes dtats-transitions Principes et patrons de conception oriente objet

80/137

Modliser le comportement avec UML

Diagrammes de cas dutilisation

Cas dutilisation
Pourquoi faire ? Permettre au client de dcrire ses besoins Parvenir un accord (contrat) entre clients et dveloppeurs Point dentre pour les tapes suivantes du dveloppement Quest ce quun cas dutilisation ? Usage que des acteurs font du systme Acteur : Entit extrieure qui interagit avec le systme Une mme personne peut jouer le rle de diffrents acteurs Un acteur peut tre un autre systme (SGBD, Horloge, ...) Usage : Squence dinteractions entre le systme et les acteurs Gnralement compos de plusieurs scnarios (instances) Scnario de base et ses variantes (cas particuliers) Description des scnarios laide de diagrammes de squence
81/137

Modliser le comportement avec UML

Diagrammes de cas dutilisation

Comment dcouvrir les cas dutilisation ? Dlimiter le primtre du systme Identier les acteurs interagissant avec le systme : Ceux qui utilisent le systme Ceux qui fournissent un service au systme Identier les acteurs principaux Ceux qui utilisent le systme pour atteindre un but Dnir les cas dutilisation correspondant ces buts Nom = Verbe linnitif + Groupe nominal Comment dcrire les cas dutilisation ? Diagramme de cas dutilisations Rcapitulatif graphique des interactions entre acteurs et cas Diagramme de squence Description de chaque scnario Squences dinteractions entre les acteurs et le systme
82/137

Modliser le comportement avec UML

Diagrammes de cas dutilisation

Diagrammes de cas dutilisation


Systme XXX

Limites du systme nom du systme


<<actor>> Service dautorisation des paiements <<actor>> Systme des ressources humaines

Client

Traiter une vente

Ouvrir la caisse

Caissier

Traiter un retour

notation alternative pour un acteur Communication acteur


Grant

Grer la scurit

cas dutilisation

Administrateur systme

83/137

Modliser le comportement avec UML

Diagrammes de cas dutilisation

Relations entre cas dutilisation


Gnralisation : Inclusion : - - - - - include - - - - - > Extension : - - - - - extend - - - - - > (prciser la condition) A utiliser avec modration

Systme XXX Faire un virement Client local


<<inclut>> <<tend>> montant > 500 euros

Faire un virement par internet Identifier client Client distant

Vrifier solde compte

84/137

Modliser le comportement avec UML

Diagrammes de cas dutilisation

Diagrammes de squence dun cas dutilisation


Reprsentation graphique dun scnario dun cas dutilisation

: Caissier crerNouvelleVente() loop [reste des articles] saisirArticle(codeArt,Qte) description, total

: Systme

terminerVente() total HT et TTC crerPaiement(montant) rendu de la monnaie, reu

Le systme vu comme une boite noire

85/137

Modliser le comportement avec UML

Diagrammes dtats-transitions

Plan du cours

1 2 3

Introduction Modliser la structure avec UML Modliser le comportement avec UML Diagrammes dinteraction Diagrammes de cas dutilisation Diagrammes dtats-transitions Principes et patrons de conception oriente objet

86/137

Modliser le comportement avec UML

Diagrammes dtats-transitions

Parenthse sur les automates nis (1/3)


Un automate ni est dni par Un ensemble de symboles A Un ensemble ni dtats Q Un ensemble dtats initiaux I Q et dtats terminaux T Q Une relation de transition R Q A Q Interprtation : (qi , s, qj ) passer de qi qj quand on lit s Reprsentation dun automate ni par un graphe Chaque tat correspond un sommet s Chaque transition (qi , s, qi ) correspond un arc qi qj Exemple : A = {e, ., 0, 1, 2, 3, 4, 5, 6, 7, 8, 9} 0|..|9 Q = {q0 , q1 , q2 , q3 , q4 , q5 } T = {q1 , q2 , q3 , q5 } 1|..|9 q1 q0 I = {q0 }
0 q2
87/137

0|..|9

0|..|9 e 1|..|9 q5

. .

q3

q4

Modliser le comportement avec UML

Diagrammes dtats-transitions

Parenthse sur les automates nis (2/3)


Excution dun automate ni : Un automate est une procdure qui reconnait des mots Entre = une suite de symboles de A Sortie = vrai ou faux Un mot < s1 , ..., sn > est reconnu sil existe < q0 , ..., qn > tel que : q0 I , qn T et i [1..n], (qi1 , si , qi ) R Chemin partant dun tat de I et arrivant sur un tat de F Exemple :
0|..|9 0|..|9 0|..|9 e 1|..|9 q5

Mots reconnus : 0, 0.123e45, 125, ... Mots non reconnus : 012, 4.5.6, 1e2, ...

q0

1|..|9 0

q1 q2

. .

q3

q4

Comment modier lautomate pour quil accepte 1e2 ?


88/137

Modliser le comportement avec UML

Diagrammes dtats-transitions

Parenthse sur les automates nis (3/3)


Automates nis dterministes et complets Un automate est dterministe si R est une fonction de Q A dans Q On peut toujours rendre dterministe un automate Un automate est complet si R est une fonction totale On peut toujours rendre complet un automate Exemple :
a|...|z
q0

a|...|z e
q1

=e
q0

e e q1 =e,s =e,t s e
q2

a|...|z t
q3

q2

q3

89/137

Modliser le comportement avec UML

Diagrammes dtats-transitions

Au del des automates nis


Les automates nis dterministes sont trs efcaces Complexit en temps linaire / taille du mot Mais ils ont un pouvoir dexpression limit aux langages rguliers Ne peuvent reconnatre les expressions bien parenthses (entre autres) Un automate pile a un pouvoir dexpression suprieur A chaque transition, on peut empiler ou dpiler des symboles Permet de reconnatre tous les langages hors-contexte Langages de programmation (C++, Java, ...) Mais certains langages ne peuvent pas tre reconnus par un automate pile Une machine de Turing est un automate encore plus puissant A chaque transition, on peut crire ou lire sur un ruban Permet de reconnatre tous les langages dcidables Pouvoir de calcul quivalent un ordinateur Mais certains langages sont indcidables !
90/137

Modliser le comportement avec UML

Diagrammes dtats-transitions

Retour aux diagrammes dtats-transitions


Utiliss pour modliser : Le cycle de vie des objets Evolution de ltat des objets Comportement face larrive dvnements Intressant si les rponses aux vnements dpendent des tats Mais aussi : protocoles complexes (GUI, ...), processus mtier, ... Pouvoir dexpression variable : Pas daction ni de garde Automates nis Pas de garde + actions limites lutilisation dune pile Automates pile Machines de Turing dans le cas gnral
91/137

Modliser le comportement avec UML

Diagrammes dtats-transitions

Diagrammes sans gardes ni actions


Automates nis un peu particuliers : Remplacement de la lecture de symboles par des vnements : Occurrence dun fait signicatif ou remarquable Rception dun signal Rception dun message Expiration dune temporisation ... Les vnements dclenchent les transitions dun tat vers un autre Evnement perdu si aucune transition spcie pour lui Il y a un tat initial, mais pas toujours dtat nal Exemple :

Etat initial Inactif dcrocher raccrocher

Evnement Actif Etat

92/137

Modliser le comportement avec UML

Diagrammes dtats-transitions

Exemple de diagramme dtat


Modlisation des tats dun processus

Pret suspendu suspendu Pret time out En excution Noyau instr util instr. noyau slection activ

En attente suspendu suspendu E/S arrive E/S attendue Termin (ou zombi) En attente activ

En excution Utilisateur

exit ou signal

Etat final

93/137

Modliser le comportement avec UML

Diagrammes dtats-transitions

Diffrents types dvnements :


Signaux : nomSignal Q0 > Q1 Appels doprations : nomOp(paramtres) Q0 > Q1 Les paramtres peuvent tre typs ou non Evnements temporels : after(qt tps) Q0 > Q1 Passage dans ltat Q1 qt tps aprs larrive dans ltat Q0 Evnements de changement : when(cond) Q0 > Q1 Passage dans ltat Q1 quand cond devient vraie

94/137

Modliser le comportement avec UML

Diagrammes dtats-transitions

Etats imbriqus (ou composites)


Un tat peut contenir des sous-tats Permet de factoriser les transitions de sortie du composite Chaque transition de sortie sapplique tous les sous-tats Une seule transition dentre Exemple :
dcrocher Inactif raccrocher EmissionTonalit chiffre chiffre Conversation connect Connexion Actif

Numrotation termin

Notation alternative pour ltat initial du composite :


Actif Inactif dcrocher EmissionTonalit raccrocher chiffre chiffre Conversation connect termin Connexion
95/137

Numrotation

Modliser le comportement avec UML

Diagrammes dtats-transitions

Etats concurrents (1/2)


Plusieurs sous-automates peuvent tre concurrents : Etat courant = n-uplet de sous-tats Etats de S = {(Z, A), (Z, B ), (X, A), (X, B ), (Y, A), (Y, B )} Excution indpendante des sous-automates Un vt peut dclencher une transition dans plusieurs sous-auto. Sortie possible quand tous les sous-auto. sont dans un tat nal Exemple :
... P e0 S S0 e3 Z X e1 e2 Y e1 B e5 Q ...
96/137

... P e0 S1 A e4 <=> e4 ZA e3 XA e1 e4 XB e1 e1 e2 e3 ZB e2 e1 YB e1 YA e4 e5 Q

Modliser le comportement avec UML

Diagrammes dtats-transitions

Etats concurrents (2/2)


Cas o les sous-automates sont complets : Equivalent au produit dautomates nis Intersection des langages reconnus par les sous-automates Exemple :

... X e1 S X e1 0 P0P1 <=> 0 1 1 0 0 0 e2 Y ... I0P1 1 1 I0I1 e2 Y ...

S0 1 0 1 I0 P0 0 1 I1 P1 1

S1 0

P0I1

97/137

Modliser le comportement avec UML

Diagrammes dtats-transitions

Gardes et transitions composites


Conditions de garde :

garde = expression boolenne A e1 [cond] B

Transition de A vers B ralise si cond est vraie quand e1 arrive Si cond est fausse alors e1 est perdu Transitions composites :
Commande validation [tot=0] Annulation [0<tot<1000] Traitement [tot>=1000] VrifApprov

Factorisation de lvnement dclencheur validation Les gardes doivent tre mutuellement exclusives pour que lautomate soit dterministe
98/137

Modliser le comportement avec UML

Diagrammes dtats-transitions

Actions et activits
Actions (envoi de signaux, invocation doprations, ...) : Peuvent tre excutes : Lors dune transition (ex. : action4) En entrant dans un tat (ex. : action1) En sortant dun tat (ex. : action3) Sont atomiques (ne peuvent tre interrompues par un vnement) Activits : Peuvent tre excutes dans un tat (ex. : activit2) Peuvent tre continues ou non Sont interrompues larrive dun vnement en sortie de ltat Exemple :
A entre / action1 faire / activit2 sortie / action3

e1 / action4

Ordre dexcution : action1 - activit2 - action3 - action4


99/137

Modliser le comportement avec UML

Diagrammes dtats-transitions

Quelques conseils...

Pas de transition sans vnement Lautomate doit tre dterministe (en gnral...) Si plusieurs transitions partant dun tat ont le mme vnement, alors il doit y avoir des gardes qui garantissent le dterminisme Tous les tats doivent tre accessibles depuis ltat initial Sil y a des tats terminaux alors, pour chaque tat non terminal, il doit exister un chemin de cet tat vers un tat terminal (...en gnral)

100/137

Modliser le comportement avec UML

Diagrammes dtats-transitions

Exercice 1 : traduction dun modle en LDS


Connexion entre couches du point de vue de la couche B [F. Biennier]
Modle en LDS (Langage de Description de Systmes)

101/137

Modliser le comportement avec UML

Diagrammes dtats-transitions

Exercice 1 : traduction dun modle en LDS


Connexion entre couches du point de vue de la couche B [F. Biennier]

Modle en LDS (Langage de Description de Systmes) Repos ReqCon de A ConfCon de C / Envoi de ReqCon C

Cnx C ConfCon+ de C / Envoi de ReqData(BonjourB) C [B naccepte pas] / Envoi de ConfCon A Cnx B Ind Data de C

[B accepte] / Envoi de ConfCon+ A Connect

101/137

Modliser le comportement avec UML

Diagrammes dtats-transitions

Exercice 2 : Fonctionnement dun tlphone

Actif dcrocher Inactif raccrocher AttenteNumrotation chiffre[i<9]/i++ chiffre/i=1 chiffre[i==9] Conversation connexion Attente connexion

Numrotation

Complter ce diagramme : Emission dune tonalit quand on dcroche Emission dun bip quand on compose un chiffre Cas dun faux numro ...

102/137

Modliser le comportement avec UML

Diagrammes dtats-transitions

Diagrammes dactivits
Variante des diagrammes dtats-transitions Modlisation de ux

[Image emprunte J.-L. Sourrouille]

103/137

Modliser le comportement avec UML

Diagrammes dtats-transitions

104/137

Principes et patrons de conception oriente objet

Plan du cours

1 2 3 4

Introduction Modliser la structure avec UML Modliser le comportement avec UML Principes et patrons de conception oriente objet

105/137

Principes et patrons de conception oriente objet

De UML la conception oriente objet

Drawing UML diagrams is a reection of making decisions about the object design. The object design skills are what really matter, rather than knowing how to draw UML diagrams. Fundamental object design requires knowledge of : Principles of responsibility assignments Design patterns [Extrait du livre de C. Larman]

106/137

Principes et patrons de conception oriente objet

Principes de conception oriente objet


Ou comment concevoir des logiciels maintenables et rutilisables

Protection des variations : Identier les points de variation et dvolution, et sparer ces aspects de ceux qui demeurent constants Faible couplage : Rduire limpact des modications en affectant les responsabilits de faon minimiser les dpendances entre classes Forte cohsion : Faciliter la comprhension, gestion et rutilisation des objets en concevant des classes but unique Indirection : Limiter le couplage et protger des variations en ajoutant des objets intermdiaires Composer au lieu dhriter : Limiter le couplage en utilisant la composition (boite noire) au lieu de lhritage (boite blanche) pour dlguer une tche un objet Ces principes se retrouvent dans beaucoup de Design Patterns...

107/137

Principes et patrons de conception oriente objet

Patrons de conception (Design patterns)


Patrons architecturaux vs patrons de conception Patrons architecturaux : Structuration globale en paquetages Couches, MVC, Client-serveur, Multi-tiers, ... Patrons de conception : Structuration dtaille en classes Attributs et oprations des classes : qui doit savoir, qui doit faire ? Relations entre classes : dlgation, hritage, ralisation, ... ? Description dun patron de conception Nom Vocabulaire de conception Problme : Description du sujet traiter et de son contexte Solution : Description des lments, de leurs relations/cooprations et de leurs rles dans la rsolution du problme Description gnrique Illustration sur un exemple Consquences : Effets rsultants de la mise en uvre du patron Complexit en temps/mmoire, impact sur la exibilit, portabilit, ...

108/137

Principes et patrons de conception oriente objet

23 patrons du Gang of Four (GoF)


[E. Gamma, R. Helm, R. Johnson, J. Vlissides]

Patrons de cration Ceux quon va voir : Abstract factory, Factory method, Singleton Et les autres : Prototype, Builder Patrons comportementaux Ceux quon va voir : Iterator, Strategy, State, Observer, Command Et les autres : Visitor, Chain of responsiblity, Interpreter, Mediator, Memento, Template method Patrons structuraux Ceux quon va voir : Decorator, Adapter, Facade, Composite Et les autres : Bridge, Flyweight, Proxy

109/137

Principes et patrons de conception oriente objet

Abstract Factory, Factory method, Singleton

Plan du cours

1 2 3 4

Introduction Modliser la structure avec UML Modliser le comportement avec UML Principes et patrons de conception oriente objet Abstract Factory, Factory method, Singleton Iterator, Strategy, State, Observer, Command Adapter, Facade, Decorator, Composite

110/137

Principes et patrons de conception oriente objet

Abstract Factory, Factory method, Singleton

Abstract factory (1/2)


Problme : Crer une famille dobjets sans spcier leurs classes concrtes Illustration sur un exemple : Crer une interface graphique avec widgets (boutons, menus, ...) Point de variation : OS (Linux, OSX, Windows)
AbstractGUIfactory
+creBouton(...) +creMenu(...) 1
...

Client

AbstractGUIfactory f; if (..) f=new GUIfactoryOSX(); else f=new GUIfactoryLinux(); ... Bouton b=f.creBouton(...); Menu m=f.creMenu(...);
...

GUIfactoryOSX
+creBouton(...) +creMenu(...)

GUIfactoryLinux
+creBouton(...) +creMenu(...)

public Bouton creBouton(...){ return new BoutonLinux(...); }

Bouton
+dessine(...)

* Menu +actionMenu(...)

BoutonLinux
+dessine(...)

BoutonOSX
+dessine(...)

MenuLinux
+actionMenu(...)

MenuOSX
+actionMenu(...)

111/137

Principes et patrons de conception oriente objet

Abstract Factory, Factory method, Singleton

Abstract factory (2/2)


Solution Gnrique [Wikipedia] : Remarque :
AbstractFactory et AbstractProduct peuvent tre des interfaces ou des classes abstraites

Avantages du pattern :
Indirection : Isole Client des implmentations des produits Protection des variations : Facilite la substitution de familles de produits Maintien automatique de la cohrence Mais lajout de nouveaux types de produits est difcile...

112/137

Principes et patrons de conception oriente objet

Abstract Factory, Factory method, Singleton

Singleton
Problme : Assurer quune classe possde une seule instance et rendre cette instance accessible globalement Solution gnrique [Wikipedia] :
public static synchronized Singleton getInstance(){ if (_singleton == null) _singleton = new Singleton(); return _singleton; }

Exercice : Utiliser Singleton pour implmenter une classe Factory Attention : Parfois considr comme un anti-pattern... utiliser avec modration !

113/137

Principes et patrons de conception oriente objet

Iterator, Strategy, State, Observer, Command

Plan du cours

1 2 3 4

Introduction Modliser la structure avec UML Modliser le comportement avec UML Principes et patrons de conception oriente objet Abstract Factory, Factory method, Singleton Iterator, Strategy, State, Observer, Command Adapter, Facade, Decorator, Composite

114/137

Principes et patrons de conception oriente objet

Iterator, Strategy, State, Observer, Command

Iterator (1/2)
Problme : Fournir un accs squentiel aux lments dun agrgat dobjets indpendamment de limplmentation de lagrgat (liste, tableau, ...) Illustration sur un exemple en Java :

Exercice : Dessiner le diagramme de squence de somme()

115/137

Principes et patrons de conception oriente objet

Iterator, Strategy, State, Observer, Command

Iterator (2/2)
Solution gnrique :

Avantages : Protection des variations : Client est protg des variations dAggregate Forte cohsion : Sparation du parcours de lagrgation Possibilit davoir plusieurs itrateurs sur un mme agrgat en mme tps

116/137

Principes et patrons de conception oriente objet

Iterator, Strategy, State, Observer, Command

Strategy (1/3)
Problme : Changer dynamiquement le comportement dun objet Illustration sur un exemple : Dans un jeu vido, des personnages combattent des monstres... mthode combat(Monstre m) de la classe Perso ...et le code de combat peut tre diffrent dun personnage lautre Sol. 1 : combat contient un cas pour chaque type de combat Sol. 2 : La classe Perso est spcialise en sous-classes qui rednissent combat

Reprsenter ces solutions en UML. Peut-on facilement : Ajouter un nouveau type de combat ? Changer le type de combat dun personnage ?

117/137

Principes et patrons de conception oriente objet

Iterator, Strategy, State, Observer, Command

Strategy (1/3)
Problme : Changer dynamiquement le comportement dun objet Illustration sur un exemple : Dans un jeu vido, des personnages combattent des monstres... mthode combat(Monstre m) de la classe Perso ...et le code de combat peut tre diffrent dun personnage lautre Sol. 1 : combat contient un cas pour chaque type de combat Sol. 2 : La classe Perso est spcialise en sous-classes qui rednissent combat Sol. 3 : La classe Perso dlgue le combat des classes encapsulant des codes de combat et ralisant toutes une mme interface Reprsenter ces solutions en UML. Peut-on facilement : Ajouter un nouveau type de combat ? Changer le type de combat dun personnage ?

117/137

Principes et patrons de conception oriente objet

Iterator, Strategy, State, Observer, Command

Strategy (2/3)
Diagramme de classes de la solution 3 :

Code Java de la classe Perso :

Comment crer linstance de TypeCombat correspondant niveau ?

118/137

Principes et patrons de conception oriente objet

Iterator, Strategy, State, Observer, Command

Strategy (2/3)
Diagramme de classes de la solution 3 :

Code Java de la classe Perso :

118/137

Principes et patrons de conception oriente objet

Iterator, Strategy, State, Observer, Command

Strategy (3/3)
Solution gnrique : [Wikipedia]

Remarques : Indirection : Isole Context des implmentations de Strategy Protection des variations : Ajout/Supression/Modication de stratgies sans toucher Context Composer au lieu dhriter : Permet de changer dynamiquement de stratgie

119/137

Principes et patrons de conception oriente objet

Iterator, Strategy, State, Observer, Command

State (1/3)
Problme : Modier le comportement dun objet en fonction de son tat Illustration sur un exemple : Les personnages dun jeu peuvent combattre, rsoudre des nigmes et crier :
rsout() Novice crie() combat() [victoire] [dfaite] Confirm crie() [dfaite] combat() combat() [victoire] rsout() Expert crie() rsout()

Sol. 1 : Chaque mthode de Perso contient un cas par tat


public void resout(){ if (etat == NOVICE){ ... ; etat = CONFIRME;} else if (etat == CONFIRME){ ... ; etat = EXPERT;} else { ... ; System.exit(0);} }

Quel est le cot de lajout dun nouvel tat ou dune nouvelle action ?

120/137

Principes et patrons de conception oriente objet

Iterator, Strategy, State, Observer, Command

State (2/3)
Solution 2 : Encapsuler les tats dans des classes spcialisant une classe abstraite

121/137

Principes et patrons de conception oriente objet

Iterator, Strategy, State, Observer, Command

State (3/3)
Solution gnrique : [Wikipedia]

Remarques : Ajout dun nouvel tat facile... ...mais ajout dune nouvelle action plus compliqu Si ConcreteState ne mmorise pas dinformation interne Alors les tats peuvent tre des attributs statiques de Context Sinon il faut une instance de ConcreteState par instance de Context Peut devenir coteux en mmoire ! Point commun avec Strategy : utilise la dlgation pour modier dynamiquement le comportement des instances de Context, comme si elles changeaient de classes

122/137

Principes et patrons de conception oriente objet

Iterator, Strategy, State, Observer, Command

Observer (aka Publish/Subscribe) (1/3)


Problme : Faire savoir un ensemble dobjets (observateurs/abonns) quun autre objet (observable/publieur) a t modi Illustration sur lexemple du jeu vido : La reprsentation (vue) des personnages dpend de leur niveau... ...et on peut avoir plusieurs vues (graphique, sonore, textuelle, etc) ...et on veut se protger des volutions et variations sur ces vues Utilisation du patron architectural Model-View-Controller (MVC) Modle : traite les donnes Vue : afche les donnes, reoit les evt clavier/souris et les envoie au contrleur Contrleur : analyse les evt clavier/souris et active le modle et/ou la vue en consquence Modle est observable, Vue est observateur

Flche pleine = dpendance Pointills = vnements

123/137

Principes et patrons de conception oriente objet

Iterator, Strategy, State, Observer, Command

Observer (aka Publish/Subscribe) (2/3)


obs 0..*

void addObserver(Observer o){ obs.add(o); } void notifyObservers(Object o){ if (!changed) return; clearChanged(); Iterator<Observer> it = obs.iterator(); while (it.hasNext) it.next().update(this,o); }

vueGraphique

modle

public VueGraphiquePerso(Perso p){ perso = p; perso.addObserver(this); ... }

124/137

Principes et patrons de conception oriente objet

Iterator, Strategy, State, Observer, Command

Observer (aka Publish/Subscribe) (2/3)


obs 0..*

void addObserver(Observer o){ obs.add(o); } void notifyObservers(Object o){ if (!changed) return; clearChanged(); Iterator<Observer> it = obs.iterator(); while (it.hasNext) it.next().update(this,o); }

vueGraphique

modle

public VueGraphiquePerso(Perso p){ perso = p; perso.addObserver(this); ... }

124/137

Principes et patrons de conception oriente objet

Iterator, Strategy, State, Observer, Command

Observer (aka Publish/Subscribe) (2/3)


obs 0..*

void addObserver(Observer o){ obs.add(o); } void notifyObservers(Object o){ if (!changed) return; clearChanged(); Iterator<Observer> it = obs.iterator(); while (it.hasNext) it.next().update(this,o); }

vueGraphique

modle

public VueGraphiquePerso(Perso p){ perso = p; perso.addObserver(this); ... }

public void setEtat(Etat e){ etatCourant = e; setChanged(); notifyObservers(null); ... }

Spcifique limplmentation de java.util

124/137

Principes et patrons de conception oriente objet

Iterator, Strategy, State, Observer, Command

Observer (aka Publish/Subscribe) (3/3)


Solution gnrique [Wikipedia] :

Remarques : Faible couplage entre ConcreteObserver* et Subject Les donnes de Subject peuvent tre pousses (dans notify) ou tires (avec des getters) Se retrouve dans de nombreuses API Java Listeners de lAPI Swing pour observer le clavier, la souris, ...

125/137

Principes et patrons de conception oriente objet

Iterator, Strategy, State, Observer, Command

Command (1/3)
Problme : Dcoupler la rception dune requte de son excution Illustration / modle MVC : La vue reoit les vnements utilisateur (actionPerformed et mouseClicked) et les transmet au contrleur (actionX, actionY, actionZ, clicRecu) qui active en consquence le modle et la vue On veut garder lhistorique des commandes et pouvoir annuler les dernires
swing controleur

event

modle vue

126/137

Principes et patrons de conception oriente objet

Iterator, Strategy, State, Observer, Command

Command (2/3)
Encapsuler les commandes dans des objets contenant les informations permettant de les excuter/annuler Stocker les commandes dans une pile

127/137

Principes et patrons de conception oriente objet

Iterator, Strategy, State, Observer, Command

Command (3/3)
Solution gnrique : Client cre les instances de ConcreteCommand Invoker dcide de quand la commande est excute ConcreteCommande dlgue lexcution Receiver Remarques : Dcouple la rception dune requte de son excution Les rles de Client et Invoker peuvent tre jous par une mme classe (par exemple la classe Contrleur) Permet la journalisation des requtes pour reprise sur incident Permet dannuler ou re-xcuter des requtes (undo/redo)

128/137

Principes et patrons de conception oriente objet

Adapter, Facade, Decorator, Composite

Plan du cours

1 2 3 4

Introduction Modliser la structure avec UML Modliser le comportement avec UML Principes et patrons de conception oriente objet Abstract Factory, Factory method, Singleton Iterator, Strategy, State, Observer, Command Adapter, Facade, Decorator, Composite

129/137

Principes et patrons de conception oriente objet

Adapter, Facade, Decorator, Composite

Adapter
Problme : Fournir une interface stable (Adaptateur) un composant dont linterface peut varier (Adapt) Solution gnrique :

Application des principes indirection et protection des variations Exercices : Dessiner le diagramme de squence de lenvoi du message opClient() une instance de Client Comment faire sil y a plusieurs composants (Adapt) diffrents, et que lon veut pouvoir choisir dynamiquement la classe adapte ?

130/137

Principes et patrons de conception oriente objet

Adapter, Facade, Decorator, Composite

Facade
Problme : Fournir une interface simplie (Facade) Solution gnrique [Wikipedia] :

Application des principes indirection et protection des variations

131/137

Principes et patrons de conception oriente objet

Adapter, Facade, Decorator, Composite

Decorator (1/2)
Problme : Attacher dynamiquement des responsabilits supplmentaires un objet Illustration sur un exemple :
Exemple dutilisation : ... Pizza p=new PizzaClassique(); p = new Fromage(p); p = new Jambon(p); ... 1 #pizza public DcorateurPizza(Pizza p){ this.pizza = p; } DcorateurPizza calcPrix() affDescr() @override public double calcPrix(){ return pizza.calcPrix(); }

Pizza calcPrix() affDescr()

PizzaPateFine calcPrix() affDescr()

PizzaClassique calcPrix() affDescr()

@override public double calcPrix(){ return prixFromage + super.calcPrix(); }

Fromage calcPrix() affDescr()

Oignon calcPrix() affDescr()

Jambon calcPrix() affDescr()

public Jambon(Pizza p){ super(p); }

132/137

Principes et patrons de conception oriente objet

Adapter, Facade, Decorator, Composite

Decorator (2/2)
Solution gnrique : Remarques : Composer au lieu dhriter : Ajout dynamique de responsabilits ConcreteComponent sans le modier n dcors 2n combinaisons Inconvnient : Peut gnrer de nombreux petits objets enveloppes [Wikipedia] Utilisation pour dcorer les classes dentre/sortie en Java : Component : InputStream, OutputStream ConcreteComponent : FileInputStream, ByteArrayInputStream, ... Decorator : FilterInputStream, FilterOutputStream ConcreteDecorator : BufferedInputStream, CheckedInputStream, ...

133/137

Principes et patrons de conception oriente objet

Adapter, Facade, Decorator, Composite

Adapter, Facade et Decorator

Points communs : Indirection Enveloppe (wrapper)

Protection des variations Diffrences : Adapter : Convertit une interface en une autre (attendue par un Client) Facade : Fournit une interface simplie Decorator : Ajoute dynamiquement des responsabilits aux mthodes dune interface sans la modier

134/137

Principes et patrons de conception oriente objet

Adapter, Facade, Decorator, Composite

Composite (1/2)
Problme : Reprsenter des hirarchies composant/compos et traiter de faon uniforme les composants et les composs Illustration sur un exemple :
< ?xml version="1.0" ?> <livres> <livre> <titre>Guerre et paix</titre> <auteur>Tolsto</auteur> <nbPages>1572</nbPages> </livre> <livre> <titre>20 ans aprs</titre> <auteur>Dumas</auteur> <publication> <ed>Lebgue</ed> <date>1848</date> </publication> </livre> </livres>
:EltCompXML tag="livres"

:EltCompXML tag="livre"

:EltCompXML tag="livre"

:EltSimpleXML tag="titre" val="Guerre et paix" :EltSimpleXML tag="auteur" val="Tolstoi"

:EltSimpleXML tag="titre" val="20 ans aprs" :EltSimpleXML tag="auteur" val="Dumas"

:EltCompXML tag="publication"

:EltSimpleXML tag="date" val="1848"

:EltSimpleXML tag="nbPages" val="1572"

:EltSimpleXML tag="ed" val="Lebgue"

Comment compter le nombre de tags ?

135/137

Principes et patrons de conception oriente objet

Adapter, Facade, Decorator, Composite

Composite (2/2)
Solution gnrique :
Composant attCommun opCommune() * fils

Feuille attCommun ... opCommune() ...

Composite attCommun ... opCommune() ...

Exercices : Dnir les oprations permettant de : Compter le nombre de ls dun composant Compter le nombre de descendants dun composant Ajouter un ls un composant Comment accder squentiellement aux ls dun Composite ? Comment accder squentiellement aux descendants dun Composite ?

136/137

Principes et patrons de conception oriente objet

Adapter, Facade, Decorator, Composite

Autres patterns ?
Patterns de cration Prototype Builder Patterns structuraux Bridge Flyweight Proxy Patterns comportementaux Visitor Chain of responsiblity Interpreter Mediator Memento Template method

137/137