Se ouve falar bastante sobre a Programação Orientada a Aspectos, e os benefícios que ela agrega à Orientação a Objetos.
Na idéia de se tentar entender estes benefícios, precisamos primeiro entender os efeitos colaterais que encontramos na Orientação a Objetos.
- Espalhamento de funcionalidades, que ocorre tipicamente através da implementação de interesses "transversais", alheios às características dos objetos. Estes interesses transversais costumam estar relacionados com requisitos não funcionais do sistema. Exemplos: Log de auditoria, acesso a banco de dados e validações de segurança.
- Entrelaçamento de funcionalidades, que se refere à implementação de diferentes responsabilidades em um mesmo trecho de código ou classe.
Estas características acabam comprometendo vários conceitos importantes da Orientação a Objetos, como a Coesão e o baixo acoplamento.
Alternativas para lidar com estes efeitos colaterais:
- Padrões de Projeto
- Programação Orientada a Aspectos (POA)
Motivação da POA:
Separação de interesses (Separation of Concerns), segundo sua importância ou responsabilidade no sistema. Assim, o programador pode separar funcionalidades secundárias em módulos distintos do sistema.
Características da POA:
Prós:
Fica por conta da motivação central da POA, a separação de interesses.
Contras:
A grande queixa da POA fica por conta da depuração de código, que é
mais complicada. Isto porque em tempo de codificação os códigos estão
separados por interesses, mas em tempo de execução estes elementos
estão juntos.
Ferramentas de POA para .NET:
Para os interessados, existem diversos frameworks de POA, inclusive open-source, para uso com o .NET Framework. Algumas referências:
- PostSharp
- Referências em CSharp-Source.net.
0 Comments:
Post a Comment