Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouHelena Serpa Alterado mais de 10 anos atrás
1
PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ PROGRAMA DE PÓS-GRADUAÇÃO EM INFORMÁTICA APLICADA DISCIPLINA DE SISTEMA ORIENTADOS A OBJETOS PROGRAMAÇÃO ORIENTADA A ASPECTOS COM MÉTODOS ADAPTATIVOS Rodrigo Janasievicz Gomes Pinheiro pinheiro@ppgia.pucpr.br Walter Tonon Junior walter@bsi.com.br
2
Programação Orientada a Aspectos com Método Adaptativo OOP sempre envolvem classes colaboradoras; Sem a orientação a aspectos é implementado como: –Inserção de uma classe em outra. –Divisão das operações em métodos das classes envolvidas.
3
Método Adaptativo Desenvolvido pelo projeto DEMETER; Conhecido como padrões de propagação; Caracteristica –encapsula o comportamento de uma operação em um único lugar. Vantagens –menor dispersão dos dados; –abstrações mais simples sobre as estruturas das classes;
4
Composição do Método Adaptativo É composto por dois padrões (patterns) –Estratégia de fluxo (Traversal Strategy); –Visitante adaptativo (Adapter Visitor)
5
Estratégia de Fluxo É um padrão comportamental de objetos; A intenção é definir uma família de algoritmos, encapsular cada um deles e torna-los intercambiaveis; Estratégia: permite que o algoritmo varie independente do clientes que o utilizam; Define AONDE IR ou O QUE QUER.
6
Visitante Adaptativo É um padrão comportamental de objetos; Representa a operação a ser executada nos elementos de uma estrutura de objetos; Visitante: permite definir uma nova operação sem mudar as classes dos elementos sobre os quais opera; Define O QUE FAZER.
7
Conexões Para Aspectos Definições de aspectos –Crosscutings: são eventos chaves na execução de programas Java, ou mensagens para referenciar a combinação do método de uma classe, resultado e tipo.
8
Conexões Para AspectoJ Definições de AspectoJ –join pints: são pontos de execução do programa; –pointcuts: são meios para referenciar pontos agregados e certos valores a estes pontos; –advice: é um método que pode ser anexado aos poitcuts (funciona como um construtor da classe);
9
Exemplo inport edu.neu.ccs.demeter.dj.ClassGraph; inport edu.neu.ccs.demeter.dj.Visitor; class Company { static ClassGraph cg = new ClassGraph(); // estrutura de classe Double sumSalaries() { String s = from Company to Salary; // estratégia de fluxo Visitor v = new Visitor() // visitante adaptativo { private double sum; public void start () { sum = 0.0; }; public void before(Salary host) { sum += host.getValue(); }; public Object getReturnValue() { return new Double(sum); }; } return (Double) cg.traverse(this, s, v); } // Demais definições da Companhia }
10
Diagrama de Operação do Exemplo
11
Conclusão Os conceitos compartimentais podem ser executados de uma maneira modularizada Java puro. A classe é elegantemente encapsulada. A biblioteca DJ permite seguir as leis de DEMETER em um caminho otimizado e experimentar idéias orientadas a aspectos. Uma simples implementação incorre em visíveis degradações de performance.
12
Bibliografia Communications of the ACM, outubro de 2001, volume 44, número 10, pag. 39-41. A biblioteca DJ está disponível como fonte ou binário em: www.ccs.neu.edu/research/demeter/DJ
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.