Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouLevi Modesto Alterado mais de 10 anos atrás
1
P ROGRAMAÇÃO ORIENTADA A ASPECTOS Equipe: Leandro Oliveira Anusio Menezes
2
Software a ser utilizado JDK 1.5 http://java.sun.com/j2se (1.5.0_01-b08) Eclipse http://www.eclipse.org (3.1.2) AspectJ 1.5 http://www.eclipse.org/aspectj (1.5.1a) AJDT http://www.eclipse.org/ajdt (1.3.1) http://sergio.dsc.upe.br/aspectos
3
1. I NTRODUÇÃO A Orientação a Objetos está consolidada. Entretanto, nem todas as promessas que este paradigma se propunha a cumprir foram atendidas. Algumas soluções foram propostas na tentativa de cumprir estas promessas pendentes, entre elas a Orientação a Aspectos. A Orientação a Aspectos (OA) é um paradigma que estende a Orientação a Objetos (e outros, como o paradigma estruturado) introduzindo novas abstrações. Estes novos elementos são destinados a suprir deficiências na capacidade de representação de algumas situações.
5
M OTIVAÇÃO Queremos desenvolver software de qualidade capaz de se adaptar a mudanças que lide com a complexidade. A complexidade crescente dos sistemas de software gera novos desafios para as metodologias da Engenharia de Software
6
P ROGRAMA ORIENTADO A OBJETOS Abstrações bem mais próximas do mundo do problema objetos, não funções Em um programa, tudo é objeto; Um programa é um monte de objetos ; dizendo aos outros o que fazer;
8
A orientação a objetos tem por objetivo diminuir a distância conceitual entre o mundo real e o computacional.
9
Creditar Debitar SaldoNúmero R$100,0012.344-67
10
C LASSE DE C ONTAS B ANCÁRIAS
11
C LASSE EM J AVA public class Conta { private String numero; private double saldo;... public void debitar (double valor) { if (this.getSaldo() >= valor) this.setSaldo(this.getSaldo()-valor); else } public void creditar (double valor) { this.setSaldo(this.getSaldo()+valor); }
12
OO RESOLVE NOSSO PROBLEMA ? Ainda não! Complexidade aumenta sem parar Limitações com objetos fatores de qualidade ainda são prejudicados Problema (mesmo com OO) Código relacionado a certos interesses são transversaisEspalhados por vários módulos de implementação (classes)
13
T IPOS DE INTERESSES Funcionais (negócio) creditar, debitar, transferir Não-funcionais (sistêmicos) logging tratamento de exceções autenticação desempenho concorrência e sincronização persistência...
14
Cada cor representa um interesse diferente
16
A GORA QUE ENTRA O CONCEITO DE ORIENTAÇÃO A ASPECTOS Modularização de interesses transversais Promove separação de interesses Implementação de um interesse dentro de uma unidade... Aspecto nova unidade de modularização e abstração
17
S EPARAÇÃO DE I NTERESSES ( SEPARATION OF CONCERNS ) Para contornar a complexidade de um problema, deve-se resolver uma questão importante ou interesse (concern) por vez [Dijkstra 76]
18
I MPLEMENTAÇÃO COM AOP Complementa a orientação a objetos novo paradigma? Melhoria em reuso e extensibidade Separação de interesses relação entre os aspectos e o resto do sistema nem sempre é clara Normalmente menos linhas de código
19
E M UMA LINGUAGEM ORIENTADA A ASPECTOS Parte OO Objetos modularizam interesses não-transversais Parte de aspectos Aspectos modularizam interesses transversais
20
A SPECT J Extensão simples e bem integrada de Java gera arquivos.class compatíveis com qualquer máquina virtual Java Linguagem orientada a aspectos Inclue suporte de ferramentas JBuilder, Eclipse Implementação disponível open source Comunidade de usuários ativa Mantida por uma grande empresa (IBM)
21
P ARA COMEÇAR... Temos que identificar os pontos de interesse na execução Neste exemplo: ao fazer um crédito ou débito em qualquer conta Pontos de junção (join points) pontos na execução de um programa chamadas de métodos acesso a atributos (escrita, leitura) etc.
22
P RECISAMOS AINDA AGRUPAR ! Interesse logging ocorre em todas as chamadas a creditar e debitar Precisamos agrupar todos os pontos de junção Em AspectJ pointcut (conjunto de pontos de junção)
23
P OINTCUT Agrupamento de pontos de junção Uso de filtros de AspectJ
24
I DENTIFICAMOS OS PONTOS... agora precisamos decidir duas coisas O que fazer nestes pontos? Fazer isto antes ou depois do ponto?
25
A DVICES ( ADENDO ) Especifica o código que será executado quando acontecer os pontos indicados parecido com métodos Comportamento executado antes (before) depois (after)
26
E XEMPLO ( ADVICE )
28
T EMOS O SEGUINTE CÓDIGO EM JAVA E VAMOS EM SEGUIDA FAZER ORIENTADO A ASPECTOS public class Conta { private String numero; private double saldo;... public void debitar (double valor) { if (this.getSaldo() >= valor){ this.setSaldo(this.getSaldo()-valor); System.out.println(ocorreu um debito!"); } } public void creditar (double valor) { this.setSaldo(this.getSaldo()+valor); System.out.println(ocorreu um credito!"); } }...
29
A SPECTO L OG C ONTAS
31
E XERCÍCIO Faça um aspecto que modularize este concern de logging Dica: usar dois pointcuts e dois advices
33
P ONTOS POSITIVOS E NEGATIVOS A CERCA DO TEMA...
34
P OSITIVOS... modularidade, reuso, e extensibilidade inconsciência (obliviousness) produtividade permite implementação e testes progressivos
35
N EGATIVOS... Novo paradigma – aprendizado – relação entre classes e aspectos deve ser minimizada – inconsciência (obliviousness) Projeto da linguagem – tratamento de exceções – conflitos entre aspectos Requer suporte de ferramentas Combinação (apenas) estática
36
C ONCLUSÃO Certamente a Orientação a Aspectos (OA) ainda não é o paradigma ideal, e acreditamos que em breve surgirão outros paradigmas capazes de melhor abstrair / expressar soluções, e por tal, permitindo a criação de soluções melhores. Mas o que fica claro para nós é que, a OA é um grande passo rumo ao paradigma ideal. Neste artigo, e mesmo no livro, trabalhamos apenas a parte da Orientação a Aspectos ligada à programação, entretanto as vantagens da OA quando aplicadas a análise e, principalmente, ao projeto podem ser impressionantes, mas isto é um tema para um outro artigo.
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.