Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

ZehFirino

Programação Orientada a Aspectos

Recommended Posts

OláAlguem conhece, trabalha ou ja trabalhou com Programação Orientada a Aspectos?Estava estudando sobre ela mas não entendi muito bem... Vi que é bastante utilizada em Java e que facilita em alguns pontos a programação em grandes sistemas.Alguem teria uma opinião para me passar, ou algum tutorial bacana para me passar?Um abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, o que eu sei é, que ela supri aquilo que a orientação a objetos tem como ponto fraco... Facilitando ainda mais o desenvolvimento.Agora, creio que se deve dominar OOP para partir para AOP.

Compartilhar este post


Link para o post
Compartilhar em outros sites

"Pesquisas tem apontado muitos problemas de programação que nem linguagens procedurais nem as orientadas a objetos possuem técnicas suficientemente claras para implementar algumas decisões de projeto. Isto força a implementação destas decisões de projeto a serem espalhadas através do código gerando um código confuso e difícil de desenvolver e manter. Estas decisões de projeto são difíceis de capturar porque elas atravessam as funcionalidades básicas do sistema, ou seja, não é possível separa-la em um componente ou uma classe, pois ela "pertence" a todo sistema.Neste sentido nasceu a AOP, com o intuito de apresentar técnicas de programação capazes de cobrir estas falhas. A programação orientada a aspectos permite aos programadores separar os interesses comuns do sistema (comportamentos que fogem a típica divisão de responsabilidade, como o logging), introduzindo o conceito de aspectos, os quais encapsulam comportamentos que afetam múltiplas classes.Esses comportamentos não encaixam naturalmente dentro de um modulo de um programa, ou em vários módulos de programas fortemente relacionados. Os pioneiros da programação orientada a aspectos chamam este tipo de comportamento de crosscutting porque ele atravessa a divisão de responsabilidades dos modelos de programação tradicionais.Na programação orientada a objetos a unidade natural de modularização é a classe, e um crosscutting é uma responsabilidade que está espalhada por muitas classes. Exemplos típico seria o tratamento de erros em contexto sensitivo, otimização de performance, e padrões de projeto.Trabalhar com código que apontam para responsabilidades que atravessam o sistema gera problemas que resultam da falta de modularidade. Devido a implementação desses comportamentos serem espalhados, os desenvolvedores podem encontrar dificuldades em analisar, implementar e modificar tais comportamentos. Por exemplo, o código de logging é entrelaçado ao longo de outros códigos que não estão relacionados com logging.Dependendo da complexidade e do escopo onde é inserido essa responsabilidade pode resultar em um código confuso que dependendo do local pode ter maiores ou menores implicações. A mudança de uma política de logging de uma aplicação pode envolver centenas de modificações, o que aumenta muito a quantidade de código a ser tratada, é o pior esse código vai estar espalhado em vários lugares.AOP complementa a programação orientada a objeto por facilitar um outro tipo de modularidade que expande a implementação espalhada de uma responsabilidade dentro de uma simples unidade. Esta unidade é chamada de aspecto, daí o nome programação orientada a aspectos. Os interesses tornam-se fáceis de tratar porque estão concentrados no código de aspectos e afetaram todas as unidades desejadas.Os aspectos de um sistema podem ser alterados, inseridos ou removidos em tempo de compilação, e freqüentemente reusados. Por estarem em um único bloco de código a manutenção é muito mais fácil e a complexidade do sistema diminui, facilitando o entendimento do mesmo. Uma implementação básica de AOP consiste em : uma linguagem de componente para programar os componentes, uma ou mais linguagem de aspectos para programar os aspectos, um weaver para combinar as duas linguagens, um programa de componentes e um ou mais programa de aspectos.A linguagem de componentes pode ser qualquer linguagem de programação, já a de aspectos deve ser uma especifica para facilitar a programação. O weaver seria uma espécie de montador que tem como entrada o programa de componentes e o(s) programa(s) de aspectos e como saída uma programa numa linguagem específica(C, C++, Java...)."

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eita pleura... Se eu já acho orientação a objetos um pouco complexa... isso daí então deve de dukapeta!!!Será que teria um exemplo prático pra gente poder entender melhor?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Encontrei um site de um Brasileiro que inventou o Transparent PHP, que é uma implementação de uma classe para Orientação Orientada a Aspectos para o PHP.

 

http://blog.bisna.com/aop/Manual.html

 

Levando esse fato em consideração, pode-se dizer que existe uma forma de implementar AOP sem ser uma linguagem especifica.

 

No texto que o MagicalTrevor deixou, ele disse que o Login poderia ser implementado dessa forma e, pelo que entendi, seria que o aspecto teria todo o trabalho de verificar o login, não tendo nada de verificação dentro do código. Seria isso?? se sim, como isso funcionaria? como obteria os dados do sistema?

 

Bah... isso ainda ta confuso pra mim

 

Valew

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.