aop
DESCRIPTION
Apresentação que usei na palestra sobre AOP.TRANSCRIPT
![Page 1: AOP](https://reader036.vdocuments.mx/reader036/viewer/2022082921/55626dadd8b42aed7d8b553c/html5/thumbnails/1.jpg)
Introdução ao desenvolvimento
orientado a aspectos
![Page 2: AOP](https://reader036.vdocuments.mx/reader036/viewer/2022082921/55626dadd8b42aed7d8b553c/html5/thumbnails/2.jpg)
Graduando em Sistemas de informação pela FAESA; Arquiteto de software; Palestras; Treinamentos; Consultor de negócios; MCP, MCTS (Web Applications e Distributed
Applications), MCPD (Web Applications); Escreve artigos para os portais Imasters, Linha de
código e os disponibiliza também em seu blog. 9 anos de experiência no mercado de TI capixaba
atuando como Instrutor, Web Master, Desenvolvedor Sênior e Gerente de Projetos;
Denis Ferrari
![Page 3: AOP](https://reader036.vdocuments.mx/reader036/viewer/2022082921/55626dadd8b42aed7d8b553c/html5/thumbnails/3.jpg)
E-mail/MSN: [email protected] Gtalk: [email protected] Site: www.denisferrari.com Blog: desenvolvimento.denisferrari.com Twitter: @denisferrari
Contato
![Page 4: AOP](https://reader036.vdocuments.mx/reader036/viewer/2022082921/55626dadd8b42aed7d8b553c/html5/thumbnails/4.jpg)
Preocupações de um sistema de informação;
Requisitos de software; Responsabilidade; Separação de responsabilidades; Responsabilidades transversais; Proposta do AOP;
Introdução a AOP
![Page 5: AOP](https://reader036.vdocuments.mx/reader036/viewer/2022082921/55626dadd8b42aed7d8b553c/html5/thumbnails/5.jpg)
Preocupações de um sistemas de
infomação
![Page 6: AOP](https://reader036.vdocuments.mx/reader036/viewer/2022082921/55626dadd8b42aed7d8b553c/html5/thumbnails/6.jpg)
Quais são as preocupações na hora de desenvolver um sistema de informação?
![Page 7: AOP](https://reader036.vdocuments.mx/reader036/viewer/2022082921/55626dadd8b42aed7d8b553c/html5/thumbnails/7.jpg)
Negócio (Requisitos funcionais); Apresentação; Persistência de dados; …; Segurânça; Auditoria de processos; Verificação de erros; …;
Preocupações de um sistemas de infomação
![Page 8: AOP](https://reader036.vdocuments.mx/reader036/viewer/2022082921/55626dadd8b42aed7d8b553c/html5/thumbnails/8.jpg)
Separação de responsabilidades
![Page 9: AOP](https://reader036.vdocuments.mx/reader036/viewer/2022082921/55626dadd8b42aed7d8b553c/html5/thumbnails/9.jpg)
Sistemas de software consistem de um conjunto de "áreas de interesse" ou responsabilidades distintas.
Responsabilidade
![Page 10: AOP](https://reader036.vdocuments.mx/reader036/viewer/2022082921/55626dadd8b42aed7d8b553c/html5/thumbnails/10.jpg)
A melhor maneira de se projetar um sistema é através da separação de suas responsabilidades distintas de tal modo que podemos alterar/re-projetar cada uma sem que isto afete as demais partes do sistema;
A eficiência do desenvolvimento aumenta na medida em que conseguimos separar as suas diferentes responsabilidades em módulos estanques;
Separação de responsabilidades
![Page 11: AOP](https://reader036.vdocuments.mx/reader036/viewer/2022082921/55626dadd8b42aed7d8b553c/html5/thumbnails/11.jpg)
Este princípio é razoavelmente antigo, e a OOP nos trouxe uma importante resposta a ele: a classe como uma dimensão para a decomposição de responsabilidades:◦ Um objeto deve fazer apenas uma tarefa e fazê-la
bem;◦ Um objeto não deve se preocupar com o que os
outros objetos fazem;◦ Num sistema macroscópico em que um objeto
coordena objetos menores, ele confia que esses objetos executam bem a sua tarefa e não se preocupa com o como eles a executam;
Separação de responsabilidades
![Page 12: AOP](https://reader036.vdocuments.mx/reader036/viewer/2022082921/55626dadd8b42aed7d8b553c/html5/thumbnails/12.jpg)
Responsabilidades transversais
![Page 13: AOP](https://reader036.vdocuments.mx/reader036/viewer/2022082921/55626dadd8b42aed7d8b553c/html5/thumbnails/13.jpg)
Em sistemas complexos, sempre existem responsabilidades de interesse comum que são utilizadas por vários módulos;
Estas responsabilidades são difíceis de isolar porque são necessárias em vários pontos do código;
Com a OOP, os crosscutting concerns ficam espalhados por vários módulos em pequenos trechos de código que são, em geral, repetitivos, resultando em sistemas difíceis de projetar, entender, implementar, manter e evoluir;
Responsabilidades transversais
![Page 14: AOP](https://reader036.vdocuments.mx/reader036/viewer/2022082921/55626dadd8b42aed7d8b553c/html5/thumbnails/14.jpg)
Proposta do AOP
![Page 15: AOP](https://reader036.vdocuments.mx/reader036/viewer/2022082921/55626dadd8b42aed7d8b553c/html5/thumbnails/15.jpg)
A programação orientada a aspectos foi criada em Palo Alto, nos laboratórios da Xerox em 1997;
A programação AOP não trabalha isoladamente, ao contrário, é um paradigma que extende outros paradigmas de programação;
AOP
![Page 16: AOP](https://reader036.vdocuments.mx/reader036/viewer/2022082921/55626dadd8b42aed7d8b553c/html5/thumbnails/16.jpg)
Na concepção de Soares e Borba (2002), “a programação orientada a aspectos propõe não apenas uma decomposição funcional, mas também ortogonal do problema. AOP permite que a implementação de um sistema seja separada em requisitos funcionais e não-funcionais”.
AOP
![Page 17: AOP](https://reader036.vdocuments.mx/reader036/viewer/2022082921/55626dadd8b42aed7d8b553c/html5/thumbnails/17.jpg)
O paradigma da AOP consiste na separação das responsabilidades transversais de um sistema em aspectos (unidades modulares) e a sua posterior composição junto às classes, formando um sistema único;
Os aspectos podem ser inseridos, alterados ou removidos em tempo de compilação. Por estarem em um único bloco de código, sua manutenção é mais simples, diminuindo a complexidade do sistema e facilitando o seu entendimento;
O código das classes fica livre do código relacionado às responsabilidades transversais, o que facilita sua reutilização em diferentes contextos, combinando diferentes aspectos dependendo das necessidades da aplicação.
AOP
![Page 18: AOP](https://reader036.vdocuments.mx/reader036/viewer/2022082921/55626dadd8b42aed7d8b553c/html5/thumbnails/18.jpg)
Utilizando a AOP, pode-se criar implementações que são fáceis de desenhar, entender e manter. Deste modo, AOP traz maior produtividade, qualidade e facilidade para a implementação de novas funcionalidades;
A AOP complementa a OOP por introduzir uma nova dimensão para a decomposição das responsabilidades transversais: os aspectos.
AOP
![Page 19: AOP](https://reader036.vdocuments.mx/reader036/viewer/2022082921/55626dadd8b42aed7d8b553c/html5/thumbnails/19.jpg)
Exemplo Prático com postsharp
![Page 20: AOP](https://reader036.vdocuments.mx/reader036/viewer/2022082921/55626dadd8b42aed7d8b553c/html5/thumbnails/20.jpg)
E-mail/MSN: [email protected] Gtalk: [email protected] Site: www.denisferrari.com Blog: desenvolvimento.denisferrari.com Twitter: @denisferrari
Contato