Вы находитесь на странице: 1из 3

UNIVERSIDADE ESTADUAL DE SANTA CRUZ

Departamento de Cincias Exatas e Tecnolgicas Bacharelado em Cincia da Computao CET 087 Conceitos de Linguagens de Programao Ilhus, 24 de Janeiro de 2012. Alunos: Matheus Min Hafner e Tiago Xavier Cruz Questionrio de CLP 1. O que POA? R: A AOP, assim como a Programao Orientada a Objetos (Object-Oriented Programming ou OOP), introduz um novo paradigma e um conjunto de diretrizes para facilitar o desenvolvimento de software. Ela pode ser vista como um estilo de programao, por abordar de maneira mais elegante questes que poderiam ser resolvidas de outras formas. Tem como principal caracterstica separar requisitos funcionais dos requisitos no-funcionais de um sistema. Alm disso, no trabalha isoladamente, pelo contrrio, extende outros paradigmas de programao. 2. Quem introduziu e quando foi criada a POA? R: A POA foi introduzida por Gregor Kickzales, quando estava no Xerox Palo Alt Research Center, no ano de 1996. 3. O que esperamos que a POA venha a contribuir? R: Utilizando a POA, podemos criar implementaes que so fceis de desenhar, entender e manter. Deste modo, POA traz maior produtividade, qualidade e facilidade para a implementao de novas funcionalidades. Podemos tambm esperar da POA um aumento na facilidade de reutilizao de cdigo, como tambm o surgimento de um profissional especializado em tratamento de erros, por exemplo, que no precise conhecer as funcionalidades principais do sistema a fundo. 4. O que so os Aspectos e por que devemos utiliz-los? R: O aspect (aspecto) o ponto central da Orientao a Aspectos, assim como uma classe o ponto central em orientao a objetos. Nele so declarados e implementados os cdigos que expressam as regras de mesclagem das funcionalidades. Pointcuts, advices, introductions e declaraes so combinados em aspectos. Alm dos elementos da Orientao a Aspecto, um aspecto tambm pode conter mtodos e variveis membros assim como nas classes Java. Assim, devemos utiliz-los porque eles proporcionam uma facilidade no tratamento dos interesses, pois estes esto concentrados em um nico mdulo. 5. Qual a motivao para programar em orientao a aspectos? R: A Orientao a Aspectos traz novas dificuldades a programao, mesmo porque uma nova metodologia, e tudo que novo requer um tempo de aprendizado. Mas a Orientao a Aspectos oferece vantagens que cobrem esse tipo de problema: Responsabilidades mais transparentes de cada mdulo: cada mdulo responsvel apenas pelas tarefas destinadas ao prprio mdulo. Os mdulo so mais independentes. Modularizao mais alta: As responsabilidades so melhor definidas em cada mdulo, os mdulos tem baixo acoplamento entre si. Evoluo do sistema mais facilitada: O baixo acoplamento possibilita que alteraes no sistema sejam feitas sem alterao do ncleo Decises de design podem ser tomadas com mais atraso: Devido ao baixo acoplamento no necessrio pensar em todos os problemas no incio do desenvolvimento do sistema Mais reusabilidade do cdigo: Os mdulos podem ser mais reaproveitados devido

a alta coeso e baixo acoplamento Sistemas mais fceis de desenvolver e manter: Os aspectos tornam a integrao das partes do sistema um modulo separado, o que traz mais facilidade no desenvolvimento Custos reduzidos de introduo de novas funcionalidades: Novas funcionalidades podem ser introduzidas criando aspectos, no sendo necessrio alterar o ncleo para adicionar tais funcionalidades. 6. Cite um exemplo onde tem-se uma aplicao com POA. R: Um exemplo de Hello World em POA um bom exemplo, mas antes veremos como ficaria um Hello World em Java:
public class Hello { public void sayHello(){ System.out.print("Hello"); } }

Agora em POA:
public aspect AspectHello { // pointcut que seleciona como join point a execuo do // mtodo // sayHello da classe Hello pointcut world(): execution (public void Hello.sayHello()); // advice que ser executado aps cada join point // selecionado // pelo pointcut world() after() returning: world() { System.out.println(" World"); } }

7.

O que Pointcuts e Joinpoints? R: Pointcut uma construo de linguagem que junta um conjunto de Joinpoints baseandose em um critrio pr-definido. Enquanto que os Joinpoints representam pontos bem definidos em uma execuo de um programa. Joinpoints tpicos em AspectJ podem ser por exemplo chamadas de mtodos, acessos a membros de uma classe entre outras aes de execuo. 8. O que AspectJ? R: O AspectJ uma ferramenta open source que acrescenta os conceitos de AOP linguagem Java, atravs de uma extenso linguagem: os "aspects". Ele utiliza Java como a linguagem para a implementao dos concerns individuais, e tem construes para a especificao das regras de weaving, que so especificadas em termos de join points, pointcuts e advices, e tudo isto encapsulado em um aspect. 9. O que Weaver? R: Weaving o processo onde feita a mesclagem dos mdulos do sistema de acordo com os aspectos encontrados. O weaving como uma outra etapa da compilao. Weaving rules so as regras que devem ser aplicadas durante essa fase da compilao e Weaver o software que executa esse processo. 10. O que so Advices? R: Advice o trecho de codigo que executado antes (before();), depois (after();) e

simultaneamente (around();) a um Joinpoint. algo como: - Rode este cdigo antes de todos os mtodos que eu quero escrever um log. Um advice contm as alteraes que devem ser aplicadas ortogonalmente ao sistema. 11. Comente sobre Responsabilidades (Concerns), Separao de Responsabilidades (Separation of Concerns) e Responsabilidades Transversais (Crosscutting Concerns). R: Sistemas de software consistem de um conjunto de concerns, "reas de interesse", ou responsabilidades distintas como, por exemplo, responsabilidades funcionais (lgica de negcio) e no-funcionais (performance, persistncia de dados, logging, autenticao de usurios, segurana, verificao de erros, etc.). Quando projetamos um sistema, a melhor maneira atravs da separao de suas responsabilidades distintas de tal modo que poderemos alterar/re-projetar cada uma sem que isto afete as demais partes do sistema. Mas quando tratamos de responsabilidades transversais, existem responsabilidades de interesse comum que so utilizadas por vrios mdulos, estas responsabilidades so difceis de isolar porque so necessrias em vrios pontos do cdigo. A AOP complementa a OOP por introduzir uma nova dimenso para a decomposio das responsabilidades transversais: os aspectos.

12.

Quais as maiores dificuldades/problemas encontrados pelo programador em POA? R: A depurao um dos maiores problemas. Enquanto no nvel sinttico o cdigo POA aparece em separado, ele est junto do restante do cdigo em tempo de execuo. A insero de advices pode se tornar imprevisvel se no ficar definido que aspecto deve dominar. Os designers de software devem considerar meios alternativos para conseguir a separao do cdigo, como os tipos parciais do C#. Porm, estas abordagens no tem um mecanismo de quantificao que permite que o programador chegue a diversos join points com apenas uma declarao. Outro problema com a POA a captura no intencional de join points atravs dos wildcards. Por exemplo, suponha que seja especificado um determinado pointcut com um advice associado, e um wildcard para todos os mtodos que tenham certo padro de nomenclatura. Um programador desavisado pode criar um mtodo cujo nome seja compatvel com esse wildcard, sem que seja essa a sua inteno, levando execuo inadvertida do advice. Da mesma forma, ao renomear um mtodo, pode-se alterar completamente a sua semntica. Todos os programadores tem que conhecer o padro escolhido para a nomenclatura dos mtodos para que problemas sejam evitados.

Вам также может понравиться