Académique Documents
Professionnel Documents
Culture Documents
Objets Avancée
A.U. 2021-2022
Faculté des sciences économiques et de gestion de Sfax
1
Plan
2
Chapitre 1: Rappel
3
❑ Qu’est ce que UML?
❑ UML est un langage. Il ne spécifie ni méthodologie ni processus de
développement
❑ Il peut être utilisé de multiples manières comme support à une méthode
❑ Une notation unifiée standardisée par l’OMG
4
❑ Constituants d’UML : éléments et diagrammes.
❑ Les éléments sont les briques de base du langage. On distingue :
❑ Les éléments structurels (classe, interface, cas d’utilisation, composant,
nœuds, …) ,
❑ Ceux de comportements (message, état, activité, …),
❑ Ceux de regroupement (les paquetages)
❑ Ceux d’annotation (les annotations)
❑ Les relations : dépendance, association, héritage, réalisation.
5
❑Un diagramme est une représentation graphique d’une collection d’éléments
de modélisation, le plus souvent représentés comme un graphe connexe d’arcs
et de nœuds.
❑Un type de diagramme UML véhicule une sémantique précise (un type de
diagramme offre toujours la même vue d'un système)
6
7
Le diagramme des cas d’utilisation
❑ Les cas d’utilisation sont
❑ inventés par Ivar Jacobson
❑ destinés à l ’expression des besoins
❑ centrés sur les utilisateurs
8
…Diagramme de cas d’utilisation
❑ Concepts de base
❑ Acteur :
▪ rôle joué par une personne ou une chose qui interagit avec le système
mais qui lui est extérieure
▪ est caractérisé par un nom qui exprime son rôle
▪ une même personne physique peut être modélisée par plusieurs acteurs
▪ un acteur représenter plusieurs personnes physiques
❑ Cas d’utilisation (UC)
▪ unité fonctionnelle cohérente assurée par le système ou une classe
▪ correspond à un certain type d’interaction entre le système et les acteurs
9
…Diagramme de cas d’utilisation
❑ Scénario
▪ Instance d’un cas d’utilisation, un chemin particulier dans sa combinatoire
▪ suite d'interactions entre les acteurs et le système
▪ Types : nominal, alternatif ou d’exception
10
…Diagramme de cas d’utilisation
❑ Relations entre Ucs
❑ Extension (<<extends>>) : comportement optionnel du système (variation
d’un comportement « normal »)
❑ Inclusion (<<includes>>) : un cas intègre le comportement d’un autre
(factorisation)
❑ Généralisation/spécialisation : spécialisation avec héritage (ajout ou
remplacement de comportement)
11
Exemple de diagramme de Ucs.
12
Diagramme de Ucs avec relations entre les Ucs.
13
Diagramme de classes
1. Définition
❖ Un diagramme de classes est un graphe
qui représente la structure statique d’un
système. Il contient principalement des classes
et leurs relations.
❖Définition
Une classe est une description abstraite d’un
ensemble d’objets du domaine; elle définit leur
structure, leur comportement et leurs relations.
◼ Notation
16
◼ Exemple :
17
◼ Conventions
2. Les noms de classes, des attributs et des méthodes doivent suivre la notation camel case.
Les attributs et les méthodes commencent par des minuscules.
3. Les noms des classes, des attributs et des méthodes doivent être expressifs ce qui
contribue à la bonne lisibilité et à la compréhension du modèle.
18
3. Attributs
◼ Définition :
Un attribut est une propriété nommée de classe qui
porte un ensemble de valeurs que les instances (les
objets) de la classe vont prendre.
19
◼ Exemple :
20
◼ Syntaxe de description des attributs :
Attribut ::=
21
✓ Visibilité : C’est le type d'accessibilité :
+ : public, visible pour tous les clients de la classe
– : private, visible pour la classe seule
# : protected, visible pour toutes les sous-
classes de la classe
~ : package, visible pour toutes les classes du
même paquetage (valeur par défaut)
23
Diagramme de classes d’analyse
25
◼ Exemple
26
◼ Attribut dérivé
Un attribut est, en général, primaire, c. à d.
correspond au plus petit niveau d’information que
l’on veut gérer. Cependant, par commodité de
gestion, on choisit de conserver dans un attribut
le résultat d’un calcul effectué à partir d’autres
attributs. On parle alors d’attribut dérivé. Le nom
d’un attribut dérivé est toujours précédé d’un "/".
• Exemple :
27
4. Opérations
◼ Les opérations mettent en œuvre les
responsabilités d’une classe. Elles modélisent le
comportement de ses objets.
28
◼ Syntaxe de la signature d’une opération :
Opération::= [<visibilité>] <nom> ‘(‘[<ListeParam>] ‘)’
[‘:’ [<typeRetour>] [‘[‘ <multiplicité>‘]’]
[‘{‘ <propriété> [‘,’ <propriété>]* ‘}’]]
✓Visibilité : +, –, #, ~
30
▪ Par convention, s’il existe un paramètre ayant la
direction "return", on ne le représente pas dans la
liste des paramètres. La présence d’un type de
retour renseigne sur la présence de ce paramètre.
Exemple :
toString([return] s : String)
toString() : String
31
✓Propriétés :
• Remarque :
méthode = implantation d’une opération
dont elle spécifie l’algorithme ou la
procédure associée
32
▪ Portée des attributs et des opérations:
Par défaut, la portée des attributs (et des
opérations) est l’instance. Toutefois, certains
attributs (et opérations) sont visibles
globalement dans toute la portée de la classe.
Ils sont partagés par toutes les instances de la
classe. On parle alors d’attribut (ou opération)
statique (static) ou attribut (opération) de
classe.
Exemple :
Attribut de classe
33
5. Objets
◼ Un objet est une instance (ou occurrence) d’une classe. Il possède
une identité, un état et un comportement.
34
◼ Notation et exemple :
◼ Remarque :
• Les objets ne font pas partie du diagramme de classes. On les représente dans
un diagramme à part appelé diagramme d’objets.
35
6. Relations
UML définit plusieurs types de relations entre classes :
❑ Association
❑ Généralisation/Spécialisation
❑ Dépendance
❑…
❖ Associations :
• Une association est une relation statique qui
connecte n classes (n>=2). Le nombre n est
l’arité de l’association.
• Les instances d’une association sont des tuples des
instances des classes reliées par cette association.
On les appelle liens.
• Chaque lien d’une association peut apparaître au
plus une fois.
36
• L’extrémité (ou patte) d’une association peut
être enrichie par un nom appelé rôle qui décrit
comment une classe source voit une classe
destination au travers de l’association.
37
◼ Multiplicité
La multiplicité précise le nombre minimum et le nombre maximum
d’objets d’une classe qui peuvent être liées à un objet de l’autre.
▪ 1 ou 1..1 : un et un seul (multiplicité par défaut)
▪ 0 .. 1 : zéro ou un
▪ N (N entier naturel)
▪ M .. N : de M à N ( M et N entiers naturels)
▪ * ou 0 .. * : de 0 à plusieurs
▪ 1 .. * : de 1 à plusieurs
38
•Exemples :
fournir
Produit 1..* 1..3 Fournisseur
+produits +fournisseurs
fournis
On a attribué à chaque instance de produit entre 1
et 3 (instances de) fournisseurs et un fournisseur
doit fournir au moins un produit et éventuellement
plusieurs.
passer
Client Commande
0..*
40
◼ Associations ternaires (et n-aire)
▪ Notation et exemple :
Département
*
Logiciel 1 Serveur
*
installer
Des logiciels sont installés sur des serveurs sur
l’initiative de départements.
41
▪ Lecture des multiplicités :
Pour une association ternaire, les multiplicités se
lisent de la façon suivante :
Pour un couple d’instances de la classe A et de
la classe B, il y a au minimum r1 instances
de la classe C et au maximum r2 instances.
p1..p2 q1..q2
Classe A Classe B
r1..r2
Classe C
42
Exemple
* *
Logiciel Département
1
Serveur
43
▪ Autre alternative de représentation:
Département
1
*
<<Association ternaire>>
Installation
* *
1 1
Logiciel Serveur
1..* 0..*
Hotêl +clients Personne
0..1 +directeur
+parents
2
Personne
0..*
+enfants 45
◼Association
à navigabilité restreinte :
▪ La navigabilité indique si un rôle est accessible
à partir de la source
▪ Par défaut, une association est navigable dans
les deux sens.
▪ On peut la limiter à un seul sens dans un
modèle.
voter
Électeur Candidat
* 0..1
46
◼ Contraintes
▪ Ce sont des relations sémantiques définies sur
une relation ou sur un groupe de relations. Elles
permettent de restreindre le nombre d'instances
visées.
▪ Elles peuvent s'exprimer :
▪ en langage naturel ou
▪ graphiquement avec un {texte} ou
▪ en OCL (Object Constraint Language)
47
• Contraintes sur les rôles
▪ La contrainte {ordered} : elle est définie sur
un rôle de type collection et spécifie qu’une
relation d’ordre décrit les objets de la
collection.
48
▪ La contrainte {subsets<nomRole>} : Elle
indique qu’une collection est incluse dans une
autre appelée <nomRole>.
49
• Contraintes sur les associations
▪ La contrainte {xor} : Elle indique que tout
objet d’une classe peut participer à l’une des
deux associations mais pas aux deux à la
fois.
Les chefs de services sont aussi des employés affectés aux services qu’ils
dirigent.
51
◼Classe-association
Une classe-association définit une association qui est
en même temps une classe.
Elle connecte des classes entre elles et possède aussi
ses propres caractéristiques.
Elle se comporte comme une vraie classe avec une
structure et un comportement et d’autres relations.
0..* 1..*
Commande Produit
LigneCommande
qtéCommandée
52
Remarques :
▪ Une association qui possède des attributs sans
participer à des relations avec d’autres classes est
appelée association attribuée. Dans ce cas la classe
attachée à l’association n’a pas de nom spécifique.
53
▪ Une association ternaire avec contrainte se
modélise plus facilement à l’aide d’une classe-
association.
0..* 0..*
Departement Logiciel
0..1 Compte
Client
56
❖ Relation de généralisation
▪ Elle définit une relation de classification entre
une classe plus générale et une classe plus
spécifique. La classe spécifique contient par
héritage tous les attributs, les opérations et les
relations de la classe générale et peut en
contenir d’autres.
Classe mère,
classe de base ou Classe A
classe générale
Relation est-un
Classe fille, ou relation is-a
classe dérivée,
Classe B
classe spécialisée
ou classe descendante 57
▪ La généralisation peut être :
▪ simple : unicité du lien de généralisation pour un
objet de la classe spécialisée.
▪ multiple : liens de généralisation multiples pour
un objet de la classe spécialisée vis à vis des
objets des classes du niveau immédiatement
supérieur.
discriminant Véhicule
Milieu Motorisation
Terrestre Marin AMoteur AVoile
Employé
{disjoint}
DirecteurRégional IngénieurCommercial
Personne
{overlapping}
Étudiant Salarié
61
▪ La contrainte {complete} :
▪ Elle indique que la généralisation est terminée.
Il n’est pas possible d’ajouter d’autres sous-
classes. Toute instance de la classe de base est
instance d’au moins une classe dérivée.
Personne
{complete}
Homme Femme
62
▪ La contrainte {incomplete} :
Elle désigne une généralisation extensible. Il existe des instances de la
classe de base qui ne sont pas instances d’une classe dérivée.
Personne
{incomplete, disjoint}
63
• Classes abstraites
Les classes abstraites ne sont pas instanciables
directement.
Elles servent de spécification générale pour manipuler
les objets instances d’une de leurs sous-classes.
Exemple : Salarié
matricule
nom
adresse
salaireBrut() : Réel {abstraite}
getAdresse() : String {requête}
Mode de rémunération {complete}
Mensualisé Horaire
salaireBase nbHeuresMensuelles
heuresSupplémentaires tauxHoraire
salaireBrut() : Réel salaireBrut() : Réel 64
❖ Relation de dépendance
◼ Une dépendance signifie une relation fournisseur/client
entre des éléments d’un modèle où la modification d'un
fournisseur peut avoir un impact sur les éléments de
modèle client.
65
◼ Notation et exemple
66
6. Stéréotypes
◼ Rappel :
Le stéréotype est un ensemble de critères. Il
permet de classifier les éléments de modélisation
selon des critères définis par le développeur.
◼ Stéréotypes de Jacobson :
Pour améliorer la lisibilité des diagrammes de
classes, Jacobson propose les stéréotypes suivants
qui sont par ailleurs prédéfinis dans UML :
▪ Boundary
▪ Entity
▪ Control
67
◼ Boundary (frontière) : classe dont les objets sont
visibles par les acteurs du système. Elle fournit le
moyen de communication du système avec
l’extérieur. Elle peut être une interface graphique, un
objet de protocole de communication (quand l’acteur
est un système informatique), …
Exemple :
<<boundary>>
Fenêtre Fenêtre
Fenêtre
Commande Commande
Commande
<<entity>>
Commande Commande
Commande
69
▪ Control : classe interne du système qui contrôle le
comportement d’un ou plusieurs cas d’utilisation.
Ces classes représentent une activité de contrôle,
une règle de gestion, un chef d’orchestre, un
moyen de couplage entre des objets, etc.
Exemple :
<<control>>
Controleur
Controleur Controleur Commande
Commande Commande
70
7. Enumérations
◼ Une énumération est un type de données dont
les valeurs sont énumérées dans le modèle en
tant que littéraux d'énumération.
◼ Notation et exemple :
71
8. Interfaces
◼ Une interface est une spécification de comportement.
◼ Une interface est un contrat. En réalisant une interface, les classes
sont garantis pour supporter un comportement requis.
◼ Lorsqu'un objet client d'une interface collabore avec celle-ci, il ne
connait pas son type réel mais il sait comment le "manipuler" (quels
messages lui envoyer).
◼ Le but des interfaces est de diminuer le couplage entre deux
classes. L'interface permet de ne présenter au client "que ce qui
l'intéresse".
72
❖Représentation graphique et exemple
73
Diagrammes d’interaction
❑ Une interaction est une communication entre instances des éléments
d’une collaboration.
❑ Un diagramme d’interaction montre comment des instances au cœur
d’un système collaborent et communiquent pour réaliser une certaine
fonctionnalité.
❑ Il apporte un aspect dynamique à la modélisation du système.
❑ Il permet de suivre visuellement les interactions dynamiques entre
objets (instances de classes), et les traitements réalisés par chacun.
❑ Deux types de diagrammes d’interaction : Diagramme de séquence et
Diagramme de communication
74
…Diagrammes d’interaction
❑ Collaboration :
▪ représente un assemblage de rôles d’éléments qui interagissent en vue de réaliser une
fonction donnée.
▪ Exemple :
75
Diagramme de communication
❑ Concepts de base
Nom de l’interaction
Variable
Lignes de vie
Argument
76
Diagramme de séquence
❑ Concepts de base :
Période d’activité
77
…Diagramme de séquence
❑ Fragments d’interaction combinés
▪ Un fragment combiné est ensemble de séquences de messages.
▪ Il permet de décomposer une interaction complexe en fragments suffisamment
simples pour être compris.
▪ Les fragments combinés permettent de décrire des diagrammes de séquence de
manière compacte et concise.
▪ Il existe 13 opérateurs définis dans la notation UML 2.0.
78
…Diagramme de séquence
▪ Un fragment combiné est défini par un opérateur et des opérandes.
▪ Les fragments combinés peuvent faire intervenir l’ensemble des objets participant au
scénario ou juste un sous-ensemble.
▪ Un port d’entrée et un port de sortie peuvent être indiqués pour connaître la manière
dont ce fragment peut être relié au reste du diagramme
79
…Diagramme de séquence
❑ Opérateur « alt »
▪ Il correspond à une instruction de test avec une ou plusieurs alternatives possibles
▪ Il possède deux opérandes ou plus.
▪ Chaque opérande correspond à une alternative
▪ Chaque opérande détient une condition de garde.
▪ La condition « else » est vraie si aucune autre condition n’est vraie.
▪ Exactement un opérande dont la condition est vraie est exécuté.
▪ Si plusieurs opérandes prennent la valeur vraie, le choix est non déterministe.
80
▪ Exemple
81
…Diagramme de séquence
❑ Opérateur « loop »
▪ L’opérateur loop correspond à une instruction de boucle qui permet d’exécuter une
séquence d’interaction tant qu’une condition est satisfaite.
▪ Il est possible aussi d’utiliser une condition portant sur un nombre minimum et
maximum d’exécution de la boucle.
82
▪ Exemple
83
❑ Opérateur « opt »
▪ Il correspond à une instruction de test sans alternative (sans "sinon").
▪ Exemple :
84
❑ Opérateur « ref »
▪ Il permet d’appeler une séquence d’interactions décrite par ailleurs constituant ainsi une
sorte de sous-diagramme de séquence.
85
86
86
❑ Opérateur « break »
▪ Il permet de représenter une situation exceptionnelle correspondant à un scénario de
rupture par rapport à l’interaction englobante.
▪ Le scénario de rupture s’exécute si la condition de garde est satisfaite.
87
Diagramme d’activité
❑ Le diagramme d’activité (DA) met l'accent sur les traitements. Il
représente les règles d’enchaînement des activités et actions dans
un système.
88
…Diagramme d’activité
89
…Diagramme d’activité
❑ Action :
❑ Elle représente une unité de fonctionnalité distincte dans le diagramme d’activité
❑ Elle peut changer l'état du système ou en extrait une information
❑ Elle peut correspondre à un traitement élémentaire proche d’une instruction en
termes de programmation.
❑ Les actions sont des étapes à partir desquelles se construisent les comportements
❑ Notation et exemple :
90
…Diagramme d’activité
❑ Transition et flot de contrôle
❑ Dès qu’une action est achevée, une transition automatique est déclenchée
vers l’action suivante. Il n’y a donc pas d’événement associé à la transition.
❑ L’enchaînement des actions constitue le flot de contrôle.
❑ Notation et exemple :
91
…Diagramme d’activité
❑ Activité :
❑ Une activité représente le comportement d’une partie du système en
termes d’actions et de transitions.
❑ Elle est composée de trois types de nœuds :
▪ nœud d’exécution (actions)
▪ nœud de contrôle (décision, fusion, bifurcation, …)
▪ nœud d’objet.
❑ Elle peut recevoir des paramètres en entrée et en produire en sortie.
92
…Diagramme d’activité
93
…Diagramme d’activité
❑ Nœuds de décision et nœuds de fusion
❑ Un nœud de décision permet de faire un choix entre plusieurs flots sortants
en fonction des conditions de garde de chaque flot.
❑ Il n’a qu’un seul flot en entrée et peut avoir plusieurs flots en sortie.
❑ Un nœud de fusion permet d’avoir plusieurs flots entrants possibles et un
seul flot sortant. Le flot sortant est donc exécuté dès qu’un des flots
entrants est activé.
❑ Le nœud de fusion est le symétrique du nœud de décision.
94
❑ Exemple :
Nœud de décision
Nœud de fusion
95
…Diagramme d’activité
❑ Nœud de bifurcation et nœud de jonction
❑ Un nœud de bifurcation (fourche) permet à partir d’un flot unique entrant
de créer plusieurs flots concurrents en sortie de la barre de
synchronisation.
❑ Un nœud de jonction permet, à partir de plusieurs flots concurrents en
entrée de la synchronisation, de produire un flot unique sortant. Le nœud
de jonction est le symétrique du nœud de bifurcation.
96
❑ Exemple
Nœud de jonction
Nœud de bifurcation
97
…Nœuds de contrôle
❑ Nœud initial :
❑ C’est un nœud à partir duquel le flot débute lorsque l’activité est invoquée
❑ Il ne doit pas avoir d’arc entrant
❑ Une activité peut avoir plusieurs nœuds initiaux
98
❑ Notation et exemple :
Nœud initial
99
…Diagramme d’activité
❑ Partitions
❑ Il est possible d’organiser le diagramme d’activité en couloirs d’activités
appelés partitions
❑ Chaque partition contient un groupe d’actions ayant des caractéristiques
communes et les flux qui leurs sont reliés
❑ Les partions sont souvent utilisés pour représenter des unités
organisationnelles dans un modèle métier
100
Diagramme d’activité avec partitions
101
…Diagramme d’activité
❑ Nœuds et flots d’objets
❑ Broches d’entrée et de sortie
▪ Pour spécifier les valeurs passées en argument à une action et les valeurs de retour, on
utilise des broches (pins) d’entrée ou de sortie.
▪ Un nom et un type de donnée peuvent être associés au pin.
▪ Un paramètre peut être de type objet.
▪ L’action ne peut débuter que si l’on affecte une valeur à chacune de ses pins d’entrée.
▪ Quand l’action se termine, une valeur doit être affectée à chacune de ses pins de sortie.
102
…Diagramme d’activité
❑ Flot d’objets
▪ Un flot d’objets permet de passer des données d’une action à une autre.
▪ Un arc reliant un pin de sortie à un pin d’entrée est, par définition même des pins, un
flot d’objets
▪ Dans un flot d’objets, le type du pin récepteur doit être identique ou parent du type du
pin émetteur.
▪ Le nom d’un état, ou d’une liste d’états, de l’objet peut être précisé entre crochets après
ou sous le type de l’objet.
103
Pin de sortie
Pin d’entrée
105
…Diagramme d’activité
❑ Action acceptation d'événement : est utilisé pour représenter le traitement
d'un événement externe. On attend qu'un événement remplissant les
conditions spécifiées se produise pour l’accepter et passer à l’action
suivante.
❑ Action acceptation d’événement temporel : Elle est utilisée pour
représenter l’attente de l’occurrence d’un événement temporel.
❑ Envoi de signal :
▪ Il crée une instance d'un signal à partir de ses entrées et l'envoie à l'objet cible
▪ L’objet cible doit être spécifié
▪ L'envoie à l'objet cible peut invoquer une transition d'états ou une autre activité
106
▪ Notation et exemples :
Acceptation d’événement
Envoi de signal
Objet cible
Acceptation d’événement temporel
107
…Diagramme d’activité
❑ Activité structurée :
❑ Elle est utilisée pour créer des groupes logiques de nœuds et d'arcs
d'activité.
❑ L'exécution de ses nœuds d'activité ne commence pas tant que toutes les
données d'entrée ne sont pas reçues.
❑ Les données de sortie provenant d'une activité structurée ne sont pas
accessibles aux autres nœuds dans l'activité et le flux ne continue pas sa
progression dans l'activité tant que l'exécution de toutes les actions de
l'activité structurée n'est pas terminée.
108
▪ Notation et exemple :
109
Diagramme de paquetages
❑ Paquetage ou package :
❑ est un mécanisme général de regroupement d’éléments UML (diagrammes,
classes, UCs, paquetages, …)
❑ permet d’organiser les éléments d’un modèle pour qu’il soit plus
compréhensible.
❑ est utilisé pour modéliser l'architecture du système
❑ représente un espace de noms
110
…Diagramme de paquetages
❑ Exemples :
111
…Diagramme de paquetages
❑ Dépendance entre paquetages
❑ Les éléments d’un paquetage emboîté voient les éléments de leur
paquetage ou des paquetages englobants.
❑ L’accès d’un paquetage englobant aux éléments d’un paquetage emboîté
n’est possible que si une relation de dépendance est définie entre les
paquetages concernés.
❑ Une relation de dépendance doit exister dès qu’un paquetage importe des
éléments d’un autre paquetage.
112
…Diagramme de paquetages
113
Diagramme d’états-transitions
❑ Le diagramme d'états-transitions (ou machine à états) décrit le
comportement interne d'un objet à l'aide d'un automate à états finis.
❑ Il présente les séquences possibles d'états et d'actions qu'une instance
de classe peut traiter au cours de son cycle de vie en réaction à des
événements discrets (de type signaux, invocations de méthode, etc.).
❑ On peut l’utiliser aussi pour décrire le comportement de cas
d'utilisation, de sous-systèmes ou d’une méthodes.
❑ Il est le seul diagramme UML qui offre une vision complète et non
ambiguë de l'ensemble des comportements de l'élément auquel il est
attaché.
114
…Diagramme d’états-transitions
❑ Un DET est une machine à états liée à une entité (objet de classe,
système, sous-système, UC, …). Il décrit ses évolutions possibles :
❑ la liste des états que peut prendre l’objet durant son CV
❑ les événements déclenchant les changements d’états
❑ les éventuelles conditions qu’il doit vérifier avant de changer d’état
❑ les opérations qui le font passer d'un état à un autre, et l’ordre d’invocation de
ces opérations
…Diagramme d’états-transitions
❑ Un diagramme d’états transitions (DET) est un graphe qui
représente un automate à états finis.
Evt3
[ Condition ] Evt1
Etat1
Etat2
Evt2
Evt4
…Diagramme d’états-transitions
❑ Etat d’un objet
❑ L’état d’un objet est une situation donnée durant la vie de cet objet.
❑ Il a une durée finie, variable selon la vie de l’objet.
❑ Dans un état donné, l’objet est tout simplement en attente d’événements.
❑ L’état d'un objet est déterminé par l’ensemble des valeurs de ses attributs et
par la présence de liens avec d’autres objets.
▪ Syntaxe :
<EvénementAppel>::=<nomOp>[‘(‘<attribut>[‘,’ attribut>]*’)’]
▪ Exemple :
Evénements appel
▪ L’expression relative s’évalue en une durée écoulée depuis l’entrée dans l’état
source de la transition portant l’événement.
▪ Syntaxe :
<EvénementTemp> ::= <TmpRel> | <TmpAbs>
<TmpRel> ::= ‘après’ <expression> Evénement temporel
<TmpAbs> ::= ‘à’ <expression>
Evénement modification
❑ Garde :
❑ Définition
Une garde (ou condition de garde) est une condition booléenne dont dépend le
déclenchement d’une transition lors de l’occurrence d’un événement.
Evt [Condition]
Etat A Etat B
Etat de sous-machine
125
❑ Exemple (suite) :
126
…Diagramme d’états-transitions
❑ Etat composite
▪ Un état composite est un état décomposé en régions contenant chacune un ou plusieurs
sous-états.
▪ Quand un état composite comporte plus d’une région, il est qualifié d’état orthogonal.
▪ Lorsqu’un état orthogonal est actif, un sous-état direct de chaque région est
simultanément actif.
▪ Un état composite ne comportant qu’une région est qualifié d’état non orthogonal.
127
…Diagramme d’états-transitions
❑ Implicitement, tout diagramme d’états-transitions est contenu dans une
région.
❑ L’utilisation d’états composites et d’états de sous-machine permet de
développer une spécification par raffinements.
128
❑ Exemple:
▪ Il permettent de définir des transitions composites qui factorisent et partagent des connexions :
◦ Plusieurs transitions peuvent se rejoindre puis partager des actions
◦ Une transition peut se séparer en des connexions mutuellement exclusives.
▪ On utilise pour cela des pseudo-états particuliers :
◦ Les points de jonction
e1[ a>0 ]
b=0 Etat4
133
…Diagramme d’états-transitions
❑ Point d’option (dynamique) :
▪ Les gardes situées en aval du point d’option sont évaluées quand le point de choix est
atteint.
▪ Si, quand le point de choix est atteint, aucun segment en aval n’est franchissable, le
diagramme est mal formé.
▪ Si plusieurs segments sont franchissables, l’une d’entre elles est choisie aléatoirement.
…Diagramme d’états-transitions
❑ Exemple
135
…Diagramme d’états-transitions
❑ il est possible de masquer les sous-états d’un état ou d’un état de sous-
machine et de les définir dans un autre diagramme. Ceci nécessite parfois
l’utilisation de pseudo-états appelés points de connexion.
❑ Il est possible d’entrer ou de sortir d’un état composite de plusieurs façons.
❑ Les points de connexion sont des points d’entrée et de sortie portant un
nom, et situés sur la frontière d’un état composite.
136
…Diagramme d’états-transitions
❑ Point d’entrée
▪ Un point d’entrée peut être ajouté à une machine à état ou à un état composite.
▪ Dans chaque region d’une machine à état ou d’un état composite, le point d’entrée
possède une transition vers un noeud appartenant à la même region.
❑ Point de sortie
▪ Un point de sortie appartient à une machine à état ou à un état composite.
▪ L’entrée à un point de sortie d’une region d’état composite ou d’une machine à états
référencée par un état de sous-machine implique la sortie de cet état et le
déclenchement d’une transition qui a ce point de sortie comme source dans la machine
à état englobante.
137
…Diagramme d’états-transitions
❑ L’entrée au pseudo-état terminal implique que l’exécution de la machine à
état est terminée.
❑ Notation :
138
❑ Exemple :
139
❑ Exemple (suite) :
141
❑ Exemple :
142
…Diagramme d’états-transitions
❑ Remarques
❑ Toutes les classes du modèle statique ne requièrent pas nécessairement un
diagramme d’états-transitions. Il faut donc trouver celles qui ont un
comportement dynamique complexe nécessitant une description poussée
du comportement. Cela correspond à l’un des 2 cas :
▪ Les objets de la classe peuvent-ils réagir de façon différente à l’occurrence du même
événement ?
143
❑ Utilisation des diagrammes états-transitions :
❑ En phase d'analyse :
▪ Description de la dynamique du système vu de l'extérieur
▪ Synthèse des scénarios liés aux cas d'utilisation
▪ Événements = action des acteurs
❑ En phase de conception :
▪ Description de la dynamique d'un objet particulier
▪ Evénements = appels d'opérations
144
Chapitre 2 : les principes
de conception SOLID
145
❑ Quand les besoins (fonctionnels ou techniques) des utilisateurs
changent ou évoluent , on sera amené à modifier la conception de
l’application
146
Objectifs de la COO
❑ Objectifs d’une bonne conception OO :
❑ Produire des conceptions évolutives, maintenables
❑ Eviter d’obtenir un code rigide, fragile et/ou non réutilisable
147
Couplage fort/Couplage faible
❑ Couplage fort
❑ Quand une classe A est lié à une classe B, on dit que la classe A est
fortement couplée à la classe B.
❑ La classe A ne peut fonctionner qu’en présence de la classe B.
❑ Si une nouvelle version de la classe B (soit B2), est créée, on est obligé de
modifier dans la classe A.
148
…Couplage fort/Couplage faible
❑ Modifier une classe implique :
❑ Il faut disposer du code source.
❑ Il faut recompiler, déployer et distribuer la nouvelle application aux clients.
❑ Risque de problèmes au niveau de la maintenance de l’application
149
…Couplage fort/Couplage faible
❑ Exemple :
La méthode
calculerStatistique( )
appelle
getTempératures ( )
150
…Couplage fort/Couplage faible
❑ Couplage faible :
❑ Pour utiliser le couplage faible, nous devons utiliser les interfaces.
❑ Considérons une classe A et une classe B qui implémente une interface IB.
Si A est liée à l’interface IB par une association, on dit que A et B sont liées
par un couplage faible.
151
…Couplage fort/Couplage faible
❑ Exemple :
152
Principes de la COO
❑ Références :
153
…Principes de la conception OO
154
…Principes de la conception OO
❑ Single Responsibility Principle : Principe de responsabilité unique
155
Principe de responsabilité unique
❑ Un module (classe, méthode, paquet, etc.) devrait n’avoir qu’une
responsabilité unique.
156
157
❑ Une classe qui respecte le SRP est
❑ fortement cohésive. La cohésion (la cohésion fonctionnelle) est une mesure
de l’étroitesse des liens et de la spécialisation des responsabilités d’une
classe (ou d’élément).
❑ facile à comprendre
❑ facile à réutiliser
❑ facile à maintenir
❑ robuste (contrairement aux classes fragiles, constamment affectées par le
changement)
158
Principe d’ouverture-fermeture
❑ Un code doit être ouvert à l’extension mais fermée à la
modification
159
…Principe d’ouverture-fermeture
160
161
Principe de substitution de Liskov
❑ Les instances d’une classe doivent être remplaçables par des
instances de leurs sous-classes sans altérer l’application.
162
163
Principe de ségrégation des interfaces
❑ Les clients d’une interface ne doivent pas être obligés de dépendre
de méthodes (de cette interface) qu’ils n’utilisent pas.
164
…Principe de ségrégation des interfaces
❑ Exemple :
165
166
167
Principe d’inversion des dépendances
❑ Il s’agit de réduire les dépendances entre les classes concrètes
168
…Principe d’inversion des dépendances
❑ Exemple :
169
Chapitre 3 : les patrons
de conception
170
Patrons de conception
❑ Notion de « patron » d’abord apparue en architecture :
❑ l’architecture des bâtiments
❑ la conception des villes et de leur environnement
171
…Patrons de conception
❑ Un patron de conception est une solution générale et réutilisable
d’un problème récurrent ; (formalisation de bonnes pratiques)
172
…Patrons de conception
173
…Patrons de conception
❑ Pourquoi définir des patrons de conception ?
❑ Construire des systèmes plus extensibles, plus robustes au changement
❑ Capitaliser l’expérience collective des informaticiens
❑ Réutiliser les solutions qui ont fait leur preuve
174
…Patrons de conception
❑ Patron de conception dans le cycle de développement
❑ Intervient en conception détaillée
❑ Reste indépendant du langage de programmation
❑ Types de patrons :
❑ Création
❑ Comportement
❑ Structure
175
…Patrons de conception
❑ Comment décrire un patron de conception ?
❑ Nom du patron
❑ Problème : Description du sujet à traiter et de son contexte
❑ Solution : Description des éléments, de leurs relations/coopérations et de
leurs rôles dans la résolution du problème
▪ Description générique
▪ Illustration sur un exemple
❑ Conséquences : Effets résultant de la mise en œuvre du patron; complexité
en temps/mémoire, impact sur la flexibilité, portabilité, ...
176
Le patron Strategy
❑ Problème : Modéliser la validation de données dans un champ
texte. La validation peut être numérique, alphanumérique ou du
numéro de téléphone.
❑ Solution 1 :
177
…Le patron Strategy
❑ Critique de la solution :
❑ Autant de classes que d’algorithmes de validation
❑ Héritage de toutes les propriétés malgré que la différence est uniquement
dans la méthode de validation
❑ Que faire si l’on veut ajouter des champs texte sans validation ?
❑ Que faire si l’on veut changer la méthode de validation alphanumérique afin
d’inclure (ou d’éliminer) certain caractères ?
178
…Le patron Strategy
❑ Solution 2 :
❑ Extraire le comportement de validation et définir une interface commune à
tous les comportements possibles
❑ Créer les classes comportant les algorithmes de comportement à partir de
l’interface commune.
❑ Ajouter dans l’objet concerné (contexte) un attribut pour le comportement
179
…Le patron Strategy
180
…Le patron Strategy
❑ Le patron Strategy:
181
…Le patron Strategy
❑ Le patron Strategy cherche principalement à séparer un objet de
ses comportements/algorithmes en encapsulant ces derniers dans
des classes à part.
❑ Conséquences :
❑ Il est beaucoup plus facile de se retrouver dans le code principal
❑ Il est beaucoup plus facile d’enlever, d’ajouter et de modifier un
comportement
❑ On diminue l’utilisation de tests conditionnels
❑ On élimine la redondance et le couper/coller
❑ On accroît la réutilisabilité du code ainsi que sa flexibilité
182
Le patron Observer
❑ Problème :
❑ Ecrire une application pour suivre et afficher les conditions météorologiques
(température, humidité, pression)
❑ Mettre à jour et afficher les conditions actuelles , les statistiques
météorologique et les prévisions météo.
❑ Pouvoir étendre l’application par d’autres facteurs météorologiques
183
…Le patron Observer
❑ Solution 1 :
184
…Le patron Observer
❑ Critique de la solution :
❑ Que faire si l’on veut ajouter un autre afficheur sans avoir la possibilité de
modifier le code de la classe DonneesMeteo?
❑ Comment notifier les afficheurs des modifications d’états sans connaitre
leurs types ?
❑ Comment supprimer des afficheurs sans toucher au code?
185
❑ Solution 2 :
186
…Le patron Observer
L’observable
187
…Le patron Observer
❑ Le patron Observer définit une dépendance 1-à-plusieurs entre
des objets de façon qu’à chaque changement de l’état de l’objet,
tous ces dépendants sont notifiés et mis à jour automatiquement.
❑ Conséquences :
❑ Deux objets, qui sont faiblement couplés, entrent en interaction avec très
peu de connaissance de l’un envers l’autre→ plus d’indépendance et de
flexibilité
❑ On peut ajouter/remplacer/supprimer un observateur à tout moment sans
toucher au sujet
❑ On peut réutiliser le sujet ou l’observateur facilement
188
Le patron State
❑ Problème :
❑ Le comportement des méthodes d’une commande dépendent de son état
actuel
❑ Comment faire passer une commande d’un état à un autre sans vérifier, à
chaque appel d’une opération, son état actuel?
❑ Comment concevoir les états d’une commande et les transitions entre eux?
189
…Le patron State
❑ Solution 1 :
❑ Critique de la solution :
❑ Il n’est pas possible de représenter les transitions légales et les transitions
illégales
❑ Il n’est pas possible de définir les
❑ s liées aux transitions entre les états
190
…Le patron State
❑ Solution 2 :
❑ Isoler les comportements dépendants des états dans des classes différentes.
❑ Faire corresponde à chaque état une classe qui décrit les activités et les
transitions attachées à l’état qu’elle représente.
191
…Le patron State
❑ Conception du diagramme d’états/Transitions :
192
…Le patron State
❑ Le patron State :
193
…Le patron State
❑ Le patron State est un patron de comportement
194
Le patron Facade
❑ Problème :
❑ Le système contient un sous-système complexe avec plusieurs interfaces.
❑ Certaines de ces interfaces présentent des opérations qui ne sont pas utiles
au reste système
❑ Le nombre de liens de dépendance avec les éléments du sous système est
élevé
❑ Le code ressemble à un plat de spaghetti
195
…Le patron Façade
❑ Solution :
❑ Utiliser une interface présentant uniquement les opérations utiles
❑ Créer une classe, la façade, qui présente ces opérations réellement
nécessaires.
196
…Le patron Façade
❑ Patron Façade :
❑ Objectifs :
▪ Fournir une interface unique en remplacement d’un ensemble d’interfaces d’un sous-
système
▪ Définir une interface de haut niveau pour rendre le sous-système plus simple
d’utilisation
❑ Consequence :
▪ Isoler les parties d’un sous-système, utiles à la partie cliente.
197
…Le patron Façade
Sous-système
198
Le patron Singleton
❑ Problème :
❑ Créer un fichier de journalisation unique dans lequel seront conservés tous les
événements survenus au cours de l’exécution de notre application
❑ Solution 1 :
❑ Critique de la solution :
❑ Utiliser directement le constructeur va multiplier le nombre de fichiers de
journalisation.
199
…Le patron Singleton
❑ Solution 2 :
200
❑ Le patron Singleton
201
…Le patron Singleton
❑ Le patron Singleton est un patron de création
❑ Il garantit qu’une seule instance d’une classe sera créée tout le long
de l’exécution d’une application (Cas d’une ressource système,
d’une connexion à une base de données,…)
202
Le patron Composite
❑ Problème :
❑ Modéliser les entités métier d’un petit magasin qui vend des équipements
sportifs : balles, ballons, serviettes, poids d’haltères et barres d'haltères. Les
produits se vendent soit en pièces détachées, soit en ensemble (l'haltère
avec un jeu de 5 paires de poids, 2 raquettes et 6 balles, etc).
❑ Le prix d'un ensemble est la somme des prix de ses parties (composées ou
non) moins 10% ;
❑ Le code barre est spécifique à chaque produit vendu qu'il soit composé ou
non ;
203
❑ Solution 1 :
204
❑ Critique de la solution :
❑ Des attributs inutiles (dont la valeur reste à null) vont être ajoutés à chaque
ensemble.
❑ L’ajout d’un nouveau composant nécessite la modification du code
205
❑ Solution 2 :
206
❑ Le patron Composite :
207
❑ Le patron Composite est un patron de structure
208
Le Patron Decorator
❑ Problème :
❑ Mettre en œuvre un système de gestion des réservation de terrains de
tennis. Il existe deux types de terrains : les terrains en dur et les terrains en
gazon. Le client peut aussi réserver des balles de tennis et des raquettes.
Leurs prix s’ajoute alors au prix du terrain.
209
…Le Patron Decorator
❑ Solution 1 :
210
…Le Patron Decorator
❑ Critique de la solution 1 :
❑ Le nombre de classes augmente avec le nombre d’options. Avec 3 types de
terrains et 4 options on aura 30 classes → Explosion du nombre de classes.
❑ Il n’est pas possible de choisir plusieurs fois la même option
211
…Le Patron Decorator
❑ Solution 2 :
❑ Critique de la solution 2 :
❑ Tout ajout d’une nouvelle option va entrainer la modification des trois
classes → Code ouvert à la modification.
212
…Le Patron Decorator
❑ solution 3 :
213
…Le Patron Decorator
t est un terrain en
gazon sans options
TerrainGazon t (non décoré)
calculerPrix()
t1 est un terrain. C’est
l’objet t enveloppé Objet TerrainGazon
dans un objet Balle
Balle t1 calculerPrix()
calculerPrix() TerrainGazon t
214
…Le Patron Decorator
t2 est un terrain. C’est l’objet t1
enveloppé dans un objet Raquette.
215
…Le Patron Decorator
❑ Le patron Decorator :
216
❑ Le patron Decorator est un patron de structure
❑ Objectifs du patron Decorator
❑ Ajouter dynamiquement des responsabilités (non obligatoires) à un objet.
❑ Eviter de sous-classer la classe pour rajouter ces responsabilités.
❑ Conséquence :
❑ Les responsabilités des classes sont isolées
❑ L’héritage est une forme d’extension qui n’est pas nécessairement la
meilleure pour obtenir la flexibilité d’une conception
217
❑ Les classes de décorations sont utilisées pour envelopper les composants
concrets.
❑ Les décorateurs changent le comportement de leurs composants tout en
ajoutant des nouvelles fonctionnalités
❑ On peut envelopper un composant dans n’importe quel nombre de
décorateurs.
218
Le patron Abstract Factory
❑ Problème :
219
❑ Solution :
Partie
standard
Partie variable
Factory
Method
Product
Concrete
Product
220
…Le patron Abstract Factory
❑ Le patron Abstact Factory
221
…Le patron Abstract Factory
❑ Le patron Factory Method est un patron de création
❑ Objectif : Fournir une interface pour créer des objets d'une même
famille sans préciser leurs classes concrètes.
222
Chapitre 4 : Patrons
d‘architecture logicielle
223
Architectures logicielles
❑ Qu’est ce qu’une architecture logicielle ?
❑ Une architecture logicielle définit la structuration d'un système informatisé
en termes de composants et d'organisation de ses fonctions.
❑ Contrairement aux spécifications produites par l’analyse fonctionnelle, le
modèle d'architecture ne décrit pas ce que doit réaliser un système
informatique ("le quoi") mais plutôt comment il doit être conçu de manière
à répondre aux exigences.
224
❑ Comment décrire une architecture logicielle ?
❑ Décrire l’organisation générale d’un système et sa décomposition en sous-
systèmes ou composants
❑ Déterminer l’interfaçage entre les sous-systèmes en termes de classes
(façade par exemple) et d’interfaces
❑ Décrire les interactions et le flot de contrôle entre les sous-systèmes
❑ Décrire également les composants utilisés pour implanter les
fonctionnalités des sous-systèmes
▪ Les propriétés de ces composants
▪ Leur contenu (e.g., classes, autres composants)
▪ Les machines ou dispositifs matériels sur lesquels ces modules seront déployés
225
❑ Pourquoi concevoir une architecture logicielle ?
❑ Construction : fournir un plan pour le développement et l’intégration des
modules d’une application en mettant en évidence les composants et les
dépendances entre eux. Ainsi les développeurs peuvent travailler sur des
parties individuelles du système
❑ Compréhension : facilite la compréhension des grands systèmes complexes
en donnant une vue de haut-niveau de leur structure et de leurs
contraintes. Les motivations des choix de conception sont ainsi mis en
évidence
226
❑ Évolution : mettre en évidence les points où un système peut être modifié et
étendu. La séparation composant/connecteur facilite une implémentation de type
« plug-and-play»
❑ Réutilisation : favoriser l’identification des éléments réutilisables, parties de
conception, composants, caractéristiques, fonctions ou données communes
❑ Analyse : offrir une base pour l’analyse plus approfondie de la conception du
logiciel, analyse de la cohérence, test de conformité, analyse des dépendances
❑ Gestion : contribuer à la gestion générale du projet en permettant aux différentes
personnes impliquées de voir comment les différents morceaux seront agencés.
L’identification des dépendance entre composants permet d’identifier où les délais
peuvent survenir et leur impact sur la planification générale
227
❑ Quelles sont les différentes vues (structurelles) d’une architecture
logicielle ?
❑ Vue logique : Description logique du système décomposé en sous-systèmes
(modules + interface)
❑ Vue d’implémentation : Description de l’implémentation (physique) du
système logiciel en termes de composants et de connecteurs
❑ Vue de déploiement : Description de l’intégration et de la distribution de la
partie logicielle sur la partie matérielle
228
❑ Comment développer la vue logique de l’architecture ?
❑ Commencer par une esquisse de l’architecture
▪ En se basant sur les cas d’utilisation, décomposer le système en sous-systèmes
▪ Déterminer les principaux composants requis (paquetages, classes, interfaces)
▪ Sélectionner un style architectural (patrons, framework)
❑ Raffiner l’architecture
▪ Identifier les principales interactions entre les composants et les interfaces requises
▪ Décider comment distribuer les données et les fonctionnalités entre les différents
composants
229
❑ Considérer chacun des cas d’utilisation et ajuster l’architecture pour qu’il
soit réalisable
❑ Détailler l’architecture et la faire évoluer
230
Patron MVC
❑ Modèle-Vue-Contrôleur (MVC) :
❑ Modèle d’architecture logicielle destiné aux interfaces graphiques
❑ Il est inventé en 1978 par Trygve Reenskaug (Univ. Oslo). Il a été utilisé la première
fois pour créer des interfaces graphiques avec le langage de
programmation Smalltalk en 1980.
❑ Il propose une solution générale au problème de la structuration du code d’une
application (web)
❑ Il définit des règles qui déterminent dans quelle couche de l’architecture, et dans
quelle classe de cette couche, doit être intégrée une fonctionnalité spécifique
❑ Il est très répandu et accepté comme un des patrons menant à une organisation
rigoureuse et logique du code.
❑ Il est utilisé par de nombreux frameworks pour applications web tels que ASP.NET
MVC, Spring ou Angular Js.
231
Description
❑ Une application conforme au patron MVC doit comporter trois
types de modules : les modèles, les vues et les contrôleurs
232
❑ Le modèle
❑ Il contient les données ainsi que de la logique en rapport avec les données:
validation, lecture et enregistrement
❑ Il représente les objets métier du domaine de l’application
❑ Il est indépendant de la vue et du contrôleur et ne les utilise pas.
233
❑ La vue
❑ Il s’agit d’une IHM (Interface Homme Machine)
❑ Elle représente ce que l'utilisateur a sous les yeux
❑ Elle se sert du modèle
❑ Elle contient des éléments visuels nécessaires pour afficher les données provenant
du modèle
❑ Elle peut être :
▪ une application graphique Swing, AWT, SWT pour Java (Form pour C#…) ;
▪ une page web ;
▪ un terminal Linux ou une console Windows ;
▪ etc.
234
❑ Le contrôleur
❑ C'est cet objet qui a pour rôle de contrôler les données.
❑ Il traite les actions de l'utilisateur et modifie les données du modèle et de la
vue Il permet de faire le lien entre la vue et le modèle
235
❑ Le modèle ne se sert ni de la vue ni du contrôleur,
❑ Le modèle peut leur envoyer des messages.
❑ Il y a deux liens entre la vue et le modèle:
❑ la vue lit les données du modèle
❑ La vue reçoit des messages provenant du modèle (notification de changement)
❑ Un même modèle peut être utilisé par plusieurs vues (dans la mesure où une
vue est associée à un modèle et un modèle est indépendant).
❑ Le contrôleur dépend de la vue et du modèle :
❑ la vue comporte des éléments visuels que l'utilisateur peut actionner
❑ Le contrôleur répond aux actions effectuées sur la vue et modifie les données du modèle
236
❑ Dans le modèle MVC, il est généralement admis que la vue puisse
consulter directement le modèle (lecture) sans passer par le
contrôleur. Par contre, elle doit nécessairement passer par le
contrôleur pour effectuer une modification (écriture).
237
❑ Le patron MVC est la composition de trois patrons : Composite,
Strategy et Observer :
❑ Composite : La vue est un ensemble imbriqué de composants (fenêtres,
panneaux, boutons, champs de texte, …). Ces composants sont soit des
composites, soit des feuilles (leaf dans le patron)
❑ Strategy : La vue constitue le contexte du patron. Elle n’est concernée que
par les aspects visuels de l’application et délègue son comportement au
contrôleur. Donc, c’est le contrôleur qui implémente la stratégie.
❑ Observer : le modèle étant l’observable, il notifie les vues et les contrôleurs
des changements qu’il subit.
238
Le patron MVP
❑ Le patron MVP (Model View Presenter) est dérivé du patron MVC
239
240
Le patron MVVM
❑ Il a été créé en 2004 par Microsoft.
241
242
❑ Le modèle : le modèle reste le même que celui de MVC. C'est la
couche qui décrit et qui se porte responsable de l'intégrité des
données manipulées par l'application. L'interaction avec la base de
données serait l'une de ses responsabilités.
❑ La vue/contrôleur :
❑ Son rôle est de présenter les données qui lui sont fournies par
le ViewModel et gérer les interactions utilisateur. Chaque vue est couplée
avec un ViewModel.
❑ Les vues n'ont pas de référence vers le modèle, mais les contrôleurs non
plus. Le seul vis-à-vis qui garantira la connexion entre les vues et leurs
modèles c'est le ViewModel
243
❑ Le View Model :
❑ C'est plutôt une représentation logique de la vue.
❑ Il contient des propriétés qui détaillent l'état de chaque composant
d'interface utilisateur. Par exemple, le texte formaté d'un champ TextField,
ou l'état d'un Switch (activé ou pas). Il expose également les actions que la
vue peut effectuer, comme les Buttons et les GestureRecognizer.
❑ Il est responsable de récupérer les données à partir du modèle et de les
rendre disponibles à la vue sous une meilleure forme.
244
❑ La vue/contrôleur possède une référence vers le ViewModel, mais
pas l'inverse ;
245
❑ Pour mettre à jour l'interface utilisateur quand le modèle change,
le patron MVVM utilise le mécanisme de Data-Binding.
246
247
❑ Comparaison des trois patrons architecturaux.
248
Architecture trois tiers
❑ On l’appelle aussi architecture à trois niveaux ou architecture à
trois couches
❑ C'est une architecture basée sur l'environnement client-serveur.
❑ Il s'agit d'un modèle logique d'architecture applicative qui vise à
modéliser une application comme un empilement de trois
couches logicielles :
❑ couche de présentation ;
❑ couche de traitement ;
❑ couche d'accès aux données.
249
❑ la présentation des données, correspondant à l'affichage, la
restitution sur le poste de travail, le dialogue avec l'utilisateur ;
250
❑ Chaque couche propose un ensemble de services rendus.
251
❑ Objectifs de l’architecture 3 tiers :
❑ l'allègement du poste de travail client et l'introduction de clients dits
« légers »
❑ la prise en compte de l'hétérogénéité des plates-formes
❑ l'amélioration de la sécurité des données
❑ la rupture du lien de propriété exclusive entre application et données
252
❑ Dans MVC, le flux de contrôle est inversé par rapport au modèle en
couches, le contrôleur peut alors envoyer des requêtes à toutes les
vues de manière qu'elles se mettent à jour.
253