Académique Documents
Professionnel Documents
Culture Documents
• Programmation séquentielle
• Déroulement contrôlé par une séquence d’instructions écrites
• L’ordre ne change pas
• Instruction 1
• Instruction 2
• Instruction 3
• Instruction 4
Programmation Évènementielle
Event-driven programming
• Programmation séquentielle
• Déroulement contrôle par une séquence d’instructions écrites
• L’ordre ne change pas
• Programmation évènementielle
• Boucle principale
• Attend un évènement
• Traite l’évènement
• Répète do {
e = getNextEvent();
process event e;
} while(e != quit);
Programmation Évènementielle
Event-driven programming
Programmation Évènementielle
Event-driven programming
register(“event1”, function1); …
mainloop();
Programmation Évènementielle
Évènement
• Event : notification qu’une action a eu lieu (clic de souris, appui sur une
touche du clavier, rencontre d’un monstre, …)
• Alarme
Programmation Évènementielle
Exemple
• Alarme
• Boucle explicite
• Wait
• Signals
• Process
• Wait…
• Appelle AnimateAlarm
Programmation Évènementielle
Exemple
• Alarme
• Interface pour définir actions
• Niveau d’abstraction supplémentaire
• Méthode de Buzzer jamais appelé explicitement
Programmation Évènementielle
Exemple
• Alarme
• Dispatcher pour réagir à un event
• Ici —> spécifique à l’event
• Dispatcher ne connait pas objet en général
• Dispatcher pas visible
• Mais l’idée est là ! Tout ce fait via
eventHandler —> Alarme inconnue
• Timeout et Rest assez général
• Applicable à d’autres objets
Programmation Évènementielle
Event Handler (Listener)
• Opérations
• addQueue
• Dispatcher —> appelle méthode handler pour l’event
Programmation Évènementielle
Event Queue et Java GUI
• Java GUI propose une Event Queue pour gérer les events
écrans
• Clic de souris
• Bouton de l’interface
• Clavier
• …
• Event Queue pas visible dans le framework
Programmation Évènementielle
Exemple interface graphique
• Implémentation
• Pattern Observer
• “Surveiller” les objets entité du jeu
• Appeler des méthodes pour traiter les conséquences d’un
event
• À spécialiser à l’intérieur des classes concrètes des
éléments du jeu
• Attention à votre niveau d’abstraction ! (Classes en +,
communication entre objet, architecture, …)
Programmation Évènementielle
Pour le projet
• Commencer par une implémentation simple (séquentielle)
• Boucle principale
• Attend event
• Traite event rapidement
• Attend event
• Traite event rapidement
• …
• Pourquoi pas découpler arrivé de l’event de son traitement ?
• Plus complexe —> Thread à part pour gérer ça
• Ne pas bloquer l’application
• Peut être que pour les entrées utilisateur ?
• (Surtout intéressant si vous ne faite pas du tour par tour…)
Programmation Évènementielle
Pour le projet
• Pourquoi pas découpler arrivé de l’event de son traitement ?
• Plus complexe —> Thread à part pour gérer ça
• Ne pas bloquer l’application
• Peut être que pour les entrées utilisateur ?
• (Surtout intéressant si vous ne faite pas du tour par tour…)
• Attention
• Plusieurs Threads dangereux —> Event Queue partagée
• Ne pas bloquer —> handler doit être simple
• Appeler une fois que toutes les données sont prêtes (ex: Dessiner Carte)
Projet
Idées de fonctionnalités