| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/05/2006 13:32:46
|
Fabricio Cozer Martins
GUJ Ranger
![[Avatar]](/images/avatar/2ecd2bd94734e5dd392d8678bc64cdab.jpg)
Membro desde: 08/05/2004 10:22:03
Mensagens: 935
Localização: Salvador/Brasil
Offline
|
Olá,
alguém conhece algum pattern que auxilie na construção de fórmulas para cálculos de regras de negócio ?
Estou querendo que o usuário advanced da aplicação possa alterar as fórmulas de um determinado cálculo.
Por exemplo.
Fórmula cálculo para tirar a média de um determinado aluno:
Parâmetros:
N1 = Nota Primeira Prova
N2 = Nota Segunda Prova
TP = Trabalho Prático
SE = Seminário
Um determinado professor deseja que a média da turma dele, a partir desses parãmetros seja dessa forma:
média = (N1 + N2 + TP + SE )/4
Já um outro professor deseja de uma outra forma, e com parâmetros diferentes:
N1 = Nota Primeira Prova
N2 = Nota Segunda Prova
N3 = Nota Terceira Prova
média = (N1*2 + N2*3 + N3*5 )/10
Existe algum Pattern que se adequa a esse tipo de problema ?
Resumindo para um determinado tipo de cálculo eu teria uma lista de parâmetros (numéricos), uma fórmula (operações aritméticas) relacionando parâmetros e um retorno numérico resultada do cálculo.
|
Fabrício Cozer Martins
Analista de Sistemas
Bacharel em Ciência da Computação da UFBa
Sun Certified Programmer for Java 2 Platform 1.4
Sun Certified Web Component Developer for J2EE 1.4 |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/05/2006 14:00:22
|
Giuliano Mega
JavaBaby
Membro desde: 22/08/2005 19:01:35
Mensagens: 94
Offline
|
Oi Fabrício,
Me parece que você quer construir um parser bastante simples.
Talvez dar uma olhada em intepreter e visitor (GoF) ajude.
Abraços,
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/05/2006 15:23:52
|
Fabricio Cozer Martins
GUJ Ranger
![[Avatar]](/images/avatar/2ecd2bd94734e5dd392d8678bc64cdab.jpg)
Membro desde: 08/05/2004 10:22:03
Mensagens: 935
Localização: Salvador/Brasil
Offline
|
Hunn ... verdade, o Interpreter pode ajudar
Vai ter que existe um esquema que irá interpretar e converter as expressões, como se fosse um analisador léxico, identificar o que são símbolos de operação matemática e o que são variáveis (parâmetros). Deve existir uma linguagem própria pra isso.
Agora no que o Visitor pode ajudar ?
Alguém já usou http://www.ognl.org/ ?
|
Fabrício Cozer Martins
Analista de Sistemas
Bacharel em Ciência da Computação da UFBa
Sun Certified Programmer for Java 2 Platform 1.4
Sun Certified Web Component Developer for J2EE 1.4 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/05/2006 15:47:34
|
Giuliano Mega
JavaBaby
Membro desde: 22/08/2005 19:01:35
Mensagens: 94
Offline
|
Vai ter que existe um esquema que irá interpretar e converter as expressões, como se fosse um analisador léxico, identificar o que são símbolos de operação matemática e o que são variáveis (parâmetros). Deve existir uma linguagem própria pra isso.
Se você tiver uma definição precisa para isso, você pode usar o JFlex http://jflex.de. Como o seu caso parece bem simples, no entanto, talvez dê para se virar com o pacote de expressões regulares de Java.
Agora no que o Visitor pode ajudar ?
Pode te ajudar a desacoplar o lógica de processamento dos nodos da árvore sintática da implementação deles.
Abraços,
Giuliano
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/05/2006 16:26:25
|
Fabricio Cozer Martins
GUJ Ranger
![[Avatar]](/images/avatar/2ecd2bd94734e5dd392d8678bc64cdab.jpg)
Membro desde: 08/05/2004 10:22:03
Mensagens: 935
Localização: Salvador/Brasil
Offline
|
Sim ,esse caso é o mais simples, mas tem mais fórmulas, e tem outras fórmulas que depedem de condições para se tomar outras decisões.
|
Fabrício Cozer Martins
Analista de Sistemas
Bacharel em Ciência da Computação da UFBa
Sun Certified Programmer for Java 2 Platform 1.4
Sun Certified Web Component Developer for J2EE 1.4 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/05/2006 16:32:22
|
Giuliano Mega
JavaBaby
Membro desde: 22/08/2005 19:01:35
Mensagens: 94
Offline
|
Se você estiver com preguiça de escrever o parser e tiver uma gramática pronta para a sua linguagem de expressões, você pode usar o CUP para gerar o parser para você.
O JFlex tem um ponto de integração com o CUP, daí você leva, numa tacada só, parser e analisador léxico (eles geram a árvore sintática para você, te poupando dos detalhes chatos que esse tipo de processamento envolve).
http://www2.cs.tum.edu/projects/cup/
Daí a única coisa que você tem que de fato implementar é o código de processamento da árvore.
Abraços,
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/05/2006 16:43:28
|
Fabricio Cozer Martins
GUJ Ranger
![[Avatar]](/images/avatar/2ecd2bd94734e5dd392d8678bc64cdab.jpg)
Membro desde: 08/05/2004 10:22:03
Mensagens: 935
Localização: Salvador/Brasil
Offline
|
tá cara, vou pensar numa outra forma mais simples aqui aí depois eu mando pra cá
|
Fabrício Cozer Martins
Analista de Sistemas
Bacharel em Ciência da Computação da UFBa
Sun Certified Programmer for Java 2 Platform 1.4
Sun Certified Web Component Developer for J2EE 1.4 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/05/2006 16:50:12
|
Giuliano Mega
JavaBaby
Membro desde: 22/08/2005 19:01:35
Mensagens: 94
Offline
|
Tá chamando minha solução de complicada, é?
O JFlex é fácil de usar, tá bom?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/05/2006 16:53:24
|
Fabricio Cozer Martins
GUJ Ranger
![[Avatar]](/images/avatar/2ecd2bd94734e5dd392d8678bc64cdab.jpg)
Membro desde: 08/05/2004 10:22:03
Mensagens: 935
Localização: Salvador/Brasil
Offline
|
hehehehe, não cara, vc me ajudou bastante!!!! anotei esses links aqui, vou dar uma olhada neles depois
|
Fabrício Cozer Martins
Analista de Sistemas
Bacharel em Ciência da Computação da UFBa
Sun Certified Programmer for Java 2 Platform 1.4
Sun Certified Web Component Developer for J2EE 1.4 |
|
|
 |
|
|