Programação orientada a eventos é um paradigma de programação. Diferente de programas tradicionais que seguem um fluxo de controle padronizado, o controle de fluxo de programas orientados a evento são guiados por indicações externas, chamadas eventos.[1] Sua aplicação é grande no desenvolvimento de sistemas de interface com o usuário.
A maioria das ferramentas e arquiteturas de desenvolvimento de GUI existentes depende de programação orientada a eventos. [2] A estrutura Java AWT processa todas as alterações na interface do usuário em um único thread, chamado de thread de despacho de eventos . Da mesma forma, todas as atualizações da interface do usuário na estrutura Java JavaFX ocorrem no JavaFX Application Thread.
Além disso, sistemas como o Node.js também são controlados por eventos.[2]
Visão geral
Diferente de aguardar por um comando completo que processa a informação, o sistema em tal paradigma é programado em sua base em um laço de repetição de eventos, que recebem repetidamente informação para processar e disparam uma função de resposta de acordo com o evento.
O método pelo qual a informação é adquirida por camadas mais baixas do sistema é irrelevante. As entradas podem ser enfileiradas ou uma interrupção pode ser registrada para reagir, ou ainda ambos.
Programas orientados a evento geralmente consistem em vários pequenos tratadores, programas que processam os eventos para produzir respostas, e um disparador, que invoca os pequenos tratadores. Uma alternativa consiste em disparar os tratadores por eles próprios, criando um efeito de evento em cascata.
Esse método é bastante flexível e permite um sistema assíncrono. Programas com interface com o usuário geralmente utilizam tal paradigma. Sistemas operacionais também são outro exemplo de programas que utilizam programação orientada a eventos, este em dois níveis. No nível mais baixo encontram-se o tratamento de interrupções como tratadores de eventos de hardware, com a CPU realizando o papel de disparador. No nível mais alto encontram-se os processos sendo disparados novamente pelo sistema operacional.
Um interpretador de comandos pode ser visto como um caso especial de modelo orientado a eventos, no qual o sistema, até então inativo, espera um comando para ser disparado através das instruções do usuário.
Referências
- ↑ Samek, Miro (1 de abril de 2013). «Who Moved My State?». Dr. Dobb's. Consultado em 28 de janeiro de 2018
- ↑ Node.js & Event-driven programming.
- Grant Palmer: Java Event Handling, Prentice Hall, ISBN 0-13-041802-1
- David Luckham: The Power of Events - An Introduction to Complex Event Processing in Distributed Enterprise Systems, Addison-Wesley, ISBN 0-201-72789-7
- George S. Fishman: Discrete-Event Simulation - Modeling, Programming, and Analysis, Springer, ISBN 0-387-95160-1
- Bertrand Meyer (2004): The power of abstraction, reuse and simplicity: an object-oriented library for event-driven design, in Festschrift in Honor of Ole-Johan Dahl, eds. Olaf Owe et al., Springer-Verlag, Lecture Notes in Computer Science 2635, also available online.
- Miro Samek: Practical Statecharts in C/C++: Quantum Programming for Embedded Systems, CMP Books, ISBN 1-57820-
Ligações externas
- (em inglês) Tutorial "Programação orientada a evento: Introdução, Tutorial, História" por Stephen Ferg
- (em inglês) Artigo "O estilo de programação orientada a evento" por Chris McDonald
- (em inglês) Artigo "Programação orientada a evento usando Especialização de Template" por Christopher Diggins