Protótipo de um weaver para programação orientada a aspectos em ...
Protótipo de um weaver para programação orientada a aspectos em ...
Protótipo de um weaver para programação orientada a aspectos em ...
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
ex<strong>em</strong>plo do quadro 2, i<strong>de</strong>ntificado por logInsert, está se referindo ao métodoInsert da classe Arquivo, não importando quais sejam os parâmetros.2.2.2 AdviceOs advices são construções s<strong>em</strong>elhantes aos métodos na orientação a objetos e sãoassociados aos pointcuts. Eles contêm o código que será inserido no ponto <strong>de</strong> junçãoquando o pointcut correspon<strong>de</strong>nte for atingido. Po<strong>de</strong>m ser executados antes ou <strong>de</strong>poisdo método interceptado (KULESZA; SANT’ANNA; LUCENA, 2005). Todo pointcut<strong>de</strong>ve possuir <strong>um</strong> ou dois advices.Na linguag<strong>em</strong> AOPDelphi, o código Delphi contido no advice não é analisadopelo compilador. A linguag<strong>em</strong> permite que seja capturado o objeto que invocou ométodo interceptado, po<strong>de</strong>ndo utilizá-lo no escopo do advice, através da palavra self,como se tivesse sido criado localmente, porém é <strong>um</strong>a referência do objeto que chamou ométodo. No aspecto ex<strong>em</strong>plificado no quadro 2, t<strong>em</strong>-se a impl<strong>em</strong>entação <strong>de</strong> <strong>um</strong> advicedo tipo before associado ao pointcut logInsert. Conforme o ex<strong>em</strong>plo, o códigoShowMessage(‘Olá Mundo!’) será executado antes da execução do métodoInsert da classe Arquivo.3. AOPDelphiO AOPDelphi é <strong>um</strong>a ferramenta que provê suporte à programação <strong>orientada</strong> a <strong>aspectos</strong><strong>para</strong> a linguag<strong>em</strong> Delphi e é composta por <strong>um</strong>a linguag<strong>em</strong> <strong>de</strong> aspecto e <strong>um</strong> <strong>weaver</strong>. O<strong>weaver</strong> é o combinador <strong>de</strong> <strong>aspectos</strong>. Sua função é combinar os programas escritos <strong>em</strong>linguag<strong>em</strong> <strong>de</strong> componentes, no caso, as regras <strong>de</strong> negócio impl<strong>em</strong>entadas comorientação a objeto, com os escritos <strong>em</strong> linguag<strong>em</strong> <strong>de</strong> <strong>aspectos</strong>, gerando <strong>um</strong> programaque mescle as funcionalida<strong>de</strong>s <strong>de</strong>finidas nesses programas <strong>de</strong> entrada. Este processo échamado <strong>de</strong> weaving (GROTT, 2005).A ferramenta foi impl<strong>em</strong>entada utilizando a linguag<strong>em</strong> <strong>de</strong> programação Delphino ambiente Borland Delphi 7. Na impl<strong>em</strong>entação do compilador dos programas <strong>de</strong><strong>aspectos</strong> foi utilizada também a ferramenta GALS (GESSER, 2003). Através <strong>de</strong>le foramgeradas as classes <strong>para</strong> a impl<strong>em</strong>entação dos analisadores léxico e sintático, e a interfaceda classe do analisador s<strong>em</strong>ântico. Isso é feito com base nas <strong>de</strong>finições regulares,palavras reservadas, símbolos especiais, gramática e outras informações que sãofornecidas como entrada na ferramenta.Na figura 1 é apresentado o diagrama <strong>de</strong> ativida<strong>de</strong>s do AOPDelphi on<strong>de</strong> estãoespecificadas suas funcionalida<strong>de</strong>s <strong>de</strong> forma geral. Ele está dividido <strong>em</strong> duas raias,representadas pelo <strong>de</strong>senvolvedor e a ferramenta, com suas respectivas ativida<strong>de</strong>s.