Evento (computação) - Event (computing)

Na programação e design de software , um evento é uma ação ou ocorrência reconhecida pelo software , muitas vezes originada de forma assíncrona do ambiente externo, que pode ser tratada pelo software. Os eventos do computador podem ser gerados ou disparados pelo sistema, pelo usuário ou de outras maneiras. Normalmente, os eventos são tratados de forma síncrona com o fluxo do programa ; ou seja, o software pode ter um ou mais locais dedicados onde os eventos são tratados, frequentemente um loop de eventos . Uma fonte de eventos inclui o usuário, que pode interagir com o software por meio dos periféricos do computador - por exemplo, digitando no teclado . Outra fonte é um dispositivo de hardware , como um cronômetro . O software também pode acionar seu próprio conjunto de eventos no loop de eventos, por exemplo, para comunicar a conclusão de uma tarefa. Diz-se que o software que muda seu comportamento em resposta a eventos é orientado a eventos , geralmente com o objetivo de ser interativo .

Descrição

Os sistemas orientados a eventos são normalmente usados ​​quando há alguma atividade externa assíncrona que precisa ser tratada por um programa; por exemplo, um usuário que pressiona um botão em seu mouse. Um sistema orientado a eventos normalmente executa um loop de eventos , que fica esperando por tais atividades, por exemplo, entrada de dispositivos ou alarmes internos. Quando um deles ocorre, ele coleta dados sobre o evento e o despacha para o software manipulador de eventos que tratará dele.

Um programa pode escolher ignorar eventos e pode haver bibliotecas para despachar um evento para vários manipuladores que podem ser programados para ouvir um determinado evento. Os dados associados a um evento, no mínimo, especificam que tipo de evento é, mas podem incluir outras informações, como quando ocorreu, quem ou o que causou sua ocorrência e dados extras fornecidos pela fonte do evento ao manipulador sobre como o evento deve ser processado.

Os eventos são normalmente usados ​​em interfaces de usuário, onde ações no mundo externo (cliques do mouse, redimensionamento de janelas, pressionamentos de teclado, mensagens de outros programas, etc.) são tratadas pelo programa como uma série de eventos. Os programas escritos para muitos ambientes de janelas consistem predominantemente em manipuladores de eventos.

Os eventos também podem ser usados ​​no nível do conjunto de instruções , onde complementam as interrupções . Em comparação com as interrupções, os eventos são normalmente tratados de forma síncrona: o programa espera explicitamente que um evento seja atendido (normalmente chamando uma instrução que despacha o próximo evento), enquanto uma interrupção pode exigir serviço a qualquer momento.

Modelo de evento de delegação

Modelo de evento de delegação. clickmeé a fonte do evento –um botão neste exemplo– e contém uma lista de ouvintes.

Uma variante comum na programação orientada a objetos é o modelo de evento delegado , que é fornecido por algumas interfaces gráficas com o usuário . Este modelo é baseado em três entidades:

Além disso, o modelo requer que:

  • cada ouvinte deve implementar a interface para o evento que deseja ouvir
  • cada ouvinte deve se registrar na fonte para declarar seu desejo de ouvir o evento
  • toda vez que a fonte gerar o evento, ela o comunica aos ouvintes cadastrados, seguindo o protocolo da interface.

C # usa eventos como delegados especiais que só podem ser disparados pela classe que os declara. Isso permite uma melhor abstração , por exemplo:

delegate void Notifier (string sender);

class Model {
    public event Notifier notifyViews;
    public void Change() { ... notifyViews("Model"); }
}

class View1 {
    public View1(Model m) {
        m.notifyViews += new Notifier(this.Update1);
    }

    void Update1(string sender) {
        Console.WriteLine(sender + " was changed during update"); 
    }
}

class View2 {
    public View2(Model m) {
        m.notifyViews += new Notifier(this.Update2); 
    }

    void Update2(string sender) {
        Console.WriteLine(sender + " was changed"); 
    }
}

class Test {
    static void Main() {
        Model model = new Model();

        new View1(model);
        new View2(model);
        model.Change();
    }
}

Manipulador de eventos

Na programação de computadores, um manipulador de eventos é uma sub-rotina de retorno de chamada que manipula as entradas recebidas em um programa (chamado de ouvinte em Java e JavaScript ). Cada evento é uma parte das informações no nível do aplicativo da estrutura subjacente , normalmente o kit de ferramentas da GUI . Os eventos da GUI incluem pressionamentos de tecla , movimento do mouse , seleções de ação e expiração de temporizadores . Em um nível inferior, os eventos podem representar a disponibilidade de novos dados para a leitura de um arquivo ou fluxo de rede. Os manipuladores de eventos são um conceito central na programação orientada a eventos .

Os eventos são criados pela estrutura com base na interpretação de entradas de nível inferior, que podem ser os próprios eventos de nível inferior. Por exemplo, movimentos e cliques do mouse são interpretados como seleções de menu. Os eventos inicialmente se originam de ações no nível do sistema operacional, como interrupções geradas por dispositivos de hardware, instruções de interrupção de software ou mudanças de estado na pesquisa . Nesse nível, os manipuladores de interrupção e os manipuladores de sinal correspondem aos manipuladores de eventos.

Os eventos criados são primeiro processados ​​por um dispatcher de eventos dentro da estrutura. Ele normalmente gerencia as associações entre eventos e manipuladores de eventos e pode enfileirar manipuladores de eventos ou eventos para processamento posterior. Os despachantes de eventos podem chamar manipuladores de eventos diretamente ou esperar que os eventos sejam retirados da fila com informações sobre o manipulador a ser executado.

Notificação de evento

Notificação de evento é um termo usado em conjunto com software de comunicação para vincular aplicativos que geram pequenas mensagens (os "eventos") a aplicativos que monitoram as condições associadas e podem executar ações acionadas por eventos.

A notificação de eventos é um recurso importante em sistemas de banco de dados modernos (usado para informar os aplicativos quando as condições que eles estão observando ocorreram), sistemas operacionais modernos (usados ​​para informar os aplicativos quando eles devem realizar alguma ação, como atualizar uma janela) e distribuído moderno sistemas, onde o produtor de um evento pode estar em uma máquina diferente do consumidor ou consumidores. As plataformas de notificação de eventos são normalmente projetadas para que os eventos de produção de aplicativos não precisem saber quais aplicativos os consumirão ou mesmo quantos aplicativos monitorarão o fluxo de eventos.

Às vezes, é usado como sinônimo de publicar-assinar , um termo que se relaciona a uma classe de produtos que oferecem suporte à notificação de eventos em configurações de rede. O modelo de sincronia virtual às vezes é usado para dotar os sistemas de notificação de eventos e sistemas de publicação-assinatura com maior tolerância a falhas e garantias de consistência.

Eventos gerados pelo usuário

Há um grande número de situações ou eventos que um programa ou sistema pode gerar ou responder. Alguns eventos comuns gerados pelo usuário incluem:

Eventos de mouse

Um dispositivo apontador pode gerar vários gestos de dispositivo apontador reconhecíveis por software . Um mouse pode gerar vários eventos de mouse, como movimento do mouse (incluindo direção de movimento e distância), botão esquerdo / direito do mouse para cima / baixo e movimento da roda do mouse ou uma combinação desses gestos.

Eventos de teclado

Pressionar uma tecla em um teclado ou uma combinação de teclas gera um evento de teclado, permitindo que o programa atualmente em execução responda aos dados introduzidos, como a (s) tecla (s) que o usuário pressionou.

Eventos de joystick

Mover um joystick gera um sinal analógico XY. Eles geralmente têm vários botões para disparar eventos. Alguns gamepads para caixas de jogos populares usam joysticks.

Eventos de tela sensível ao toque

Os eventos gerados por meio de uma tela sensível ao toque são comumente chamados de eventos de toque ou gestos .

Eventos de dispositivo

Os eventos de dispositivo incluem ação por ou para um dispositivo, como sacudir, inclinar, girar, mover, etc.

Veja também

Referências

links externos