Atualmente, existem vários paradigmas de programação, como por exemplo o paradigma orientado a objetos, onde temos instâncias de classes trocando mensagens entre si. Da mesma forma, também temos o paradigma funcional, onde podemos falar que existem funções que seguem alguns conceitos matemáticos interagindo entre si. Hoje, vamos abordar um outro tipo de paradigma: o AOP - Aspect Oriented Programming, ou Programação Orientada a Aspectos.
O que é a Programação Orientada a Aspectos?
O paradigma orientado a aspectos é um paradigma baseado em meta informações. Primeiramente devemos saber que meta informação é, resumidamente, uma “informação de uma informação”.
Por exemplo, vamos imaginar o seguinte: você tem um carro e esse carro é da cor “preta”. Essa é uma informação do carro, porém “preta” é um atributo. “Cor” seria uma meta informação do carro em um contexto onde a informação a ser tratada é o veículo em si. Já “preta” seria o valor do atributo “cor”, mas esse valor de atributo só tem “significado” ou “força” se sabermos sobre o que “cor” se trata, ou seja: se soubermos a meta informação – ou significado – de “cor”.
Às vezes, nos deparamos com responsabilidades que são difíceis de isolar ou que exigem a escrita de código que não fazem parte do domínio da aplicação; porém, ainda dizem respeito à aspectos essenciais.
A programação orientada a aspectos vem para nos ajudar nisso, pois é uma abordagem que permite a separação dos componentes funcionais de uma forma concisa, utilizando-se de mecanismos de abstração e de composição. O termo “aspecto” se refere aquilo que faz parte da aparência de algo.
O objetivo da programação orientada a aspectos é oferecer suporte para o desenvolvedor na tarefa de separar componentes entre si e os aspectos entre si, utilizando-se de mecanismos que permitam a abstração e composição destas.
Alguns exemplos seriam o gerenciamento de transações, logs, cache, indexação de dados etc.
Alguns conceitos…
• Join points: são os pontos que possuem algum aspecto associado. São os métodos da aplicação que necessitam da execução de algum aspecto;
• Point cuts: são expressões que identificam os join points, onde podemos usar namespaces, classes e expressões regulares para identificar os join points;
• Advices: são fragmentos de código que contêm o comportamento de um aspecto. Existem alguns tipos como Before, After e outros, onde cada um define em que momento da execução do join point, o comportamento do aspecto deverá ocorrer.
Curso Lógica de Programação - Avançando na programação
Conhecer o cursoPor que utilizar esse paradigma?
Como esse paradigma geralmente envolve conceitos que independem da camada e não tem relação direta com os requisitos funcionais de um sistema, temos alguns benefícios como a reutilização, clareza e desacoplamento do código.
A programação orientada a aspectos também possibilita fazer a devida separação de responsabilidades, considerando funcionalidades que são essenciais para um grupo de objetos, mas não são de responsabilidade direta deles.