Your SlideShare is downloading. ×
Aop Aspect J 1.5.4 Capitulo 04
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Aop Aspect J 1.5.4 Capitulo 04

1,365

Published on

Published in: Technology, News & Politics
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,365
On Slideshare
0
From Embeds
0
Number of Embeds
7
Actions
Shares
0
Downloads
23
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. AOP – AspectJ 1.5.4 Programação Orientada a Aspectos
  • 2. 4 Recursos Adicionais
  • 3. Objetivos
    • Saber utilizar AspectJ com annotations.
    • Saber utilizar o recurso de declare soft.
    • Conhecer o conceito DBC.
  • 4. AspectJ com annotations
    • Conjunto de anotações AspectJ
      • @Aspect
      • @Pointcut
      • @Before
      • @After
      • @AfterReturning
      • @AfterThrowing
      • @Around
  • 5. AspectJ com annotations
    • Mais limitado
    • Não podemos declarar
      • Aspectos Privilegiados
    • Imports não surtem efeito
      • Use nome completo. EX: java.util.List
  • 6. AspectJ com annotations @Pointcut ( "call(* *.*(int)) && args(i) && if()" ) public static boolean chamadaIf( int i) { return i > 0; } @AfterReturning ( "criticalOperation()" ) public void phew() { System. out .println( "phew" ); } @AfterReturning (pointcut= "call(Foo+.new(..))" ,returning= "f" ) public void itsAFoo(Foo f) { System. out .println( "It's a Foo: " + f); }
  • 7. AspectJ com annotations
    • Around
      • Problema do proceed()
    • Solução
      • Interface AspectJ
        • org.aspectj.lang.ProceedingJoinPoint
  • 8. AspectJ com annotations @Around ( "call(* *.*.now(..))" ) public String getData(ProceedingJoinPoint pjp){ try { System. out .println(pjp.getSignature()); return (String)pjp.proceed(); } catch (Throwable e) { return null; } }
  • 9. Inner-type Declarations
    • Mais limitado
      • Não adiciona
        • Atributos
        • Construtores
    • Pode-se adicionar interfaces
    • Pode-se adicionar classe pai
  • 10. Inner-type Declarations @Aspect public class AnnotationInnerTypeAspect { @DeclareParents ( value= "br.com.targettrust.aop.annotation.innertype.clazz.*" , defaultImpl=PotenciaImpl. class ) public Potencia implementadores ; }
  • 11. Declare Warnings e Errors @DeclareWarning ( "call(java.util.Date.new(..))" ) static final String message = "Você não deve utilizar" + "java.util.Date. Utilize Joda-Time!" ; @DeclareError ( "call(public void *.apagaGeral()) " ) static final String error = "Isso é um erro não apague nada!" ;
  • 12. Declare Soft
    • Encapsula Exceptions
      • org.aspectj.lang.SoftException
    • Lança RuntimeException
    • Forma de tratar errors do AspectJ
  • 13. DBC
    • Design By Contract
    • Reforço de contrato
    • Maior garantia de Implementação
    • Pilares
      • Pré-condições
      • Pós-condições
      • Invariantes
  • 14. DBC
    • Implementado em muitas linguagens
      • C++
      • .NET
      • Java
        • JContract
        • C4J
        • Contract4J
          • Usa AspectJ
  • 15. Você aprendeu a...
    • Utilizar AspectJ com annotations.
    • Utilizar o recurso de declare soft.
    • Conceito DBC.
  • 16. Exercícios
    • 1) Faça um aspecto utilizando anotações que faça tracing. Esse aspecto deve mostrar todos os parâmetros do método e o seu retorno também. Chame o método execute(String proc,Object inst) várias vezes em uma classe de testes.
    • 2) Declare um erro utilizando anotações para quando for utilizada a classe java.util.HashMap() em uma classe TesteMapEx02 com os métodos usaMap() e testaMap().
    • 3) Baseado no exercicio anterior, faça o mesmo, só que agora gere um warning, utilizando anotações também.
  • 17. Exercícios
    • 4) Utilizando os conceitos de DBC faça um aspecto que valide as seguintes premissas:
      • Pré condições:
          • O hotel não aceita hospedes de cabelo verde.
          • O hotel não aceita chekin atens das 10:00.
      • Pós condições:
          • Ao sair do hotel deve-se pagar a conta.
          • Ao sair do hotel deve-se deixar 20% de gorjeta.
      • Inváriantes:
          • Para alugar o quarto a pessoa deve ter, no mínimo R$ 500,00.
    Package br.com.targettrust.aop.advice.after.java; import java.math.BigDecimal; public interface Hotel { public void checkIn(String corCabelo, int horaEntrada, BigDecimal dinheiroQueVoceTem); public BigDecimal getTotalConta(); public void checkOut(BigDecimal vindeDaPropina); }

×