Programa o orientada a aspectos
This presentation is the property of its rightful owner.
Sponsored Links
1 / 36

Programação orientada a aspectos PowerPoint PPT Presentation


  • 56 Views
  • Uploaded on
  • Presentation posted in: General

Programação orientada a aspectos. Equipe: Leandro Oliveira Anusio Menezes. 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

Download Presentation

Programação orientada a aspectos

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Programa o orientada a aspectos

Programação orientada a aspectos

Equipe:

Leandro Oliveira

Anusio Menezes


Programa o orientada a aspectos

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


1 introdu o

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.


Motiva o

Motivaçã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


Programa orientado a objetos

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;


Programa o orientada a aspectos

  • “A orientação a objetos tem por objetivo diminuir a distância conceitual entre o mundo real e o computacional.”


Programa o orientada a aspectos

Creditar

Debitar


Classe de contas banc rias

Classe de Contas Bancárias


Classe em java

Classe em Java

publicclass Conta {

privateString numero;

privatedouble saldo;

...

publicvoid debitar (double valor) {

if(this.getSaldo() >= valor)

this.setSaldo(this.getSaldo()-valor);

else

}

publicvoid creditar (double valor) {

this.setSaldo(this.getSaldo()+valor);

}

}


Oo resolve nosso problema

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 transversaisEspalhadospor vários módulos de

    • implementação

    • (classes)


Tipos de interesses

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...


Programa o orientada a aspectos

  • Cada cor representa um interesse diferente


Programa o orientada a aspectos

E agora???


Agora que entra o conceito de orienta o a aspectos

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...

Aspecto

nova unidade de

modularização e abstração


Separa o de interesses separation of concerns

Separação de Interesses(separationofconcerns)

  • Para contornar a complexidade de um

  • problema, deve-se resolver uma questão

  • importante ou interesse (concern) por vez

  • [Dijkstra 76]


Implementa o com aop

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


Em uma linguagem orientada a aspectos

Em uma linguagem orientada a aspectos

  • Parte OO

    • Objetos modularizam interesses não-transversais

  • Parte de aspectos

    • Aspectos modularizam interesses transversais


Aspectj

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)


Para come ar

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.


Precisamos ainda agrupar

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)


Pointcut

Pointcut

  • Agrupamento de pontos de junção

  • Uso de filtros de AspectJ


Identificamos os pontos

Identificamos os pontos...

agora precisamos decidir duas coisas

O que fazer nestes pontos?

Fazer isto antes ou depois do ponto?


Advices adendo

Advices (adendo)

  • Especifica o código que será executado quando acontecer os pontos indicados

    • parecido com métodos

  • „ Comportamento executado

    • antes (before)

    • depois (after)


Exemplo advice

Exemplo(advice)


Programa o orientada a aspectos

Vamos ver um exemplo ???


Temos o seguinte c digo em java e vamos em seguida fazer orientado a aspectos

Temos o seguinte código em java e vamos em seguida fazer orientado a aspectos

publicclass Conta {

privateString numero;

privatedouble saldo;

...

publicvoid debitar (double valor) {

if(this.getSaldo() >= valor){

this.setSaldo(this.getSaldo()-valor);

System.out.println(“ocorreu um debito!"); }

}

publicvoid creditar (double valor) {

this.setSaldo(this.getSaldo()+valor);

System.out.println(“ocorreu um credito!");

}

}...


Aspecto logcontas

Aspecto LogContas


Programa o orientada a aspectos

#Partiu_Exercício_

Fixação


Exerc cio

Exercício

  • Faça um aspecto que modularize este concernde logging

  • „ Dica: usar dois pointcuts e dois advices


Pontos positivos e negativos a cerca do tema

Pontos positivos e negativos a cerca do tema...


Positivos

Positivos...

  • modularidade, reuso, e extensibilidade

  • inconsciência (obliviousness)

  • produtividade

  • permite implementação e testes progressivos


Negativos

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


Conclus o

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.


  • Login