logging in or signing up DPI-UF INF640: Seminário Aspects e Generics MSDaibert Download Post to : URL : Related Presentations : Share Add to Flag Embed Email Send to Blogs and Networks Add to Channel Uploaded from authorPOINTLite Insert YouTube videos in PowerPont slides with aS Desktop Copy embed code: (To copy code, click on the text box) Embed: URL: Thumbnail: WordPress Embed Customize Embed The presentation is successfully added In Your Favorites. Views: 88 Category: Science & Tech.. License: All Rights Reserved Like it (1) Dislike it (0) Added: March 30, 2008 This Presentation is Public Favorites: 0 Presentation Description DPI-UF INF640: Seminário Aspects e Generics. Autor: Marcelo Daibert Comments Posting comment... Premium member Presentation Transcript Aspectos + Generics : Aspectos + Generics Generic Aspect Language Ciência da Computação Universidade Federal de Viçosa Tiago de Oliveira JanuárioMarcelo Santos Daibert Brian Luppi PimentelRonoel Matos A. Botelho Júnior Agenda : Agenda Introdução Contextualização Aspectos + Generics Generic Aspect Language Estudo de Caso: MockAspect Padrão Decorator Conclusão Aspectos + Generics 2 Introdução : Introdução Padrões de Projeto: São catálogos de soluções utilizadas em aplicações de sucesso, a utilização de padrões adiciona qualidade ao seu software, como legibilidade e manutenibilidade Os padrões necessitam de alterações em pontos específicos do seu código para se adequar a um sistema Aspectos + Generics 3 Introdução : Introdução Como tornar padrões mais genéricos? Uma solução promissora são as linguagens orientadas à aspectos A orientação à aspectos prega a implementação modular de padrões de projeto típicos No entanto, as linguagens orientadas à aspectos não implementam os padrões de projeto de maneira a reusar o código fonte Há a necessidade de um maior grau de generalização nas linguagens orientadas à aspectos Aspectos + Generics 4 Contextualização : Contextualização Padrões de Projeto: Descrevem soluções para problemas recorrentes no desenvolvimento de sistemas de software orientados a objetos. Um padrão de projeto estabelece um nome e define o problema, a solução, quando aplicar esta solução e suas conseqüências Aspectos + Generics 5 Contextualização : Contextualização Orientação à Aspectos: Paradigma de programação de computadores que permite aos desenvolvedores de software separar e organizar o código de acordo com a sua importância para a aplicação (separation of concerns). Todo programa escrito no paradigma orientado a objetos possui código que é alheio a implementação do comportamento do objeto. Este código é todo aquele utilizado para implementar funcionalidades secundárias e que encontra-se espalhado por toda a aplicação (crosscutting concern). A orientação à aspectos permite que esse código seja encapsulado e modularizado Aspectos + Generics 6 Contextualização : Contextualização Aspectos + Generics 7 Contextualização : Contextualização Generics – Programação Genérica: É um paradigma de programação no qual os algoritmos são escritos em uma gramática estendida de forma a adaptar-se através da especificação das partes variáveis que se são definidas na instância do algoritmo Aspectos + Generics 8 Aspectos + Generics : Aspectos + Generics Extensão de aspectos com a noção de generics de Java Objetivos: Aumentar o poder da Linguagem e permitir uma melhor especificação de padrões de projeto Reutilização da implementação de Padrões de Projeto Minimizar as mudanças no código já implementado Aspectos + Generics 9 Generic Aspect Language : Generic Aspect Language Permite aos aspectos, a utilização de variáveis lógicas que podem representar um conjunto de entidades Podem prover diferentes graus genéricos de abstração A linguagem AspectJ não permite genericidade Aspectos + Generics 10 Generic Aspect Language : Generic Aspect Language LogicAJ se apresenta como uma extensão do AspectJ, permitindo assim a implementação de generecidade nesta linguagem orientada à aspectos Aspectos + Generics 11 http://roots.iai.uni-bonn.de/research/logicaj/ Estudo de Caso : Estudo de Caso MockAspect Aspectos + Generics 12 usrMng = new UserManagerMock(...); ... dbMng = new DBManagerMock(...); usrMng = new UserManager(...); ... dbMng = new DBManager(...); MockAspect Estudo de Caso : Estudo de Caso MockAspect Aspectos + Generics 13 aspect MockAspect { Object around(?mock, ?args, ?class) : // Intercept constructor invocations. // Bind ?class to the name of the instantiated class // and ?args to the argument list of the invocation call(?class.new(..)) && args(?args) && // Check if a class with name ?class+"Mock" exists concat(?class, "Mock", ?mock) && class(?mock) { // return instance of mock class // (includes weave time check for constructor existence) return new ?mock(?args); } } Estudo de Caso : Estudo de Caso Padrão Decorator: Aspectos + Generics 14 abstract aspect AbstractDecorator { abstract pointcut component(?component); pointcut decorator(?decorator) : component(?component) && concat(?component, Decorator, ?decorator); introduce(?component, ?decorator) : ... introduce(?decorator, ?rettype, ?params, ?name) : ... } Estudo de Caso : Estudo de Caso Padrão Decorator: Aspectos + Generics 15 introduce(?component, ?decorator) : component(?component) && decorator(?decorator) { abstract class ?decorator implements ?component { protected ?component parent; } } Estudo de Caso : Estudo de Caso Padrão Decorator: Aspectos + Generics 16 introduce(?decorator, ?rettype, ?methodName, ?params) : component(?component) && decorator(?decorator) && method(public ?rettype ?compnent.?methodName(?params)) { ?rettype ?decorator.?methodName(?params) { parent.?methodName(?params); } } Estudo de Caso : Estudo de Caso Padrão Decorator: Aspectos + Generics 17 Estudo de Caso : Estudo de Caso Padrão Decorator: Aspectos + Generics 18 Estudo de Caso : Estudo de Caso Padrão Decorator: Aspectos + Generics 19 aspect MyComponentDecorator extends AbstractDecorator { pointcut component(?component) : equals(?component, MyComponent); introduce(?decorator) : decorator(?decorator) { public class ConcreteDecorator1 extends ?decorator { public void m () { /*possibilita chamar super.m() */ } public void m3() {/*possibilita chamar super.m3()*/} } // ... more ConcreteDecorator classes ... } } Estudo de Caso : Estudo de Caso Padrão Decorator: Aspectos + Generics 20 introduce (?comp, ?sub, ?rettype, ?name, ?params, ?body) : component(?component) && subtype(?component, ?sub) && method(?rettype ?sub.?name(?params) ?body ) { method(?rettype ?sub.?name(?component self, ?params)) ?body } Conclusão : Conclusão As linguagens Orientadas à Aspectos da primeira geração não apresentam grandes ganhos na reutilização de código A utilização da abordagem de generics + aspectos busca então aumentar o grau de abstração dos aspectos A utilização das Aspect Generic Languages, como o caso da LogicAJ, busca suprir as necessidades e limitações das linguagens Orientadas à Aspectos Atuais Aspectos + Generics 21 Bibliografia : Bibliografia KNIESEL, G; RHO, T. Generic Aspect Language – Needs, Options and Challenges. KNIESEL, G; RHO, T; HANENBERG, S. Evolvable Pattern Implementations need Generic Aspects. KNIESEL, G; RHO, T. A Definition, Overview and Taxonomy of Generic Aspect Languages. HANNEMANN, J; KICZALES, G. Design Pattern Implementation on Java and AspectJ. RHO, T; KNIESEL, G; APPELTAUER, M. Fine-Grained Generic Aspects. KNIESEL, G; RHO, T. Uniform Genericity for Aspect Languages. KNIESEL, G; RHO, T. Independent Evolution of Design Patterns and Application Logic with Generic Aspects – A Case Study. Aspectos + Generics 22 Aspectos + Generics : Aspectos + Generics Generic Aspect Language Mestrado em Ciência da Computação Universidade Federal de Viçosa Tiago de Oliveira JanuárioMarcelo Santos Daibert Brian Luppi PimentelRonoel Matos A. Botelho Júnior You do not have the permission to view this presentation. In order to view it, please contact the author of the presentation.
DPI-UF INF640: Seminário Aspects e Generics MSDaibert Download Post to : URL : Related Presentations : Share Add to Flag Embed Email Send to Blogs and Networks Add to Channel Uploaded from authorPOINTLite Insert YouTube videos in PowerPont slides with aS Desktop Copy embed code: (To copy code, click on the text box) Embed: URL: Thumbnail: WordPress Embed Customize Embed The presentation is successfully added In Your Favorites. Views: 88 Category: Science & Tech.. License: All Rights Reserved Like it (1) Dislike it (0) Added: March 30, 2008 This Presentation is Public Favorites: 0 Presentation Description DPI-UF INF640: Seminário Aspects e Generics. Autor: Marcelo Daibert Comments Posting comment... Premium member Presentation Transcript Aspectos + Generics : Aspectos + Generics Generic Aspect Language Ciência da Computação Universidade Federal de Viçosa Tiago de Oliveira JanuárioMarcelo Santos Daibert Brian Luppi PimentelRonoel Matos A. Botelho Júnior Agenda : Agenda Introdução Contextualização Aspectos + Generics Generic Aspect Language Estudo de Caso: MockAspect Padrão Decorator Conclusão Aspectos + Generics 2 Introdução : Introdução Padrões de Projeto: São catálogos de soluções utilizadas em aplicações de sucesso, a utilização de padrões adiciona qualidade ao seu software, como legibilidade e manutenibilidade Os padrões necessitam de alterações em pontos específicos do seu código para se adequar a um sistema Aspectos + Generics 3 Introdução : Introdução Como tornar padrões mais genéricos? Uma solução promissora são as linguagens orientadas à aspectos A orientação à aspectos prega a implementação modular de padrões de projeto típicos No entanto, as linguagens orientadas à aspectos não implementam os padrões de projeto de maneira a reusar o código fonte Há a necessidade de um maior grau de generalização nas linguagens orientadas à aspectos Aspectos + Generics 4 Contextualização : Contextualização Padrões de Projeto: Descrevem soluções para problemas recorrentes no desenvolvimento de sistemas de software orientados a objetos. Um padrão de projeto estabelece um nome e define o problema, a solução, quando aplicar esta solução e suas conseqüências Aspectos + Generics 5 Contextualização : Contextualização Orientação à Aspectos: Paradigma de programação de computadores que permite aos desenvolvedores de software separar e organizar o código de acordo com a sua importância para a aplicação (separation of concerns). Todo programa escrito no paradigma orientado a objetos possui código que é alheio a implementação do comportamento do objeto. Este código é todo aquele utilizado para implementar funcionalidades secundárias e que encontra-se espalhado por toda a aplicação (crosscutting concern). A orientação à aspectos permite que esse código seja encapsulado e modularizado Aspectos + Generics 6 Contextualização : Contextualização Aspectos + Generics 7 Contextualização : Contextualização Generics – Programação Genérica: É um paradigma de programação no qual os algoritmos são escritos em uma gramática estendida de forma a adaptar-se através da especificação das partes variáveis que se são definidas na instância do algoritmo Aspectos + Generics 8 Aspectos + Generics : Aspectos + Generics Extensão de aspectos com a noção de generics de Java Objetivos: Aumentar o poder da Linguagem e permitir uma melhor especificação de padrões de projeto Reutilização da implementação de Padrões de Projeto Minimizar as mudanças no código já implementado Aspectos + Generics 9 Generic Aspect Language : Generic Aspect Language Permite aos aspectos, a utilização de variáveis lógicas que podem representar um conjunto de entidades Podem prover diferentes graus genéricos de abstração A linguagem AspectJ não permite genericidade Aspectos + Generics 10 Generic Aspect Language : Generic Aspect Language LogicAJ se apresenta como uma extensão do AspectJ, permitindo assim a implementação de generecidade nesta linguagem orientada à aspectos Aspectos + Generics 11 http://roots.iai.uni-bonn.de/research/logicaj/ Estudo de Caso : Estudo de Caso MockAspect Aspectos + Generics 12 usrMng = new UserManagerMock(...); ... dbMng = new DBManagerMock(...); usrMng = new UserManager(...); ... dbMng = new DBManager(...); MockAspect Estudo de Caso : Estudo de Caso MockAspect Aspectos + Generics 13 aspect MockAspect { Object around(?mock, ?args, ?class) : // Intercept constructor invocations. // Bind ?class to the name of the instantiated class // and ?args to the argument list of the invocation call(?class.new(..)) && args(?args) && // Check if a class with name ?class+"Mock" exists concat(?class, "Mock", ?mock) && class(?mock) { // return instance of mock class // (includes weave time check for constructor existence) return new ?mock(?args); } } Estudo de Caso : Estudo de Caso Padrão Decorator: Aspectos + Generics 14 abstract aspect AbstractDecorator { abstract pointcut component(?component); pointcut decorator(?decorator) : component(?component) && concat(?component, Decorator, ?decorator); introduce(?component, ?decorator) : ... introduce(?decorator, ?rettype, ?params, ?name) : ... } Estudo de Caso : Estudo de Caso Padrão Decorator: Aspectos + Generics 15 introduce(?component, ?decorator) : component(?component) && decorator(?decorator) { abstract class ?decorator implements ?component { protected ?component parent; } } Estudo de Caso : Estudo de Caso Padrão Decorator: Aspectos + Generics 16 introduce(?decorator, ?rettype, ?methodName, ?params) : component(?component) && decorator(?decorator) && method(public ?rettype ?compnent.?methodName(?params)) { ?rettype ?decorator.?methodName(?params) { parent.?methodName(?params); } } Estudo de Caso : Estudo de Caso Padrão Decorator: Aspectos + Generics 17 Estudo de Caso : Estudo de Caso Padrão Decorator: Aspectos + Generics 18 Estudo de Caso : Estudo de Caso Padrão Decorator: Aspectos + Generics 19 aspect MyComponentDecorator extends AbstractDecorator { pointcut component(?component) : equals(?component, MyComponent); introduce(?decorator) : decorator(?decorator) { public class ConcreteDecorator1 extends ?decorator { public void m () { /*possibilita chamar super.m() */ } public void m3() {/*possibilita chamar super.m3()*/} } // ... more ConcreteDecorator classes ... } } Estudo de Caso : Estudo de Caso Padrão Decorator: Aspectos + Generics 20 introduce (?comp, ?sub, ?rettype, ?name, ?params, ?body) : component(?component) && subtype(?component, ?sub) && method(?rettype ?sub.?name(?params) ?body ) { method(?rettype ?sub.?name(?component self, ?params)) ?body } Conclusão : Conclusão As linguagens Orientadas à Aspectos da primeira geração não apresentam grandes ganhos na reutilização de código A utilização da abordagem de generics + aspectos busca então aumentar o grau de abstração dos aspectos A utilização das Aspect Generic Languages, como o caso da LogicAJ, busca suprir as necessidades e limitações das linguagens Orientadas à Aspectos Atuais Aspectos + Generics 21 Bibliografia : Bibliografia KNIESEL, G; RHO, T. Generic Aspect Language – Needs, Options and Challenges. KNIESEL, G; RHO, T; HANENBERG, S. Evolvable Pattern Implementations need Generic Aspects. KNIESEL, G; RHO, T. A Definition, Overview and Taxonomy of Generic Aspect Languages. HANNEMANN, J; KICZALES, G. Design Pattern Implementation on Java and AspectJ. RHO, T; KNIESEL, G; APPELTAUER, M. Fine-Grained Generic Aspects. KNIESEL, G; RHO, T. Uniform Genericity for Aspect Languages. KNIESEL, G; RHO, T. Independent Evolution of Design Patterns and Application Logic with Generic Aspects – A Case Study. Aspectos + Generics 22 Aspectos + Generics : Aspectos + Generics Generic Aspect Language Mestrado em Ciência da Computação Universidade Federal de Viçosa Tiago de Oliveira JanuárioMarcelo Santos Daibert Brian Luppi PimentelRonoel Matos A. Botelho Júnior