Академический Документы
Профессиональный Документы
Культура Документы
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
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
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
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
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
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
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
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
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
Introduction
Introduction UML
16/137
Introduction
Introduction UML
Introduction
Introduction 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
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
24/137
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
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
Diagrammes dobjets
27/137
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
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
Diagrammes de classes
30/137
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
Diagrammes de classes
NomClasse3
Diagrammes de classes
33/137
Diagrammes de classes
34/137
Diagrammes de classes
35/137
Diagrammes de classes
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
Diagrammes de classes
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
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
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
Diagrammes de classes
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
Diagrammes de classes
Classes-associations
Association attribue :
C1 n m C2 <=> C1 1 C3 attr1 m attr2 ... n 1 C2
C1
C2
C4
41/137
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
Diagrammes de classes
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
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
Diagrammes de classes
45/137
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
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
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
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
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
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
Diagrammes de classes
48/137
Diagrammes de classes
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
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
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
Diagrammes de classes
Exemple
52/137
Diagrammes de classes
53/137
Diagrammes de classes
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
Diagrammes de classes
Maison
1..*
Pice
1..2
Fenetre
55/137
Diagrammes de classes
Maison
1..*
Pice
1..2
Fenetre
55/137
Diagrammes de classes
Bagage *
Passager * 1 1 Vol
56/137
Diagrammes de classes
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
Diagrammes de classes
Chambre
Grant
57/137
Diagrammes de classes
Chambre
Grant
57/137
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
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
59/137
Diagrammes de paquetage
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
Diagrammes de paquetage
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
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
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 :
Diagrammes de composants
65/137
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
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
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
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
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
Diagrammes dinteraction
Diagrammes de communication : Structuration en multigraphe Numrotation des arcs pour modliser lordre des interactions Exemple :
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
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
Temps
ret1
Dure dactivation
73/137
Diagrammes dinteraction
Diagrammes de squence
Cration et destruction dobjets
o1:T1
Crer
o2:T2
...change de messages...
Dtruire
74/137
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()
75/137
Diagrammes dinteraction
[else]
msg4()
ret
76/137
Diagrammes dinteraction
Diagrammes de squence
Messages polymorphes
afficher()
VueRond
VueCarr
:VueRond afficher()
o2:T2
:VueCarr afficher()
o3:T3
msg1()
msg2()
77/137
Diagrammes dinteraction
78/137
Diagrammes dinteraction
Diagrammes de communication
Prsentation alternative dune squence dinteractions
79/137
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
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
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
Client
Ouvrir la caisse
Caissier
Traiter un retour
Grer la scurit
cas dutilisation
Administrateur systme
83/137
84/137
: Systme
85/137
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
Diagrammes dtats-transitions
0|..|9
0|..|9 e 1|..|9 q5
. .
q3
q4
Diagrammes dtats-transitions
Mots reconnus : 0, 0.123e45, 125, ... Mots non reconnus : 012, 4.5.6, 1e2, ...
q0
1|..|9 0
q1 q2
. .
q3
q4
Diagrammes dtats-transitions
a|...|z e
q1
=e
q0
e e q1 =e,s =e,t s e
q2
a|...|z t
q3
q2
q3
89/137
Diagrammes dtats-transitions
Diagrammes dtats-transitions
Diagrammes dtats-transitions
92/137
Diagrammes dtats-transitions
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
Diagrammes dtats-transitions
94/137
Diagrammes dtats-transitions
Numrotation termin
Numrotation
Diagrammes dtats-transitions
... 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
Diagrammes dtats-transitions
S0 1 0 1 I0 P0 0 1 I1 P1 1
S1 0
P0I1
97/137
Diagrammes dtats-transitions
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
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
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
Diagrammes dtats-transitions
101/137
Diagrammes dtats-transitions
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
101/137
Diagrammes dtats-transitions
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
Diagrammes dtats-transitions
Diagrammes dactivits
Variante des diagrammes dtats-transitions Modlisation de ux
103/137
Diagrammes dtats-transitions
104/137
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
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
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
108/137
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
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
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(...)
Bouton
+dessine(...)
* Menu +actionMenu(...)
BoutonLinux
+dessine(...)
BoutonOSX
+dessine(...)
MenuLinux
+actionMenu(...)
MenuOSX
+actionMenu(...)
111/137
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
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
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
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 :
115/137
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
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
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
Strategy (2/3)
Diagramme de classes de la solution 3 :
118/137
Strategy (2/3)
Diagramme de classes de la solution 3 :
118/137
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
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()
Quel est le cot de lajout dun nouvel tat ou dune nouvelle action ?
120/137
State (2/3)
Solution 2 : Encapsuler les tats dans des classes spcialisant une classe abstraite
121/137
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
123/137
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
124/137
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
124/137
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
124/137
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
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
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
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
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
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
Facade
Problme : Fournir une interface simplie (Facade) Solution gnrique [Wikipedia] :
131/137
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(); }
132/137
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
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
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"
:EltCompXML tag="publication"
135/137
Composite (2/2)
Solution gnrique :
Composant attCommun opCommune() * fils
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
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