http://www.les.inf.puc-rio.br/opus
OPUS Group
OpenOrb: implementação de algumas
composições de Padrões em CaesarJ
Alessandro Gurgel | [email protected]
Francisco Dantas | [email protected]
Alessandro Garcia | [email protected]
LES | DI |PUC-Rio - Brazil
Composite e Visitor OO
Composite
Visitor
November 15
2
Composite Visitor CaesarJ


Métodos accept do Visitor na estrutura de
Componentes.
Solução AO


Solução CaesarJ

November 15
Usa um aspecto com ID para inserir esses métodos
na estrutura.
Uso de Virtual Classes

Representar as estruturas (Composite e Visitor)

Implementação pelos métodos accept do Visitor
Francisco Dantas et. al @ OPUS Group
3
CompositeVisitor CaesarJ
November 15
Francisco Dantas et. al @ OPUS Group
4
Prototype e State OO
State
Prototype
November 15
Francisco Dantas et. al @ OPUS Group
5
Prototype State



November 15
Concrete States são também Prototypes.
Concrete Bind.rebind() e
ConcreteBind.breakBind() fazem referência ao State
enquanto que parte do código do
ConcreteBind.makeRequest() referencia usa Prototype.
Solução AO
 Dois Aspectos: StateAspect e PrototypeAspect
 StateAspect usa ID para implementar operações do State e
aspectOf em relação à PrototypeAspect para clonar objetos.
 PrototypeAspect cria interface Prototype implementando método
clone() e usa declare parents para fazer com que às classes
BindConnected, BindState e BindRunning implemente Prototype
Francisco Dantas et. al @ OPUS Group
6
Prototype State CaesarJ
State
Prototype
November 15
Francisco Dantas et. al @ OPUS Group
7
Prototype State CaesarJ


November 15
Prototype irá interceptar makeRequest
tendo a definição de dois adendos.
Não há necessidade de declare
precedence.
Francisco Dantas et. al @ OPUS Group
8
Abordagem

November 15
Transformar a aplicação OpenOrb em uma aplicação CaesarJ
pensando nos padrões como features de forma a modularizálos usando mixin composition para integrá-los aos
componentes.
Francisco Dantas et. al @ OPUS Group
9
Problemas



November 15
Alguns padrões não trazem benefícios a aplicação. Em algumas situações há
impressão de que foram utilizados só para enfatizar o uso do padrão. Sem
reais benefícios. Ex: FactoryMethod e Command.
Documentação fraca do OpenOrb e código sem comentários.
No artigo AOSD06 é dito que alguns padrões (ex Command) não tiveram
bons rendimentos por causa da instância do padrão na aplicação. Utilizando
a mesma aplicação não poderemos ter o mesmos tipos de problema mesma
na implementação CaesarJ? O desempenho do Padrão não poderá ser
prejudicado da mesma forma?
Francisco Dantas et. al @ OPUS Group
10
Próximas Atividades


Definir um Cronograma
Definir quais Padrões serão implementados


November 15
FASE 1: padrões pouco entrelaçados
FASE 2: seguir as orientações do Nélio
Francisco Dantas et. al @ OPUS Group
11
Download

OPUS Group