G nie logiciel
Gr gory Bonnet
GREYC - Universit de Caen Basse-Normandie
2014 - 2015
Programmation v nementielle
Quest-ce que la programmation v nementielle ?
Programmation s quentielle
Paradigme de programmation dans lequel le d roulement des instructions du
programme est toujours le m me bien que les instructions elles-m mes peuvent
changer en fonction des embranchements.
Exemple
Calculer les n premiers termes de la suite de Fibonacci.
Programmation v nementielle
Paradigme de programmation dans lequel le programme est principalement d ni par
ses r actions face di rents v nements qui peuvent se produire.
Exemple
Traitement de prise en charge dune interface homme-machine.
Quest-ce quun v nement ?
Un v nement nest pas un message
Message : appel dune m thode particuli re dun objet particulier
v nement : signal envoy dans lenvironnement ind pendamment des objets
Qui g n rent les v nements ?
les actions des utilisateurs (saisie au clavier ou clics de souris)
le syst mes (tics dhorlogie)
les objets (notications)
Un v nement est capt par les objets abonn s ce type d v nement
Quelques exemples d v nements
Enfoncer les touches du clavier
Une frappe sur le clavier g n re un v nement clavier contenant le code de la touche
enfonc e.
Gestion de la souris
Un utilisateur qui bouge ou clique avec la souris g n re un v nement souris
contenant les coordonn es courantes de la souris et le bouton qui a t cliqu .
Actions sur un composant graphique
Un composant graphique sur lequel un utilisateur clique g n re un v nement action
auxquel lapplication r agit en appellant le traitement associ au composant graphique.
Exception
Un processus ind pendant dont un op ration produit une erreur peut avertir le reste
de lapplication en g n rant un v nement exception.
Principes fondamentaux de programmation v nementielle
Contenu dun v nement
Un v nement contient toutes les informations qui concernent laction correspondante
son type
Advertisement
son metteur
des donn es (position dun clic de souris par exemple)
Traitement des v nements
les composants interagissent entre eux et avec lenvironnement
les v nements sont plac s dans une le d v nements
la boucle de gestion de lenvironnement les transmet un un des couteurs
les composants associ s aux couteurs agissent en r ponse aux v nements
Un exemple
Un programme avec une interface graphique
un objet interface graphique compos dobjets bouton
des couteurs sont associ s aux boutons
le programme en boucle innie attend des v nements
les couteurs capturent les v nements et lancent les traitements
Fonctionnement sous-jacent
action de lutilisateur sur linterface graphique
interruption mat rielle
r cup ration de linterruption par le syst me
construction de l v nement par le syst me
envoi dun message contenant l v nement lapplication
lapplication r agit l v nement ou non
Architecture Mod le - Vue - Contr leur
Architecture dune application munie dune ou plusieurs interfaces utilisateur
trois composants
donn es et traitements, entr es et sorties et de la gestion des v nements
utilis e dans la conception de clients / serveurs et dinterfaces graphiques
G n ralisation du motif observateur / observ
les objets applicatifs (mod le)
leurs repr sentations (vue)
leurs interactions (contr leur)
Pourquoi une nouvelle architure ?
Avantages
patron de conception part enti re
paradigme architectural
d couplage fort
multiplicit des vues
changement ais dinterfaces
Inconv nients
complexit de mod lisation accrue
d pendance forte de la vue et du contr leur envers le mod le
possibilit de mises jours excessives
couteurs & notications
couteur d v nement
objet r agissant un type d v nement particulier
Advertisement
objet associ un autre objet
l couteur ex cute une m thode chaque fois quil re oit un v nement de ce type
Source
couteur
+ g n rer() : v nement
+ reagir(a : v nement)
v nement
De l v nement la notication
Limplantation des v nements passe g n ralement par la notication
une notication est un signal envoy par un objet un ou plusieurs autres
les destinataires sont des objets abonn s la notication aupr s de l metteur
mod le publication / abonnement ou publish / subscribe
Les notications peuvent porter des informations
son type
son metteur
tat ou changement d tat de l metteur
des donn es suppl mentaires
Motif Observateur / Observ
implantation laide dun motif observateur / observ
un objet notie ses observateurs lorsquil a chang
la r ception dune notication est un v nement
abstract
Observable
+ ajouter(Observateur)
+ supprimer(Observateur)
+ notifier()
interface
Observateur
+ miseajour()
ClasseObservee
Observateur1
Processus dattente
un objet est un processus contr l par une m thode principale
la m thode poss de des points darr ts qui mettent le processus en sommeil
la r ception dune notication r veille le processus qui r agit
Thread
+ run()
v nement
ObjetContr l
+ run()
Mod le - Vue - Contr leur
G n ralit s
C t applicatif : le mod le contient la logique de lapplication
Advertisement
C t visuel : les vues achent lutilisateur des informations sur le mod le
C t v nementiel : le contr leur agit la demande de lutilisateur sur le mod le
Utilisateur
est per ue par
utilise
Vue
agit sur
Contr leur
met jour
manipule
Mod le
Mod le
CSur de lapplication
nimporte quelle classe ou quel paquetage
ind pendant de lachage et de la modication de ses donn es
fournit des m thodes dacc s et de modication pour les donn es
Interactions
le mod le peut tre modi sur ordre du contr leur
le mod le signale aux vues tout changement de contenu ( v nement)
le mod le ignore comment il est ach et qui lui a noti un changement d tat
Vue
Interface avec lutilisateur
ache les donn es et capte les actions de lutilisateur
ces actions sont transmises au contr leur associ la vue ( v nement)
la vue et le mod le sont dans une relation observateur / observ
le contr leur joue un r le d couteur pour les v nements capt s par la vue.
La vue se met jour d s quelle re oit un ordre de notication
1. du contr leur
2. du mod le (elle le consulte alors pour se r acher de mani re ad quate)
Plusieurs vues pour m me mod le ?
chaque vue est en g n ral associ e un et un seul contr leur
une vue peut permettre lutilisateur de changer de vue
une vue peut obtenir une vue suppl mentaire sur le m me mod le
la vue instancie g n ralement son contr leur,
Contr leur
couteur de linterface utilisateur
le contr leur re oit des notications de la vue
il manipule alors le mod le en utilisant ses m thodes si besoin
le mod le notie en r ponses les vues
le contr leur notie la vue sil nest pas besoin de modier le mod le
Le contr leur re oit les v nements de linterface utilisateur et les traduit
1. en changement dans la vue sils agisssent sur le c t visuel
Exemple : un clic sur la barre de d lement de la fen tre graphique.
Advertisement
2. en changement dans le mod le sils agissent sur le contenu du mod le
Exemple : Une modication de la valeur dun tableau ach dans la fen tre graphique
Pr sentation g n rale des interactions
Mod le
1. le mod le ne conna t ni les vues, ni les contr leurs
2. ces deux l ments sont des observateurs par rapport au mod le
Vue
1. chaque vue est associ e un contr leur quelle instancie
2. chaque vue est associ e au mod le dont elle consulte et pr sente les donn es
Contr leur
1. chaque contr leur est associ une vue dont il coute les v nements
2. chaque contr leur conna t le mod le quil modie en r ponse ses v nements
Mod le UML de larchitecture MVC
Observ
Vue1
Observateur
Mod le
Contr leur1
Observateur
Vue2
Observateur
Contr leur2
Observateur
Conclusion
Conclusion
La programmation v nementielle est un paradigme part enti re
pas dex cution lin aire du programme
les objets g n rent des v nements et r agissent ces derniers
tr s utile pour le d veloppement dinterfaces graphiques
implantation : mod le observateur / observ et processus dattente
Une architecture v nementielle
la repr sentation logique dune application (mod le)
la repr sentation visuelle quon en donne (vue)
les actions que lutilisateur eectue (contr leur)
D veloppement et maintenance simpli s
modularit dans la conception
vue et contr leur peuvent tre d velopp s ind pendamment du mod le
meilleure r partition des t ches entre d veloppeurs (m tiers ou ergonomie)