www.lucaspersona.com.br

Sobre:
Bacharel em Ciência da Computação pela EEP, atua como Arquiteto de Software na Ci&T Software SA.
Nos últimos 7 anos participou em diversos projetos de TI, com maior destaque em tecnologia Java a partir de 1999.
Iniciou a aplicação de AOP em sistemas comerciais em 2001.
Um dos revisores do livro "The Practical Guide to Enterprise Architecture", editora Prentice Hall, tem seus artigos publicados no site EnterpriseGuys.
Está envolvido em áreas como AOP (Programação Orientada a Aspectos), Design Patterns, Metodologias Ágeis (XP: eXtreme Programming), Arquitetura J2EE, GA/GP (Algoritmos Genéticos / Programação Genética) e SOA (Arquitetura Orientada a Serviços).

Download Curriculum Vitae
Português : PDF - Curriculum Vitae em Português Word - Curriculum Vitae em Português
English : PDF - English Resume Word - English Resume


     Principal principal     Artigos artigos     Experiência experiência     Contato contato

Artigos » AOP » Classe João e Classe Maria

[Anterior: "Orientação sob outro Aspecto"] [Próximo: "Corrida sem fim"]

 
AOP

Classe João e Classe Maria

Às margens de uma floresta, um lenhador muito pobre vive com seus filhos e esposa - a madrasta de seus filhos. Em tempos de dificuldade, a falta de alimento os leva a uma solução um tanto quanto drástica: abandonar os filhos na floresta por não ter como alimentá-los.

Apesar do apelo dramático, este é o verdadeiro início do conto de fadas "João e Maria" (ou, Hãnsel und Gretel) dos Irmãos Grimm, conhecido clássico infantil.

Na continuação do conto, João e Maria, conhecendo o triste objetivo de sua madrasta, decidem marcar o caminho para conseguir voltar. Da primeira vez com sucesso, ao usarem pedras brancas. Na segunda, com pão.

E isso me lembra de um clássico quando se fala em AOP: Log.

O principal exemplo em textos de AOP utiliza este clássico no intuito de auxiliar o entendimento do novo conceito.

Talvez porque o processo de Log em uma aplicação é amplamente conhecido como necessário, mas os meios e real utilização dele se aproximam das idéias de João e Maria. Alguns logam com pedras, outros com pão. Existem os que logam. E os que não.

João e Maria, como classes, têm outras responsabilidades. São crianças. Querem brincar e se divertir. Não deveriam se preocupar em marcar o caminho percorrido.

Mas muitas vezes surgem os temidos "bruxos do Processo e do Padrão", terror dos implementadores. E com sua voz de trovão estabelecem: Todo método deve logar o início e fim de seu processamento. E as crianças tremem.

Nas primeiras semanas, os implementadores todos animados procuram as pedras brancas mais polidas para utilizar nos Logs. Claras identificações de entrada e saída de cada método. Até que o tempo começa a ficar escasso. Assim como as pedras. E surge o pão. Pedaços de Log jogados aqui e ali, que acabam sendo engolidos por outros códigos. Implementadores esfomeados que comem o pão e esquecem do Log. E João e Maria ficam perdidos na floresta.

E então temos a AOP, como uma fada-madrinha, para resolver o problema de João e Maria e acalmar os bruxos do Processo e do Padrão. Um aspecto de Log, que assume a responsabilidade de marcar o caminho e logar o início e fim de processamento de cada método. Um aspecto que pode ser colocado ou retirado de todo o sistema como um passe de mágica. Sem dependências com João e Maria, sem dependência com implementadores.

Este é um clássico da AOP que demonstra bem como uma responsabilidade - a de determinada regra de Log - pode ser retirada do código interno das classes. E transferida a um aspecto específico, de responsabilidade bem definida.

Ganha a classe, ficando mais objetiva e limpa. Ganha o implementador, focando apenas no desenvolvimento da funcionalidade da classe. Ganha o sistema, com um processo de Log padronizado e garantido, e ainda de fácil alteração. E como em todos os clássicos contos de fadas: vivem felizes para sempre.