DPI-UF INF640: Seminário Aspects e Generics

75 %
25 %
Information about DPI-UF INF640: Seminário Aspects e Generics
Science-Technology

Published on March 30, 2008

Author: MSDaibert

Source: authorstream.com

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

Add a comment

Related presentations

Related pages

Google

Advertising Programmes Business Solutions +Google About Google Google.com © 2015 - Privacy - Terms ...
Read more

Home - Welcome to Toshiba

Home - Welcome to Toshiba - Toshiba's start experience including trending news, entertainment, sports, videos, personalized content, web searches, and much ...
Read more

OER Commons

OER Commons is a dynamic digital library and network. Explore open education resources and join our network of educators dedicated to curriculum ...
Read more

Seminario di Matematica Applicata

Seminario di Matematica Applicata. I.M.A.T.I.-C.N.R. Department of Mathematics University of Pavia . Applied Mathematics Seminar (2015-16) The Applied ...
Read more

Edmodo - Connect With Students and Parents in Your ...

Edmodo is an easy way to get your students connected so they can safely collaborate, ... “My favorite feature is the social aspect of Edmodo.
Read more

IACET - International Association for Continuing Education ...

The Standard measures all aspects of a continuing education and training (CE/T) provider's process for training program development. Read more. Locate an
Read more

Academia Ubuntu

What is Ubuntu Archbishop Tutu describes fundamental aspects of Ubuntu. Ubuntu A Brief Description. ... Seminário Inaugural da Academia Ubuntu 2013 em Lisboa.
Read more

Home [www.chirbit.com]

Record. Record your audio with our iOS/Android app or via the chirbit web based recorder. Upload. Upload your audio files of up to 120mb each. Chirbit ...
Read more