PROGRAMMAZIONE GUIDATA DA EVENTI

Event-driven programming

Modalita' di programmazione con la quale si creano applicazioni (dotate di interfaccia grafica) aventi un comportamento di tipo reattivo.

Le reazioni sono scatenate dagli eventi prodotti dal WMS a seguito delle azioni dell'utente. Gli eventi determinano il flusso del programma.

La reazione dell'applicazione ad un evento puo' comportare:

Queste applicazioni tipicamente sono implementate come client nel contesto di un WMS.

Schema di funzionamento

Schema di funzionamento di una applicazione guidata da eventi:
  1. Inizializzazione

  2. Ciclo degli eventi. Ad ogni giro:

Nota bene

Questo e' lo schema di funzionamento interno. Non e' detto che nel codice scritto dal programmatore siano presenti (tutte) queste parti.

Tipo di interazione

Come e' implementato il "guarda se c'e' un evento" nello schema precedente?

Interazione bloccante

Programma completamente guidato da eventi: compie elaborazioni solo in seguito agli eventi.

Attende che giunga un evento interrompendo il flusso del programma e liberando la CPU.

Si risveglia solo in occasione del verificarsi di eventi.

Interazione non bloccante

Programma oltre a reagire agli eventi esegue anche operazioni (indipendenti dagli eventi). Esempio: animazione.

Monitora se arrivano eventi e nel frattempo esegue le sue operazioni (consumando CPU). Se arriva un evento, allora interrompe la sua normale attivita' per reagire all'evento.

Il controllo della coda puo' avvenire o guardando se c'e' qualche evento in questo momento, oppure aspettando per un tempo massimo prefissato (breve) che arrivi qualche evento. Questo ultimo modo libera la CPU per il tempo di attesa.

In alcuni pacchetti l'interazione non bloccante e' gestita introducendo uno speciale evento nullo:

Implementazione del ciclo degli eventi

Come e' implementato "esegui la reazione relativa all'evento"?

Gestione "a mano"

Ad ogni evento verificatosi, l'applicazione esegue una selezione (switch) in base al tipo di evento e alla finestra in cui e' avvenuto: Fattibile solo in programmi piccoli.

Procedure callback

Il toolkit di sviluppo di interfacce grafiche fornisce un meccanismo che implementa automaticamente il ciclo degli eventi.

Callback: procedura dell'applicazione che viene registrata per essere eseguita automaticamente dal sistema al verificarsi di un dato evento in un dato widget.

In fase di inizializzazione, la procedura viene definita e registrata cioe' collegata al widget e all'evento in questione.

Il sistema automaticamente, all'occorrere di un evento, chiama la callback registrata per quell'evento.

Lo schema dell'applicazione diventa:

  1. Inizializzazione

  2. Ciclo degli eventi

Nota bene

In alcuni toolkit (es. java) non e' necessario chiamare esplicitamente il ciclo degli eventi: viene chiamato automaticamente non appena l'interfaccia e' visibile.