[Cascavel-pm] MVC e WxPerl, agora sobre MVC mesmo, não sobre DBI (Re: MVC e WxPerl)

Daniel Ruoso daniel em ruoso.com
Quarta Maio 2 16:50:01 PDT 2007


Qua, 2007-05-02 às 19:23 +0300, Alceu Rodrigues de Freitas Junior
escreveu:
> Gostaria de escutar comentários e críticas (construtivas, por favor!)
> sobre o código e sobre a implementação do MVC. Seria ótimo também
> poder escrever o artigo de forma colaborativa, visto que até hoje só
> escrevi artigos com eu e eu mesmo. :-)

Opa,

Estava dando uma olhada no código, e no geral, achei interessante. É
claro que o fato de o Wx não ser MVC dificulta tudo, faz com que você
tenha que destruir e construir a tabela sempre que ocorra uma alteração,
o que no fim das contas acaba por não ser um MVC de verdade. Mas a
implementação num nível mais alto pode sim ser muito util.

Achei especialmente interessante o fato de o código de tratamento dos
eventos de Interface estar no Controller que dispara a ação do model que
dispara a ação do view de novo. Essa parte posso dizer que assume a
característica mais importante do MVC, que é delegar as
responsabilidades para cada uma das partes, ou seja, o único que conhece
sobre o DBI é o Model, o único que conhece sobre o Wx é o view e o
Controller é quem coordena a iteração entre os dois.

No entanto, o componente de tabela é um componente espcialmente
interessante no sentido do MVC, por ser um dos componentes que mais
podem se beneficiar de uma abordagem essencialmente MVC, uma vez que
podem melhorar a performance ao fazer lazy evaluation do model (o
resultado de uma consulta SQL, por exemplo) e ao ignorar os eventos de
dados alterados que não estão sendo exibidos naquele momento.

Nesse sentido, apesar de achar que o Java é muuuito chato e ruim, tenho
que reconhecer que a implementação de MVC do JTable é muito boa e que
estudar essa implementação ajuda muito a entender como um MVC a fundo
deve funcionar. Outro código que você pode ver é um que fiz quando ainda
trabalhava com Java, que foi um outro tipo de componente de lista,
baseado em Iteradores e não em acessos posicionais, que mostra o quanto
o MVC pode ajudar em Lazy Evaluation e em acesso a dados externos (nesse
caso fazer um ComboBox que mostra dados de uma tabela em BDB):
https://liboktiva-swing-iterator-java.dev.java.net/

Ou mais próximo, tem um código que eu fiz com Gtk2-Perl (que aliás é um
dos bindings para Perl mais poderosos que conheço, graças à Glib) onde
eu implemento uma Classe Model em Perl para uma tabela e a referência ao
objeto dessa classe é passada para o componente do Gtk (sim, o objeto
Perl é usado pelo código em C) e a GtkTree usa diretamente a minha
classe para mostrar os dados. http://www.perlmonks.org/?node_id=522702

Para finalizar, eu sou sempre um advogado do Gtk. Acho ele um toolkit
extremamente poderoso (o Wx na minha máquina inclusive usa ele), e que,
até onde pude ver, vai ser mais poderoso se usado diretamente do que se
usado através do Wx. No caso do Linux sei que isso é fácil, mas assim, o
Gtk2 funciona no Windows (gaim e gimp funcionam) então é possível
utilizar ele no Perl em Windows também, aliás, existem binários prontos
para Gtk2 em Windows: http://gtk2-perl.sourceforge.net/win32/ então não
me parece que haja uma boa desculpa para não usá-lo :). E além do mais
que você também tem o Glade e o libGlade que vão te ajudar 900000% no
trabalho de montar interfaces.

Então é isso,

Falow...


daniel



Mais detalhes sobre a lista de discussão Cascavel-pm