begin process at 2010 02 10 11:28:59
  Trouver un code source :
 
dans
 
Accueil > Forum > 

JAVA / J2EE / J2ME

 > 

Divers

 > 

Général

 > 

Programmation évènementielle


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Programmation évènementielle

vendredi 22 février 2008 à 01:56:51 | Programmation évènementielle

LocalStone

Salut à tous !
Je pense que le titre de mon sujet résume bien le thème de ma question : comment faire de la programmation évènementielle en Java ? Attention, je ne parle pas de Swing ou de n'importe quelle autre IHM. Je parle plutôt dans le cas général.
Un exemple tout bête ... Imaginons une application qui scanne toutes les 5 minutes un répertoire pour voir s'il y a des modification dedans et qui effectue une action particulière en fonction de cette action. On aura alors une classe qui va envoyer des évènements (la classe qui scanne le répertoire), et une classe qui effectue l'action correspondante.
Je pense qu'il faut s'orienter vers le pattern Observer (ou observateur pour les plus français d'entre-nous), mais quelque chose m'echappe ...
En C#, par exemple, il y a un mot clé particulier pour gérer les evenements. Du coup, on peut avoir un évènement qui va correspondre à la suppression d'un fichier, un qui va correspondre au renommage, etc.).
Le truc, c'est qu'avec le pattern Observer, on va pouvoir s'abonner qu'à UN seul évènement. Alors comment faire pour pouvoir différencier l'évènement qui a été réalisé ? Je suppose que la solution se trouve dans un paramètre de type Event que l'on va faire passer à la méthode qui va être appellée. Mais cela implique une grosse suite de if else qui va permettre de différencier l'évènement ... Et ça, saymal.

En fait mon problème est là ... Existe-il une solution propre en Java qui pourrait résoudre le problème que je viens de poser ?


Merci  beaucoup pour vos idées et pour les temoignages que vous allez apporter !
LocalStone
vendredi 22 février 2008 à 06:03:32 | Re : Programmation évènementielle

DARKSIDIOUS

Membre Club Administrateur CodeS-SourceS
Salut,

Tu as plusieurs solutions qui s'offre à toi, mais la plus utilisée en java est d'utiliser des Listener : une interface permettant de s'abonner aux événements que te procure une classe, et une autre qui te permet de recevoir les événements par des appels à des fonctions que tu dois redéfinir.
______________________________________
DarK Sidious
vendredi 22 février 2008 à 13:29:53 | Re : Programmation évènementielle

LocalStone

Salut,
En fait je connaissais ça : c'est en gros l'application du pattern Observer. Mais ce que je ne comprends pas, c'est comment faire pour distinguer 2 évènements différents. En effet, l'utilisation de l'interface Listener permet de s'abonne qu'à un seul évènement ...

LocalStone
vendredi 22 février 2008 à 18:56:19 | Re : Programmation évènementielle

DARKSIDIOUS

Membre Club Administrateur CodeS-SourceS
Salut,

C'est là où les le listener se distingue de l'observer (qui existe aussi directement en java : suffit d'implémenter l'interface observable) : il est possible de définir plusieurs fonctions (correspondant à plusieurs événements) dans la même interface de listener (comme pour les événements clavier par exemple avec l'interface KeyboardListener qui possède plusieurs événements qui se déclenche au moment opportun).
______________________________________
DarK Sidious
vendredi 22 février 2008 à 21:58:37 | Re : Programmation évènementielle

LocalStone

Merci pour ta réponse ... Qui entraîne alors une question : à quoi servent alors les interfaces Observable et Observer fournies par l'API Java ? Parce qu'à la limite, on peut faire tout avec des listeners, non ?

LocalStone
samedi 23 février 2008 à 06:15:17 | Re : Programmation évènementielle

DARKSIDIOUS

Membre Club Administrateur CodeS-SourceS
Réponse acceptée !
Salut,

Comme je t'avais dit plus haut : tu as plusieurs solutions : le listener est le plus utilisé, et le plus simple (et souple) à mettre en place.

Il permet de passer des objets d'événements dans la fonction appellée (pattern commande si on va par là).

L'Observable/observer permet plutôt (en théorie) d'être notifié lorsqu'une ou plusieurs valeur(s) de l'objet qu'on observe est modifié (tu me dira, dans 90 % des cas, c'est ce qui se passe avec les listeners). Il permet aussi d'accumuler plusieurs modifications de variables et ne déclencher la notification qu'une fois un traîtement terminé là où le listener est un appel direct à l'événement (si tu te limite au cas simple).

Le listener quant à lui peut être utilisé pour être notifié quand tu le juge bon : en entrée de fonction par exemple pour annuler le traîtement de celle-ci (grâce à l'objet que tu lui passe en paramètre), et à la fin de cette même fonction pour notifier que c'est fini (pour un traitement asynchrone par exemple) par exemple.

Disons pour résumer que le Listener s'apparente beaucoup à l'observer, mais est plus générique : là où l'observer se limite à la modification des valeurs, le listener permet plus de choses et de personnaliser les événements déclenchés.
______________________________________
DarK Sidious
samedi 23 février 2008 à 12:15:26 | Re : Programmation évènementielle

LocalStone

D'accord, je comprend mieux. Merci beaucoup pour ta réponse !

LocalStone


Cette discussion est classée dans : action, programmation, classe, évènement, évènementielle


Répondre à ce message

Sujets en rapport avec ce message

petit probleme d'action entre 2 applet [ par mandi01 ] Bonjour. Voilà j'ai un petit problème d'action entre 2 classe. Je m'explique : j'ai une classe nommée fenetre, et une autre nommée EntrerDate ce qu'i Faire dialoguer des classes entre elles [ par inquisitor87 ] Bonjour à tous et à toutes. Je suis complètement perdu sur un point crucial pour mon projet actuel : j'ai une classe mère, qui possède deux classes d Listener et Event [ par didoux95 ] Bonjour à tous.J'ai deux classes : une classe A et une classe B organisées de cette manière :...public A () {   B b = new B();}...Comment est ce que j menu bar en java [ par emna10 ] Bonjour!je rencontre un probleme au niveau de la manipulation du menu dans mon application(en java):j'ai creer une classe menu qui construit le menu ( action bouton [ par Nayra ] bonsoir,je vais introduire avec ça:vous connaissez bien sur l'atelier Starumlil y a la palette des composants(classe, paquetage, généralisation....)po problème d'action sur un bouton [ par crazysetup ] Bonjour à tous, j'ai un petit problème, j'ai une classe qui me construit une frame dans laquelle ya un JButton "Valider", l'action sur valider est cen Problème de thread [ par michaeljeru ] Voila, je créé une application qui en gros, est un gestionnaire d'évènement, qui utilise le Design Pattern Reactor. (En gros, chaque évènement reçu es swing [ par josef1705 ] Bonsoir Mensieurs, je possede une jbutton sur une jFrame j'instancie la classe 1 qui contien cette boutton a une autre classe 2 et je veux consulter


Nos sponsors


Sondage...

Comparez les prix


HTC Magic

Entre 429€ et 429€

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,640 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales