AOP – AspectJ 1.5.4 Programação Orientada a Aspectos
4 Recursos Adicionais
Objetivos Saber utilizar AspectJ com annotations. Saber utilizar o recurso de declare soft. Conhecer o conceito DBC.
AspectJ com annotations Conjunto de anotações AspectJ @Aspect @Pointcut @Before @After @AfterReturning @AfterThrowing @Around
AspectJ com annotations Mais limitado Não podemos declarar  Aspectos Privilegiados Imports não surtem efeito Use nome completo. EX: java.util.List
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); }
AspectJ com annotations Around Problema do proceed() Solução Interface AspectJ org.aspectj.lang.ProceedingJoinPoint
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; } }
Inner-type Declarations Mais limitado Não adiciona Atributos Construtores Pode-se adicionar interfaces Pode-se adicionar classe pai
Inner-type Declarations @Aspect public   class  AnnotationInnerTypeAspect { @DeclareParents ( value= "br.com.targettrust.aop.annotation.innertype.clazz.*" , defaultImpl=PotenciaImpl. class ) public  Potencia  implementadores ; }
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!" ;
Declare Soft Encapsula Exceptions org.aspectj.lang.SoftException Lança RuntimeException Forma de tratar errors do AspectJ
DBC Design By Contract Reforço de contrato Maior garantia de Implementação Pilares Pré-condições Pós-condições Invariantes
DBC Implementado em muitas linguagens  C++ .NET Java JContract C4J Contract4J Usa AspectJ
Você aprendeu a... Utilizar AspectJ com annotations. Utilizar o recurso de declare soft. Conceito DBC.
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.
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); }

Mais conteúdo relacionado

PPT
Aop Aspect J 1.5.4 Capitulo 02
ODP
Linguagem C 06 Funcoes
PDF
Php básico
ODP
Linguagem C 03 Estruturas De Decisao
PPTX
Usando POP com Programação Funcional
PPT
Algoritmos Aula 11
PDF
Funções em C
PDF
Aprendendo objective c - parte 1
Aop Aspect J 1.5.4 Capitulo 02
Linguagem C 06 Funcoes
Php básico
Linguagem C 03 Estruturas De Decisao
Usando POP com Programação Funcional
Algoritmos Aula 11
Funções em C
Aprendendo objective c - parte 1

Mais procurados (20)

PDF
Linguagem C - Funções e ponteiros
PPT
Logica Algoritmo 07 Subalgoritmos
PPTX
F sharp e o paradigma funcional
PDF
Princípios de projeto e boas práticas de programação em Java - Márcio Torres
PPTX
Debugging tips and tricks
PDF
Recursividade em linguagem C
ODP
Linguagem C 01 Primeiros Passos
PPT
Paradigmas de Linguagens de Programacao - Aula #3
PPT
Linguagens de Programação II - Aula 3
PPTX
Linguagem C - Funções
PPT
4º Aula do Grupo de estudos sobre funções
ODP
Linguagem C 05 Vetores E Matrizes
PPTX
C++ Funções
PDF
Ponteiros de Função
ODP
Linguagem C 04 Estruturas De Repeticao
ODP
Aula03 - JavaScript
PDF
PDF
Programação C - Aula 2
PPTX
3. Funções/repórteres e listas em Snap!; Utilização de variáveis – Fundamento...
Linguagem C - Funções e ponteiros
Logica Algoritmo 07 Subalgoritmos
F sharp e o paradigma funcional
Princípios de projeto e boas práticas de programação em Java - Márcio Torres
Debugging tips and tricks
Recursividade em linguagem C
Linguagem C 01 Primeiros Passos
Paradigmas de Linguagens de Programacao - Aula #3
Linguagens de Programação II - Aula 3
Linguagem C - Funções
4º Aula do Grupo de estudos sobre funções
Linguagem C 05 Vetores E Matrizes
C++ Funções
Ponteiros de Função
Linguagem C 04 Estruturas De Repeticao
Aula03 - JavaScript
Programação C - Aula 2
3. Funções/repórteres e listas em Snap!; Utilização de variáveis – Fundamento...
Anúncio

Destaque (20)

ODP
Ubuntu: El fenómeno SIMS y el Hikkikomori
PDF
thank you
PPT
Mobiilioppiminen laajennetussa työssäoppimisessa
DOCX
B A S E D E D A T O S E S T A M P A D O
PPT
XM603 Group4 - 16012010 Q2
PDF
Prezentace projektu Masarykův onkologický ústav
PDF
Chad Minichillo Mfg Alliance LSV
PDF
Mariam n
PDF
ECLAP tutorial, see http://www.eclap.eu, social networking, aggregation, myst...
PDF
Boletin prensa04 12-2012
PDF
Aplikační seminář 2012: lidé a projekty
PDF
Rescue Diver Cert Card
PDF
20080302 cryptography hirsch_lecture03
PDF
Lukáš Hrdlička: Je libo prezentace?
PDF
DOCX
Segunda práctica de creatividad
PPTX
Juomasekoituksia mobiilisti
PDF
Ankur (Bestseller Marathi Poetry) Dr. Shriiwas Kashalikar
PDF
Batman o longo dia das bruxas 12
PPTX
Освенцим одно из самых печальных мест на лице нашей земли
Ubuntu: El fenómeno SIMS y el Hikkikomori
thank you
Mobiilioppiminen laajennetussa työssäoppimisessa
B A S E D E D A T O S E S T A M P A D O
XM603 Group4 - 16012010 Q2
Prezentace projektu Masarykův onkologický ústav
Chad Minichillo Mfg Alliance LSV
Mariam n
ECLAP tutorial, see http://www.eclap.eu, social networking, aggregation, myst...
Boletin prensa04 12-2012
Aplikační seminář 2012: lidé a projekty
Rescue Diver Cert Card
20080302 cryptography hirsch_lecture03
Lukáš Hrdlička: Je libo prezentace?
Segunda práctica de creatividad
Juomasekoituksia mobiilisti
Ankur (Bestseller Marathi Poetry) Dr. Shriiwas Kashalikar
Batman o longo dia das bruxas 12
Освенцим одно из самых печальных мест на лице нашей земли
Anúncio

Semelhante a Aop Aspect J 1.5.4 Capitulo 04 (6)

PPT
Aop Aspect J 1.5.4
PPT
Aop Aspect J 1.5.4 Capitulo 03
PPT
Aop Aspect J 1.5.4 Capitulo 01
PDF
Persistência JPA
PDF
Spring framework 2.5
ODP
Anotações do mapeamento OR
Aop Aspect J 1.5.4
Aop Aspect J 1.5.4 Capitulo 03
Aop Aspect J 1.5.4 Capitulo 01
Persistência JPA
Spring framework 2.5
Anotações do mapeamento OR

Mais de Diego Pacheco (20)

PDF
Naming Things Book : Simple Book Review!
PDF
Continuous Discovery Habits Book Review.pdf
PDF
Thoughts about Shape Up
PDF
Holacracy
PDF
AWS IAM
PDF
PDF
Encryption Deep Dive
PDF
Sec 101
PDF
Reflections on SCM
PDF
Management: Doing the non-obvious! III
PDF
Design is not Subjective
PDF
Architecture & Engineering : Doing the non-obvious!
PDF
Management doing the non-obvious II
PDF
Testing in production
PDF
Nine lies about work
PDF
Management: doing the nonobvious!
PDF
AI and the Future
PDF
Dealing with dependencies
PDF
Dealing with dependencies in tests
PDF
Kanban 2020
Naming Things Book : Simple Book Review!
Continuous Discovery Habits Book Review.pdf
Thoughts about Shape Up
Holacracy
AWS IAM
Encryption Deep Dive
Sec 101
Reflections on SCM
Management: Doing the non-obvious! III
Design is not Subjective
Architecture & Engineering : Doing the non-obvious!
Management doing the non-obvious II
Testing in production
Nine lies about work
Management: doing the nonobvious!
AI and the Future
Dealing with dependencies
Dealing with dependencies in tests
Kanban 2020

Último (17)

PPTX
Tipos de servidor em redes de computador.pptx
PPTX
Analise Estatica de Compiladores para criar uma nova LP
PDF
Customizing básico em SAP Extended Warehouse Management, EWM110 Col26
PDF
eBook - GUIA DE CONSULTA RAPIDA EM ROTEADORES E SWITCHES CISCO - VOL I.pdf
PPTX
Proposta de Implementação de uma Rede de Computador Cabeada.pptx
PPTX
Aula 9 - Funções em Python (Introdução à Ciência da Computação)
PDF
Jira Software projetos completos com scrum
PDF
Processos no SAP Extended Warehouse Management, EWM100 Col26
PDF
SEMINÁRIO DE IHC - A interface Homem-Máquina
PPT
Conceitos básicos de Redes Neurais Artificiais
PDF
Processamento da remessa no SAP ERP, SCM610 Col15
PDF
Aula 9 - Funções 202yttvrcrg5-1.pptx.pdf
PDF
Visão geral da SAP, SAP01 Col18, Introdução sistema SAP,
PDF
Banco de Dados 2atualização de Banco de d
PPTX
ccursoammaiacursoammaiacursoammaia123456
PPTX
3b - Bradesco Lean Agile Training Plan - Ritos Operacionais (1).pptx
PPT
Aula de Engenharia de Software principais caracteristicas
Tipos de servidor em redes de computador.pptx
Analise Estatica de Compiladores para criar uma nova LP
Customizing básico em SAP Extended Warehouse Management, EWM110 Col26
eBook - GUIA DE CONSULTA RAPIDA EM ROTEADORES E SWITCHES CISCO - VOL I.pdf
Proposta de Implementação de uma Rede de Computador Cabeada.pptx
Aula 9 - Funções em Python (Introdução à Ciência da Computação)
Jira Software projetos completos com scrum
Processos no SAP Extended Warehouse Management, EWM100 Col26
SEMINÁRIO DE IHC - A interface Homem-Máquina
Conceitos básicos de Redes Neurais Artificiais
Processamento da remessa no SAP ERP, SCM610 Col15
Aula 9 - Funções 202yttvrcrg5-1.pptx.pdf
Visão geral da SAP, SAP01 Col18, Introdução sistema SAP,
Banco de Dados 2atualização de Banco de d
ccursoammaiacursoammaiacursoammaia123456
3b - Bradesco Lean Agile Training Plan - Ritos Operacionais (1).pptx
Aula de Engenharia de Software principais caracteristicas

Aop Aspect J 1.5.4 Capitulo 04

  • 1. AOP – AspectJ 1.5.4 Programação Orientada a Aspectos
  • 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); }