p rogramaÇÃo orientada a aspectos equipe: leandro oliveira anusio menezes
TRANSCRIPT
![Page 1: P ROGRAMAÇÃO ORIENTADA A ASPECTOS Equipe: Leandro Oliveira Anusio Menezes](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc132497959413d8d6818/html5/thumbnails/1.jpg)
PROGRAMAÇÃO ORIENTADA A
ASPECTOS
Equipe:
Leandro Oliveira
Anusio Menezes
![Page 2: P ROGRAMAÇÃO ORIENTADA A ASPECTOS Equipe: Leandro Oliveira Anusio Menezes](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc132497959413d8d6818/html5/thumbnails/2.jpg)
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�
![Page 3: P ROGRAMAÇÃO ORIENTADA A ASPECTOS Equipe: Leandro Oliveira Anusio Menezes](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc132497959413d8d6818/html5/thumbnails/3.jpg)
1. INTRODUÇÃ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.
![Page 4: P ROGRAMAÇÃO ORIENTADA A ASPECTOS Equipe: Leandro Oliveira Anusio Menezes](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc132497959413d8d6818/html5/thumbnails/4.jpg)
![Page 5: P ROGRAMAÇÃO ORIENTADA A ASPECTOS Equipe: Leandro Oliveira Anusio Menezes](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc132497959413d8d6818/html5/thumbnails/5.jpg)
MOTIVAÇÃO
Queremos desenvolver software de �qualidade
capaz de se adaptar a mudançasque lide com a complexidade.
A complexidade crescente dos sistemas de software gera novos desafios para as metodologias da Engenharia de Software
![Page 6: P ROGRAMAÇÃO ORIENTADA A ASPECTOS Equipe: Leandro Oliveira Anusio Menezes](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc132497959413d8d6818/html5/thumbnails/6.jpg)
PROGRAMA 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;
![Page 7: P ROGRAMAÇÃO ORIENTADA A ASPECTOS Equipe: Leandro Oliveira Anusio Menezes](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc132497959413d8d6818/html5/thumbnails/7.jpg)
![Page 8: P ROGRAMAÇÃO ORIENTADA A ASPECTOS Equipe: Leandro Oliveira Anusio Menezes](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc132497959413d8d6818/html5/thumbnails/8.jpg)
“A orientação a objetos tem por objetivo diminuir a distância conceitual entre o mundo real e o computacional.”
![Page 9: P ROGRAMAÇÃO ORIENTADA A ASPECTOS Equipe: Leandro Oliveira Anusio Menezes](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc132497959413d8d6818/html5/thumbnails/9.jpg)
Creditar
Debitar
Saldo Número
R$100,00 12.344-67
![Page 10: P ROGRAMAÇÃO ORIENTADA A ASPECTOS Equipe: Leandro Oliveira Anusio Menezes](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc132497959413d8d6818/html5/thumbnails/10.jpg)
CLASSE DE CONTAS BANCÁRIAS
![Page 11: P ROGRAMAÇÃO ORIENTADA A ASPECTOS Equipe: Leandro Oliveira Anusio Menezes](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc132497959413d8d6818/html5/thumbnails/11.jpg)
CLASSE EM JAVA
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);
}
}
![Page 12: P ROGRAMAÇÃO ORIENTADA A ASPECTOS Equipe: Leandro Oliveira Anusio Menezes](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc132497959413d8d6818/html5/thumbnails/12.jpg)
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)
![Page 13: P ROGRAMAÇÃO ORIENTADA A ASPECTOS Equipe: Leandro Oliveira Anusio Menezes](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc132497959413d8d6818/html5/thumbnails/13.jpg)
TIPOS 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...
![Page 14: P ROGRAMAÇÃO ORIENTADA A ASPECTOS Equipe: Leandro Oliveira Anusio Menezes](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc132497959413d8d6818/html5/thumbnails/14.jpg)
Cada cor representa um interesse diferente
![Page 15: P ROGRAMAÇÃO ORIENTADA A ASPECTOS Equipe: Leandro Oliveira Anusio Menezes](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc132497959413d8d6818/html5/thumbnails/15.jpg)
E agora???
![Page 16: P ROGRAMAÇÃO ORIENTADA A ASPECTOS Equipe: Leandro Oliveira Anusio Menezes](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc132497959413d8d6818/html5/thumbnails/16.jpg)
AGORA 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...
Aspectonova unidade de
modularização e abstração
![Page 17: P ROGRAMAÇÃO ORIENTADA A ASPECTOS Equipe: Leandro Oliveira Anusio Menezes](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc132497959413d8d6818/html5/thumbnails/17.jpg)
SEPARAÇÃO DE INTERESSES(SEPARATION OF CONCERNS)
Para contornar a complexidade de um problema, deve-se resolver uma questão importante ou interesse (concern) por vez [Dijkstra 76]
![Page 18: P ROGRAMAÇÃO ORIENTADA A ASPECTOS Equipe: Leandro Oliveira Anusio Menezes](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc132497959413d8d6818/html5/thumbnails/18.jpg)
IMPLEMENTAÇÃ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�
![Page 19: P ROGRAMAÇÃO ORIENTADA A ASPECTOS Equipe: Leandro Oliveira Anusio Menezes](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc132497959413d8d6818/html5/thumbnails/19.jpg)
EM UMA LINGUAGEM ORIENTADA A ASPECTOS
Parte OO Objetos modularizam interesses não-transversais
Parte de aspectos Aspectos modularizam interesses transversais
![Page 20: P ROGRAMAÇÃO ORIENTADA A ASPECTOS Equipe: Leandro Oliveira Anusio Menezes](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc132497959413d8d6818/html5/thumbnails/20.jpg)
ASPECTJ
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)�
![Page 21: P ROGRAMAÇÃO ORIENTADA A ASPECTOS Equipe: Leandro Oliveira Anusio Menezes](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc132497959413d8d6818/html5/thumbnails/21.jpg)
PARA 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.
![Page 22: P ROGRAMAÇÃO ORIENTADA A ASPECTOS Equipe: Leandro Oliveira Anusio Menezes](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc132497959413d8d6818/html5/thumbnails/22.jpg)
PRECISAMOS 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)
![Page 23: P ROGRAMAÇÃO ORIENTADA A ASPECTOS Equipe: Leandro Oliveira Anusio Menezes](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc132497959413d8d6818/html5/thumbnails/23.jpg)
POINTCUT
Agrupamento de pontos de junção Uso de filtros de AspectJ
![Page 24: P ROGRAMAÇÃO ORIENTADA A ASPECTOS Equipe: Leandro Oliveira Anusio Menezes](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc132497959413d8d6818/html5/thumbnails/24.jpg)
IDENTIFICAMOS OS PONTOS...
agora precisamos decidir duas coisas
O que fazer nestes pontos?Fazer isto antes ou depois do ponto?
![Page 25: P ROGRAMAÇÃO ORIENTADA A ASPECTOS Equipe: Leandro Oliveira Anusio Menezes](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc132497959413d8d6818/html5/thumbnails/25.jpg)
ADVICES (ADENDO)
Especifica o código que será executado quando acontecer os pontos indicados parecido com métodos
Comportamento executado� antes (before) depois (after)
![Page 26: P ROGRAMAÇÃO ORIENTADA A ASPECTOS Equipe: Leandro Oliveira Anusio Menezes](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc132497959413d8d6818/html5/thumbnails/26.jpg)
EXEMPLO(ADVICE)
![Page 27: P ROGRAMAÇÃO ORIENTADA A ASPECTOS Equipe: Leandro Oliveira Anusio Menezes](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc132497959413d8d6818/html5/thumbnails/27.jpg)
Vamos ver um
exemplo ???
![Page 28: P ROGRAMAÇÃO ORIENTADA A ASPECTOS Equipe: Leandro Oliveira Anusio Menezes](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc132497959413d8d6818/html5/thumbnails/28.jpg)
TEMOS 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!");
}}...
![Page 29: P ROGRAMAÇÃO ORIENTADA A ASPECTOS Equipe: Leandro Oliveira Anusio Menezes](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc132497959413d8d6818/html5/thumbnails/29.jpg)
ASPECTO LOGCONTAS
![Page 30: P ROGRAMAÇÃO ORIENTADA A ASPECTOS Equipe: Leandro Oliveira Anusio Menezes](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc132497959413d8d6818/html5/thumbnails/30.jpg)
#Partiu_Exercício_Fixação
![Page 31: P ROGRAMAÇÃO ORIENTADA A ASPECTOS Equipe: Leandro Oliveira Anusio Menezes](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc132497959413d8d6818/html5/thumbnails/31.jpg)
EXERCÍCIO
Faça um aspecto que modularize este concern de logging
Dica: usar dois pointcuts e dois advices�
![Page 32: P ROGRAMAÇÃO ORIENTADA A ASPECTOS Equipe: Leandro Oliveira Anusio Menezes](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc132497959413d8d6818/html5/thumbnails/32.jpg)
![Page 33: P ROGRAMAÇÃO ORIENTADA A ASPECTOS Equipe: Leandro Oliveira Anusio Menezes](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc132497959413d8d6818/html5/thumbnails/33.jpg)
PONTOS POSITIVOS E NEGATIVOS A CERCA DO TEMA...
![Page 34: P ROGRAMAÇÃO ORIENTADA A ASPECTOS Equipe: Leandro Oliveira Anusio Menezes](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc132497959413d8d6818/html5/thumbnails/34.jpg)
POSITIVOS...
modularidade, reuso, e extensibilidade inconsciência (obliviousness) produtividade permite implementação e testes progressivos
![Page 35: P ROGRAMAÇÃO ORIENTADA A ASPECTOS Equipe: Leandro Oliveira Anusio Menezes](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc132497959413d8d6818/html5/thumbnails/35.jpg)
NEGATIVOS...
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
![Page 36: P ROGRAMAÇÃO ORIENTADA A ASPECTOS Equipe: Leandro Oliveira Anusio Menezes](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc132497959413d8d6818/html5/thumbnails/36.jpg)
CONCLUSÃ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.