A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

P ROGRAMAÇÃO ORIENTADA A ASPECTOS Equipe: Leandro Oliveira Anusio Menezes.

Apresentações semelhantes


Apresentação em tema: "P ROGRAMAÇÃO ORIENTADA A ASPECTOS Equipe: Leandro Oliveira Anusio Menezes."— Transcrição da apresentação:

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.

4

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;

7

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

15

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 )

27

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

30

31 E XERCÍCIO Faça um aspecto que modularize este concern de logging „ Dica: usar dois pointcuts e dois advices

32

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.


Carregar ppt "P ROGRAMAÇÃO ORIENTADA A ASPECTOS Equipe: Leandro Oliveira Anusio Menezes."

Apresentações semelhantes


Anúncios Google