[Cascavel-pm] Res: Res: checagem de utilização de interface durante a fase de compilação

Alceu R. de Freitas Jr. glasswalk3r em yahoo.com.br
Segunda Abril 2 08:52:15 PDT 2007


Olá Wilson,

Não, eu não quero transformar Perl eu Java: eu quero checar se métodos que deveriam ser sobreescritos por subclasses o foram antes de executar o programa e descobrir que o método não foi implementado corretamente. Eu posso tentar ser disciplinado o suficiente para evitar esse tipo de erro mas isso não quer dizer que qualquer outro programador que tente definir a mesma interface para uma classe específica via herança vá fazer o mesmo.

Eu não sei se é possível evitar problemas com métodos gerados dinamicamente, mas a idéia é marcar os métodos que devem ser sobreescritos e gerar erros durante a compilação. Isso evitaria erros com Class::Accessor, por exemplo.

[]'s
Alceu

----- Mensagem original ----
De: Nilson Santos Figueiredo Junior <acid06 em gmail.com>
Para: Cascavel Perl Mongers <cascavel-pm em pm.org>
Enviadas: Domingo, 1 de Abril de 2007 11:04:34
Assunto: Re: [Cascavel-pm] Res: checagem de utilização de interface durante a fase de compilação


O problema de "interface" é que o conceito só existe basicamente pra
contornar um gap de funcionalidade em Java: a falta de herança
múltipla propriamente dita. A forma padrão de se fazer isso é através
de herança múltipla. O possível problema de Perl é que só é possível
pelas ferramentas atuais uma checagem em runtime. Mas isso é assim com
qualquer linguagem moderna, na qual as classes podem ser
auto-modificantes. Então enquanto você acha "interessante" eu acho
limitador. Se você implementasse esse tipo de coisa, suas classes não
seriam mais compatíveis com coisas como o Class::Accessor, por exemplo
(bom, talvez, se você colocasse a chamada ao mk_accessors() dentro de
um bloco BEGIN isso fosse resolvido, neste caso específico). Mas
qualquer coisa que gere métodos em runtime deixaria de ser suportada.
Neste ponto, mude de linguagem de uma vez, já que você vai ter perdido
grandes recursos de Perl pra ter uma checagem superficial. Neste
ponto, é melhor você ir programa em Java ou C++ mesmo, que vão ter
checagens em tempo de compilação muito melhores - por definição.

__________________________________________________
Fale com seus amigos  de graça com o novo Yahoo! Messenger 
http://br.messenger.yahoo.com/ 


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