PARADIGMA: PROGRAMAÇÃO ORIENTADO A ASPECTO
Tese: PARADIGMA: PROGRAMAÇÃO ORIENTADO A ASPECTO. Pesquise 862.000+ trabalhos acadêmicosPor: josedbb • 26/9/2013 • Tese • 998 Palavras (4 Páginas) • 321 Visualizações
ALUNO :.
MATRICULA :.
CURSO :. SISTEMAS DA INFORMAÇÃO
DISCIPLIMA :. ANALISE E DESENVOLVIMENTO DE SISTEMAS
PARADIGMA: PROGRAMAÇÃO ORIENTADO A ASPECTO
programação orientada a aspectos ou POA, é um paradigma de programação de computadores que permite aos desenvolvedores de software separar e organizar o código de acordo com a sua importância para a aplicação (separation of concerns). Todo o programa escrito no paradigma orientado a objetos possui código que é alheio a implementação do comportamento do objeto. Este código é todo aquele utilizado para implementar funcionalidades secundárias e que encontra-se espalhado por toda a aplicação (crosscutting concern). A POA permite que esse código seja encapsulado e modularizado.
DEFINIÇOES DE CODIGOS E ALGUNS CONCEITOS:.
A programação orientada a aspectos tem como objetivo a separação do código segundo a sua importância para a aplicação, permitindo que o programador encapsule o código secundário em módulos separados do restante da aplicação.
Por exemplo, considere uma aplicação bancária escrita em Java que possui um método que simplesmente transfere um valor de uma conta para outra:
void transferir(Conta origem, Conta destino, int valor) {
if (origem.getSaldo() < valor) {
throw new SaldoInsuficienteException();
}
origem.debitar(valor);
destino.creditar(valor);
Porém, numa aplicação bancária construída para o mundo real, este método de transferência está longe do adequado. É necessário incluir verificações de segurança, que determinam se o usuário possui autorização para realizar a operação. É preciso também "envolver" a operação em uma transação para prevenir perda de dados. Finalmente, é preciso fazer o log dos dados da aplicação. Uma versão simplificada que contém estes novos objetivos (concerns) é mostrada abaixo:
void transferir(Conta origem, Conta destino, int valor) {
if (!getUsuarioCorrente().temPermissao(OP_TRANSFERENCIA)) {
throw new PermissaoException();
}
if (valor < 0) {
throw new TransferenciaNegativaException();
}
if (origem.getSaldo() < valor) {
throw new SaldoInsuficienteException();
}
Transaction tx = database.newTransaction();
try {
origem.debitar(valor);
destino.creditar(valor);
tx.commit();
logger.logOperation(OP_TRANSFERENCIA, origem, destino, valor);
}
catch(Exception e) {
tx.rollback();
}
}
Comparando com a primeira versão, o código perdeu a sua elegância e simplicidade, depois que o código voltado para outros objetivos foi "misturado" com aquele que implementa as regras do negócio. As transações, segurança, log de dados, etc. são exemplos de código chamado de crosscutting concerns.
Também deve-se considerar o que ocorre quando é necessário alterar, por exemplo, a implementação de segurança da aplicação. No exemplo mostrado, o código é espalhado por vários métodos, e qualquer mudança significa um grande esforço de codificação.
Pode-se dizer que esse código não está devidamente encapsulado nos seus próprios módulos. Isto aumenta a complexidade do sistema e torna a manutenção do sistema muito mais difícil.
A POA busca resolver esse problema permitindo que o programador implemente essas questões (segurança, log, transações, e etc) através de aspectos. Em muitas linguagens POA, o aspecto é constituído de uma ou mais peças de advices (fragmentos de código, como métodos) e uma lista de join points (pontos no programa principal na qual os advices são inseridos). Por exemplo, um módulo de segurança pode incluir um advice que faz uma verificação de segurança, com instruções para inserir este fragmento de código no início dos métodos a(), b() e c() de algumas classes. Alguns mecanismos poderosos são utilizados, para que o desenvolvedor não precise definir os "pontos de inserção" manualmente. Estes mecanismos são conhecidos como linguagens de especificação de pointcuts.
EXEMPLOS :.
Modelos de join point
Fundamentalmente, o modo como o aspecto interage com o programa é definido como modelo de join point (join point model, ou JPM) no qual o aspecto é escrito. Este modelo define três coisas:
• onde o aspecto pode ser aplicado. Os chamados join points.
• um modo para especificar, ou quantificar, múltiplos join points, os chamados pointcuts. Os pointcuts são na verdade uma consulta sobre todos os join points de um programa para selecionar um conjunto menor deles.
• um meio para alterar o comportamento dos join points. Em AspectJ, este meio é chamado de advice.
O AspectJ tem dois JPMs: pointcuts e advice, e declarações inter-tipo. Outras linguagens orientadas a aspecto tem JPMs diferentes.
OUTROS IMPLEMENTAÇÕES :.
• Para C#/VB.NET:
o Aspect.NET
o LOOM.NET
...