Table des matières:
Vidéo: Plaquettes de frein : Les conseils de nos garagistes / Top Entretien #1 (avec Denis Brogniart) 2024
Le mot événement évoque toutes sortes d'images. Pour un nonprogrammer, un événement est juste "quelque chose qui arrive. "Si vous avez l'habitude de traiter des fenêtres et des cadres en Java, alors vous pensez probablement à un événement comme une occurrence qui réveille un morceau de code. Par exemple, le clic de souris ou la frappe d'un utilisateur réveille le code qui définit une option et affiche une boîte OK. Le clic ou la touche elle-même s'appelle un événement car il se produit indépendamment du programme en cours d'exécution. Seul l'utilisateur sait quand il ou elle va appuyer sur ce bouton. Et quand le bouton est pressé, une partie du programme Java se réveille et s'occupe de la situation. Ce scénario est appelé programmation par événement .
Programmation événementielle
Les programmes SAX sont pilotés par événement . Par exemple, vous vous couchez pour une bonne nuit de sommeil. Vous tendez la main pour régler votre réveil, puis vous vous installez, fermez les yeux et devenez inconscient pendant plusieurs heures. Puis un événement important se produit: Une certaine heure de la journée arrive. Lorsque l'événement a lieu, le réveil passe en mode «réveil» - et fait un vacarme affreux pour vous sortir de votre sommeil réparateur.
Voici un autre scénario. Vous êtes un cadre occupé et vous serez absent pendant plusieurs heures, mais vous ne voulez pas manquer une affaire importante. Avant de quitter le bureau, dites à votre assistant: "Appelle-moi si quelque chose d'important arrive. "L'émission de cette commande équivaut à régler le réveil. Vous dites à votre assistant (votre réveil) de vous réveiller si un événement se produit. Faire cette demande à votre assistant (ou à votre réveil) s'appelle enregistrement . Dans les deux cas, vous vous enregistrez avec un service de réveil. Après vous être inscrit, vous pouvez poursuivre votre non-activité tranquille, en ignorant toutes les affaires réelles jusqu'à ce qu'un événement se produise. Alors …
Anneau, anneau. Votre portable vous hurle dessus. "Bonjour? "
" Bonjour. C'est ton assistant. J'ai les chiffres des ventes pour le premier trimestre. Ils sont 1 million, 4 millions et 2 millions. "
" Voyons voir. C'est un total de 7 millions ", dites-vous. "Je le noterai sur mon PalmPilot. Merci. " Tu raccroches.
Plusieurs instants plus tard, vous recevez un autre appel. "Le président de Big Bucks, Inc., veut conclure cet accord. Ils parlent 10 millions de dollars. "
"Hmm", vous répondez. «Cela nous rapportera jusqu'à 17 millions de dollars de revenus à ce jour. Je stocke cette information dans mon tableur. Merci d'avoir appeler. "
Chacune de ces interactions est appelée callback .Plus tôt dans la journée, lorsque vous avez enregistré votre souhait avec l'assistant, vous avez demandé un rappel. Ensuite, chaque fois qu'un événement se produit, l'assistant effectue un rappel pour vous informer de l'événement. En termes de programmation Java, l'assistant appelle l'une de vos nombreuses méthodes (l'un de vos sous-programmes Java).
L'essentiel de la programmation événementielle
La programmation événementielle se compose de trois parties:
- Enregistrement: Vous souhaitez être averti dès qu'un événement se produit. Vous enregistrez ce souhait avec un autre morceau de code - un autre objet, généralement quelque chose que vous avez importé (comme un morceau de code qui fait partie de l'API de quelqu'un d'autre). Cet objet regarde ensuite, dans les coulisses, l'occurrence de l'événement que vous avez spécifié.
- Occurrence d'événement: Un événement spécifique se produit.
- Rappel: L'autre partie du code effectue un rappel. Une de vos méthodes est appelée.
Deux types de code
Distinguer entre le code actif et le code passif est utile:
- Le code actif a une méthode principale. Le code actif, une fois lancé, occupe le devant de la scène. Le code actif contient le fil d'exécution qui contrôle l'ensemble du jeu de balle.
- Le code passif est juste là, attendant d'être appelé. Une classe de dés passive ne fait rien jusqu'à ce qu'un autre code appelle Dice. rouleau().
Maintenant, vous pouvez penser que le code passif est tout ce dont vous avez besoin pour la programmation événementielle, mais ce n'est pas le cas. Pour la gestion des événements, vous avez besoin de cette étape d'enregistrement. Le code passif commence par être enregistré avec un autre morceau de code.
Pour raffermir cette notion d'enregistrement, pensez à un exemple du monde des souris, des fenêtres et des boutons à l'écran. Vous créez une fenêtre ou un cadre. Vous souhaitez que votre cadre réponde aux clics de souris, vous devez donc exécuter la commande suivante:
. addMouseListener (this);
Cette commande enregistre votre image avec le bouton. La commande indique, en effet, Chaque fois qu'un événement de souris se produit, appelez l'une des méthodes de gestion de la souris du cadre . Plus tard, lorsque l'utilisateur clique sur la souris, le cadre reçoit un rappel. L'ordinateur appelle la méthode mouseClicked du cadre.
Événements SAX
Bien sûr, SAX est piloté par les événements, mais cela ne signifie pas qu'un programme SAX attend des clics de souris. Au lieu de cela, le code SAX suit le modèle de rappel d'événement-événement décrit dans les derniers paragraphes. Chaque programme SAX a deux parties de code indispensables:
- Un morceau de code que vous écrivez - appelé le gestionnaire . (Votre gestionnaire peut étendre une classe DefaultHandler pré-écrite.) Le gestionnaire est comme le million de dollars dans la section précédente.
- Un morceau de code que vous n'écrivez normalement pas - l'analyseur . L'analyseur joue un rôle semblable à celui de l'assistant de l'exécutif. L'API Java 1. 4 possède un analyseur intégré. Vous créez une instance de cet analyseur, puis vous enregistrez votre gestionnaire avec cette instance d'analyseur. En effet, vous dites à l'instance de rappeler votre gestionnaire chaque fois qu'un événement se produit.
Tout ce qui a trait à XML est nouveau et il est toujours en pleine évolution. Pour cette raison, la terminologie est réparée de manière particulière. Pendant le développement de SAX version 2, certains techniciens ont organisé un festival de maquillage de nouveaux noms. Ce que l'on appelle normalement un "analyseur" est incorporé dans une interface Java nommée XMLReader. Il y avait une classe nommée org. xml. saxo. Parser, mais la classe a été dépréciée (ce qui signifie que vous devriez gratter le bas de votre chaussure). Pour rendre les choses un peu plus compliquées, il existe encore un autre outil d'analyse, javax. xml. analyseurs SAXParser. Vous utilisez ce SAXParser pour créer vous-même un XMLReader. Avec un peu de chance, vous vous habituerez rapidement à cette terminologie compliquée. Pour l'instant, rappelez-vous que ce que l'on appelle un "parser" est généralement une instance de XMLReader.
Le scénario de registre et de rappel est ce qui fait que SAX est piloté par les événements. Maintenant, la chose amusante est, un événement SAX n'est pas tangible. Un événement SAX ne vous rappellera pas une frappe ou un clic sur un bouton. Dans SAX, l'analyseur analyse un document XML de haut en bas. Chaque fois que l'analyseur rencontre quelque chose d'intéressant, l'analyseur déclenche un événement et appelle le gestionnaire. Ensuite, c'est au gestionnaire de faire quelque chose à propos de cette rencontre intéressante.