SlideShare uma empresa Scribd logo
1 de 11
Baixar para ler offline
ASPECTOSProgramação Orientada a Aspectos
ROTEIRO
O que é ?
Objetivo
Estrutura
Joint Point Model (JPM)
Exemplo
Prática
O QUE É ?
É um paradigma de programação que permite separar e
organizar o código de acordo com a sua importância para a
aplicação (separation of concerns).
Todo o programa escrito no paradigma orientado a objetos
possui código que é alheio a implementação do
comportamento do objeto. A implementação das
funcionalidades secundárias se encontra espalhada por
toda a aplicação (crosscutting concern). A POA permite que
o código seja encapsulado e modularizado, encapsulando o
comportamento do Objeto;
O QUE É ?
Originalmente desenvolvido por Gregor Kiczales e sua
equipe na Xerox PARC;
Eles desenvolveram o AspectJ, a primeira e mais popular
linguagem POA;
Estrutura capaz de alterar o comportamento de classes que
não estão encapsuladas dentro do paradigma OO.
OBJETIVO
Retirar o código emaranhado, intrusivo e muitas vezes,
replicado em diversos locais do sistema, centralizando-os,
tornando os interesses transversais modularizados na
aplicação.
O código no qual a POA propõe-se a manter, não faz parte
do domínio do sistema. Portanto, é considerado um
requisito sistêmico, como: Auditoria, Controle de Falhas,
etc. Assim, a POA visa consequentemente reforçar o
conceito de coesão da Orientação a Objetos (OO).
VANTAGENS
Alta reusabilidade de código;
Menor quantidade de linhas programadas;
Facilidade para manutenção;
Menor tempo e custo de desenvolvimento;
Maior coesão entre os objetos;
Menor acoplamento entre os objetos.
ESTRUTURA
Conta com uma estrutura de encapsulamento chamada
Aspecto;
Aspecto pode alterar o comportamento de um código
através de sua estrutura;
Advice e Join Point, são estruturas de manipulação do
Aspecto;
JOIN POINT MODEL (JPM)
Este modelo define:
Join Points : Onde o aspecto pode ser aplicado.
Pointcuts : Especificar e quantificar os múltiplos Join Points.
Advice : Um meio para alterar o comportamento dos Join Points.
Execução de métodos, a criação de objetos e
lançamento de exceções. São dinâmicos e só podem
ser descobertos em tempo de execução.
Tem por base uma consulta a todos os Join Points,
para selecionar o menor conjunto deles.
O AspectJ tem dois JPMs: pointcuts e advice, e declarações inter-
tipo. Outras linguagens orientadas a aspecto tem JPMs diferentes.
Adendo é a operação a ser executada a cada Join Point. O
trecho de código que será executado quando é identificado a
execução de um Join Point, não sendo invocado
explicitamente.
EXEMPLO
pointcut set() : execution(* *.set*(..) ) && this(Point);
after() : set() {
Display.update()
;
}
before() : set() {
Display.update()
;
}
around() : set() {
Display.update()
;
}
PRÁTICANo Eclipse
GRUPO
Daniel Cândido
Gustavo Magalhães
Robson Müller
FONTES

Mais conteúdo relacionado

Mais procurados

Modelos de Processo de Software Parte 4
Modelos de Processo de Software Parte 4Modelos de Processo de Software Parte 4
Modelos de Processo de Software Parte 4Elaine Cecília Gatto
 
클라우드 네이티브 IT를 위한 4가지 요소와 상관관계 - DevOps, CI/CD, Container, 그리고 MSA
클라우드 네이티브 IT를 위한 4가지 요소와 상관관계 - DevOps, CI/CD, Container, 그리고 MSA클라우드 네이티브 IT를 위한 4가지 요소와 상관관계 - DevOps, CI/CD, Container, 그리고 MSA
클라우드 네이티브 IT를 위한 4가지 요소와 상관관계 - DevOps, CI/CD, Container, 그리고 MSAVMware Tanzu Korea
 
Ch3-Software Engineering 9
Ch3-Software Engineering 9Ch3-Software Engineering 9
Ch3-Software Engineering 9Ian Sommerville
 
software-architecture-patterns
software-architecture-patternssoftware-architecture-patterns
software-architecture-patternsPallav Kumar
 
Arquitetura em camadas em python e quanto isso pode ajudar
Arquitetura em camadas em python e quanto isso pode ajudarArquitetura em camadas em python e quanto isso pode ajudar
Arquitetura em camadas em python e quanto isso pode ajudarBetter Developer
 
Leveraging Generative AI to Accelerate Graph Innovation for National Security...
Leveraging Generative AI to Accelerate Graph Innovation for National Security...Leveraging Generative AI to Accelerate Graph Innovation for National Security...
Leveraging Generative AI to Accelerate Graph Innovation for National Security...Neo4j
 
Cluster de Alta disponibilidade
Cluster de Alta disponibilidadeCluster de Alta disponibilidade
Cluster de Alta disponibilidadeMarcelo Garcia
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de SoftwareAricelio Souza
 
Software architecture model
Software architecture modelSoftware architecture model
Software architecture modelEmmanuel Fuchs
 
Refactoring: Improving the design of existing code
Refactoring: Improving the design of existing codeRefactoring: Improving the design of existing code
Refactoring: Improving the design of existing codeKnoldus Inc.
 
Structure system analysis and design method -SSADM
Structure system analysis and design method -SSADMStructure system analysis and design method -SSADM
Structure system analysis and design method -SSADMFLYMAN TECHNOLOGY LIMITED
 
Treinamento Testes Unitários - parte 1
Treinamento Testes Unitários - parte 1Treinamento Testes Unitários - parte 1
Treinamento Testes Unitários - parte 1Diego Pacheco
 
Reinforcement Learning | Um pequeno panorama do Aprendizado por Reforço
Reinforcement Learning | Um pequeno panorama do Aprendizado por ReforçoReinforcement Learning | Um pequeno panorama do Aprendizado por Reforço
Reinforcement Learning | Um pequeno panorama do Aprendizado por ReforçoItalo Lelis de Carvalho
 
Introducao a Arquitetura de Software
Introducao a Arquitetura de SoftwareIntroducao a Arquitetura de Software
Introducao a Arquitetura de SoftwareUFPA
 

Mais procurados (20)

Agile software development
Agile software developmentAgile software development
Agile software development
 
Padrões de Projeto
Padrões de ProjetoPadrões de Projeto
Padrões de Projeto
 
Aula 07 - Diagrama de sequencia
Aula 07 - Diagrama de sequenciaAula 07 - Diagrama de sequencia
Aula 07 - Diagrama de sequencia
 
Metodos Ageis
Metodos AgeisMetodos Ageis
Metodos Ageis
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Software
 
Modelos de Processo de Software Parte 4
Modelos de Processo de Software Parte 4Modelos de Processo de Software Parte 4
Modelos de Processo de Software Parte 4
 
클라우드 네이티브 IT를 위한 4가지 요소와 상관관계 - DevOps, CI/CD, Container, 그리고 MSA
클라우드 네이티브 IT를 위한 4가지 요소와 상관관계 - DevOps, CI/CD, Container, 그리고 MSA클라우드 네이티브 IT를 위한 4가지 요소와 상관관계 - DevOps, CI/CD, Container, 그리고 MSA
클라우드 네이티브 IT를 위한 4가지 요소와 상관관계 - DevOps, CI/CD, Container, 그리고 MSA
 
Ch3-Software Engineering 9
Ch3-Software Engineering 9Ch3-Software Engineering 9
Ch3-Software Engineering 9
 
software-architecture-patterns
software-architecture-patternssoftware-architecture-patterns
software-architecture-patterns
 
Arquitetura em camadas em python e quanto isso pode ajudar
Arquitetura em camadas em python e quanto isso pode ajudarArquitetura em camadas em python e quanto isso pode ajudar
Arquitetura em camadas em python e quanto isso pode ajudar
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Software
 
Leveraging Generative AI to Accelerate Graph Innovation for National Security...
Leveraging Generative AI to Accelerate Graph Innovation for National Security...Leveraging Generative AI to Accelerate Graph Innovation for National Security...
Leveraging Generative AI to Accelerate Graph Innovation for National Security...
 
Cluster de Alta disponibilidade
Cluster de Alta disponibilidadeCluster de Alta disponibilidade
Cluster de Alta disponibilidade
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Software
 
Software architecture model
Software architecture modelSoftware architecture model
Software architecture model
 
Refactoring: Improving the design of existing code
Refactoring: Improving the design of existing codeRefactoring: Improving the design of existing code
Refactoring: Improving the design of existing code
 
Structure system analysis and design method -SSADM
Structure system analysis and design method -SSADMStructure system analysis and design method -SSADM
Structure system analysis and design method -SSADM
 
Treinamento Testes Unitários - parte 1
Treinamento Testes Unitários - parte 1Treinamento Testes Unitários - parte 1
Treinamento Testes Unitários - parte 1
 
Reinforcement Learning | Um pequeno panorama do Aprendizado por Reforço
Reinforcement Learning | Um pequeno panorama do Aprendizado por ReforçoReinforcement Learning | Um pequeno panorama do Aprendizado por Reforço
Reinforcement Learning | Um pequeno panorama do Aprendizado por Reforço
 
Introducao a Arquitetura de Software
Introducao a Arquitetura de SoftwareIntroducao a Arquitetura de Software
Introducao a Arquitetura de Software
 

Semelhante a Programação Orientada a Aspectos

Programação Oritentada a Aspecto
Programação Oritentada a AspectoProgramação Oritentada a Aspecto
Programação Oritentada a AspectoBenicio Ávila
 
TEES - MDA Apresentação Final
TEES - MDA Apresentação FinalTEES - MDA Apresentação Final
TEES - MDA Apresentação Finalguestc7f5eb
 
Modelagem de sistemas
Modelagem de sistemasModelagem de sistemas
Modelagem de sistemassauloroos01
 
Entendendo a Tríade Model-View-Controller (MVC) Utilizando Padrões de Projeto...
Entendendo a Tríade Model-View-Controller (MVC) Utilizando Padrões de Projeto...Entendendo a Tríade Model-View-Controller (MVC) Utilizando Padrões de Projeto...
Entendendo a Tríade Model-View-Controller (MVC) Utilizando Padrões de Projeto...Lucas Furtado de Oliveira
 
Net uma revisão sobre a programação orientada a objetos
Net   uma revisão sobre a programação orientada a objetosNet   uma revisão sobre a programação orientada a objetos
Net uma revisão sobre a programação orientada a objetosLP Maquinas
 
Tech Thursday -Spring Roo
Tech Thursday -Spring RooTech Thursday -Spring Roo
Tech Thursday -Spring Roomarcosbeirigo
 
Entendendo a Tríade Model-View-Controller (MVC) utilizando padrões de projeto...
Entendendo a Tríade Model-View-Controller (MVC) utilizando padrões de projeto...Entendendo a Tríade Model-View-Controller (MVC) utilizando padrões de projeto...
Entendendo a Tríade Model-View-Controller (MVC) utilizando padrões de projeto...Lucas Furtado de Oliveira
 
Construção de Frameworks com Annotation e Reflection API em Java
Construção de Frameworks com Annotation e Reflection API em JavaConstrução de Frameworks com Annotation e Reflection API em Java
Construção de Frameworks com Annotation e Reflection API em JavaFernando Camargo
 
Logica de Programação Vitor Jose de Souza.pptx
Logica de Programação Vitor Jose de Souza.pptxLogica de Programação Vitor Jose de Souza.pptx
Logica de Programação Vitor Jose de Souza.pptxJoseVitorSantanadeMe
 
5507 os principais design patterns
5507   os principais design patterns5507   os principais design patterns
5507 os principais design patternsAndre Baltieri
 
MVC já era! O negócio é DCI!
MVC já era! O negócio é DCI!MVC já era! O negócio é DCI!
MVC já era! O negócio é DCI!Flávio Lisboa
 
Metodologia orientado a objetos
Metodologia orientado a objetosMetodologia orientado a objetos
Metodologia orientado a objetosGabriel Faustino
 
DDD – Domain Driven Design
DDD – Domain Driven DesignDDD – Domain Driven Design
DDD – Domain Driven DesignÍtalo Bandeira
 

Semelhante a Programação Orientada a Aspectos (20)

Programação Oritentada a Aspecto
Programação Oritentada a AspectoProgramação Oritentada a Aspecto
Programação Oritentada a Aspecto
 
Apresentação - POA
Apresentação - POAApresentação - POA
Apresentação - POA
 
Padrões de Projeto de Software
Padrões de Projeto de SoftwarePadrões de Projeto de Software
Padrões de Projeto de Software
 
TEES - MDA Apresentação Final
TEES - MDA Apresentação FinalTEES - MDA Apresentação Final
TEES - MDA Apresentação Final
 
Modelagem de sistemas
Modelagem de sistemasModelagem de sistemas
Modelagem de sistemas
 
Entendendo a Tríade Model-View-Controller (MVC) Utilizando Padrões de Projeto...
Entendendo a Tríade Model-View-Controller (MVC) Utilizando Padrões de Projeto...Entendendo a Tríade Model-View-Controller (MVC) Utilizando Padrões de Projeto...
Entendendo a Tríade Model-View-Controller (MVC) Utilizando Padrões de Projeto...
 
Análise de sistemas oo 1
Análise de sistemas oo   1Análise de sistemas oo   1
Análise de sistemas oo 1
 
Net uma revisão sobre a programação orientada a objetos
Net   uma revisão sobre a programação orientada a objetosNet   uma revisão sobre a programação orientada a objetos
Net uma revisão sobre a programação orientada a objetos
 
Tech Thursday -Spring Roo
Tech Thursday -Spring RooTech Thursday -Spring Roo
Tech Thursday -Spring Roo
 
Entendendo a Tríade Model-View-Controller (MVC) utilizando padrões de projeto...
Entendendo a Tríade Model-View-Controller (MVC) utilizando padrões de projeto...Entendendo a Tríade Model-View-Controller (MVC) utilizando padrões de projeto...
Entendendo a Tríade Model-View-Controller (MVC) utilizando padrões de projeto...
 
Construção de Frameworks com Annotation e Reflection API em Java
Construção de Frameworks com Annotation e Reflection API em JavaConstrução de Frameworks com Annotation e Reflection API em Java
Construção de Frameworks com Annotation e Reflection API em Java
 
Logica de Programação Vitor Jose de Souza.pptx
Logica de Programação Vitor Jose de Souza.pptxLogica de Programação Vitor Jose de Souza.pptx
Logica de Programação Vitor Jose de Souza.pptx
 
5507 os principais design patterns
5507   os principais design patterns5507   os principais design patterns
5507 os principais design patterns
 
Naked Objects
Naked ObjectsNaked Objects
Naked Objects
 
Projeto de Software
Projeto de SoftwareProjeto de Software
Projeto de Software
 
MVC já era! O negócio é DCI!
MVC já era! O negócio é DCI!MVC já era! O negócio é DCI!
MVC já era! O negócio é DCI!
 
Metodologia orientado a objetos
Metodologia orientado a objetosMetodologia orientado a objetos
Metodologia orientado a objetos
 
Travalho versao final
Travalho versao finalTravalho versao final
Travalho versao final
 
DDD – Domain Driven Design
DDD – Domain Driven DesignDDD – Domain Driven Design
DDD – Domain Driven Design
 
Treinamento DDD .Net
Treinamento DDD .NetTreinamento DDD .Net
Treinamento DDD .Net
 

Programação Orientada a Aspectos

  • 2. ROTEIRO O que é ? Objetivo Estrutura Joint Point Model (JPM) Exemplo Prática
  • 3. O QUE É ? É um paradigma de programação que permite separar e organizar o código de acordo com a sua importância para a aplicação (separation of concerns). Todo o programa escrito no paradigma orientado a objetos possui código que é alheio a implementação do comportamento do objeto. A implementação das funcionalidades secundárias se encontra espalhada por toda a aplicação (crosscutting concern). A POA permite que o código seja encapsulado e modularizado, encapsulando o comportamento do Objeto;
  • 4. O QUE É ? Originalmente desenvolvido por Gregor Kiczales e sua equipe na Xerox PARC; Eles desenvolveram o AspectJ, a primeira e mais popular linguagem POA; Estrutura capaz de alterar o comportamento de classes que não estão encapsuladas dentro do paradigma OO.
  • 5. OBJETIVO Retirar o código emaranhado, intrusivo e muitas vezes, replicado em diversos locais do sistema, centralizando-os, tornando os interesses transversais modularizados na aplicação. O código no qual a POA propõe-se a manter, não faz parte do domínio do sistema. Portanto, é considerado um requisito sistêmico, como: Auditoria, Controle de Falhas, etc. Assim, a POA visa consequentemente reforçar o conceito de coesão da Orientação a Objetos (OO).
  • 6. VANTAGENS Alta reusabilidade de código; Menor quantidade de linhas programadas; Facilidade para manutenção; Menor tempo e custo de desenvolvimento; Maior coesão entre os objetos; Menor acoplamento entre os objetos.
  • 7. ESTRUTURA Conta com uma estrutura de encapsulamento chamada Aspecto; Aspecto pode alterar o comportamento de um código através de sua estrutura; Advice e Join Point, são estruturas de manipulação do Aspecto;
  • 8. JOIN POINT MODEL (JPM) Este modelo define: Join Points : Onde o aspecto pode ser aplicado. Pointcuts : Especificar e quantificar os múltiplos Join Points. Advice : Um meio para alterar o comportamento dos Join Points. Execução de métodos, a criação de objetos e lançamento de exceções. São dinâmicos e só podem ser descobertos em tempo de execução. Tem por base uma consulta a todos os Join Points, para selecionar o menor conjunto deles. O AspectJ tem dois JPMs: pointcuts e advice, e declarações inter- tipo. Outras linguagens orientadas a aspecto tem JPMs diferentes. Adendo é a operação a ser executada a cada Join Point. O trecho de código que será executado quando é identificado a execução de um Join Point, não sendo invocado explicitamente.
  • 9. EXEMPLO pointcut set() : execution(* *.set*(..) ) && this(Point); after() : set() { Display.update() ; } before() : set() { Display.update() ; } around() : set() { Display.update() ; }