Correspondência: A forma de correspondência da linguagem é o modo com o qual se descreve quais entidades serão compostas entre si. A correspondência pode ser implícita (determinada por regras da linguagem) ou explícita (descrita pelo programador). Por exemplo, no exemplo acima que mostra duas políticas, podemos dizer que há uma correspondência implícita entre eles - os métodos com os mesmos nomes estão relacionados.
Semântica composicional: é o que deve acontecer com os elementos que correspondem. Em geral, linguagens de POA modificam a semântica das chamadas a métodos:
Em linguagens procedurais, chamar a função F implica em executar a função F.
Em linguagens orientadas a objetos, chamar o método M implica em executar algum método M em uma das subclasses que definem M.
Em linguagens orientadas a aspectos, chamar o método M pode ter diversas consequências:
M é executado, ou
N (algum outro método) é executado, ou
M+N são executados, em alguma ordem definida
A linguagem pode definir diversas semânticas diferentes que em geral são escolhidas pelo programador. No exemplo da última aula, uma linguagem de POA permitiria que o usuário definisse o que acontece com os métodos que têm o mesmo nome (ou seja, que correspondem): se um for chamado, os dois devem ser executados? em que ordem? apenas um deve ser executado? qual?
Tempo de ligação: diz respeito ao momento em que a correspondência passa a surtir efeito; pode ser estático (em tempo de compilação) ou dinâmico (em tempo de execução).
A ferramenta ou compilador que faz a composição dos elementos em POA é chamado weaver (tecelão), pois "tece" os vários fragmentos de programa em um programa único.
A forma de composição das partes é o que realmente distingue linguagens orientadas a aspectos de outras linguagens. Em linguagens procedurais ou orientadas a objetos, a composição é feita através de chamadas de procedimentos ou métodos. Ou seja, uma parte (por exemplo, uma classe) usa a funcionalidade de outra chamando um método.
Em POA, não há chamadas explícitas de métodos entre partes. Ao invés disso, especifica-se, em uma parte separada, como uma parte deve reagir a eventos que acontecem em outra parte. Essa estratégia reduz o acomplamento entre as partes, pois as partes não se acessam diretamente.
Benefícios da programação orientada a aspectos:
· Menos responsabilidades em cada parte
· Melhor modularização
· Evolução facilitada
· Mais possibilidades de reutilização.
Fonte: http://www.aspectos.org/courses/aop.html
Postado por: Murilo Almeida, ADS - 6º Período
Nenhum comentário:
Postar um comentário