Programació orientada a esdeveniments

From Wikipedia, the free encyclopedia

Remove ads
Remove ads

La programació orientada a esdeveniments, en ciències de la computació, és un paradigma de la programació en el qual el flux del programa és determinat per esdeveniments,[1] com per exemple accions d'usuari (clics de ratolí, tecles premudes, accions de palanca de control, pantalles tàctils…), sortides de sensors o missatges d'altres programes. La programació orientada a esdeveniments és el paradigma dominant que s'empra en les interfícies gràfiques d'usuari[2] i a la majoria de servidors i entorns de progrmació, com ara Node.js, també es basen en esdeveniments.[3] A les aplicacions orientades a esdeveniments hi ha generalment un bucle principal que indaga els possibles esdeveniments i dispara la funció callback corresponent quan es detecten.[4][5][6]

Per entendre la programació dirigida per esdeveniments, es pot oposar-la al que no és: mentre a la programació estructurada és el programador el que defineix quin serà el flux del programa, a la programació dirigida per esdeveniments serà el mateix usuari —que acciona el programa— i que així dirigeix el flux del programa. Tot i que a la programació seqüencial un agent extern al programa hi pot intervenir, aquestes intervencions es produiran quan el programador ho determina, i no en qualsevol moment com pot ser en el cas de la programació dirigida per esdeveniments.

El creador d'un programa orientat a esdeveniments ha de definir els esdeveniments i les accions que els seguiran. Això és l'administrador d'esdeveniments. El llenguatge de programació determina els esdeveniments permesos, pel sistema operatiu i pel mateix programador.

Quan comença l'execució del programa s'inicialitza el codi i a continuació, el programa s'atura fins que es produeixi algun esdeveniment. Quan té lloc algun dels esdeveniments esperats, s'executa el codi corresponent. Per exemple, si l'esdeveniment consisteix que l'usuari ha fet clic al botó de reproduir d'un reproductor de pel·lícules, s'executarà el codi de l'administrador d'esdeveniments que farà que la pel·lícula es mostri per pantalla.

Remove ads

Problema

La programació orientada a esdeveniments implica una complicació afegida pel que fa a altres paradigmes de programació, car el flux d'execució del programari escapa al control del programador. En certa manera podríem dir que a la programació clàssica el flux és en poder del programador i aquest decideix l'ordre d'execució dels processos, mentre que en programació orientada a esdeveniments l'usuari controla el flux i decideix.

Per exemple, un menú amb dos botons, botó 1 i botó 2. Quan l'usuari prem botó 1, el programa s'encarrega de recollir certs paràmetres emmagatzemats en un fitxer i calcular algunes variables. Quan l'usuari prem el botó 2, es mostren a l'usuari per pantalla aquestes variables. La naturalesa indeterminada de les accions de l'usuari i les característiques d'aquest paradigma poden fàcilment desembocar en l'error fatal que es premi el botó 2 sense que prèviament s'ha premut el botó 1. Per tant, amb programació orientada a esdeveniments, cal tenir en compte les propietats d'aquests botons per a tenir en compte les diferents possibilitats.

Remove ads

Gestor d'esdeveniments

En contraposició al model clàssic, la programació orientada a esdeveniments permet interactuar amb l'usuari en qualsevol moment de l'execució. Això s'aconsegueix perquè els programes creats amb aquesta arquitectura es componen per un bucle exterior permanent encarregat de recollir els esdeveniments i diferents processos que s'encarreguen de tractar-los. Habitualment, aquest bucle extern roman ocult al programador que simplement s'encarrega de tractar els esdeveniments, encara que en alguns entorns de desenvolupament (IDE) serà necessària construir-lo.

Exemple de programa orientat a esdeveniments en pseudo llenguatge:

While (true){
      Switch (event){
          case mouse_button_down:
          case mouse_click:
          case keypressed:
          case Else:
      }
  }

El gestor d'esdeveniments truca la rutina (callback) que li correspon. En programari de baix nivell s'anomenen rutines d'interrupcions del maquinari. Un exemple de rutina callback per a gestionar un teclat:

globally declare the counter K and the integer T.
si-hi-ha-tecla-premuda(character C)
{
 convert C to a number N
 if K is zero store N in T and increment K
 otherwise add N to T, print the result and reset K to zero
}
Remove ads

Referències

Bibliografia

Loading content...
Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads