[Cascavel-pm] RFC: Frameworks de Orientação a Objetos
Breno G. de Oliveira
breno em clavis.com.br
Sábado Maio 20 16:32:52 PDT 2006
Aproveitando a conversa sobre OO, alguém já usou o "reform" ?
http://search.cpan.org/~hkoch/reform-0.1/lib/reform.pm
Segundo o autor, ele oferece uma sintaxe de OO menos estranha para o
Perl 5. É claro que "estranho" depende do ponto de vista de quem vê, mas
a proposta dele não deixa de ser interessante e pode atrair
programadores de outras linguagens que acham Perl feio só pq sua sintaxe
de objetos é um pouco diferente.
Com ele, é possível fazer um programa desse jeito:
-----------------8<--------------------
use reform; # precisa vir antes de tudo
package Class < Base; # heranca
fields foo, # declarando os campos aqui
bar, # podemos omitir as chaves em
baz; # self->{var}
sub initialize($foo, $bar, $baz) # nao eh preciso extrair
{ # parametros de @_
base->initialize($foo);
self->foo = $foo;
self->bar = $bar; # referencias implicitas a instancia
self->baz = $baz; # (self), e a classe base (base)
}
sub method
{
print "Hi there";
class->static_method(); # referencia implicita tambem para
} # a propria classe (pacote)
sub get_foo
{
print "Getting self->foo!"; # intercepta leituras a variavel
return self->{foo}; # (soh dentro de getters/settters
} # o {} eh necessario)
sub set_foo($value)
{
print "Setting self->foo!"; # intercepta escritas na variavel
self->{foo} = $value; # (soh dentro de getters/settters
} # o {} eh necessario)
-----------------8<--------------------
Nilson Santos Figueiredo Junior wrote:
> On 5/20/06, Flavio S. Glock <fglock em gmail.com> wrote:
>
>>Existe um módulo novo chamado Moose, que é baseado nas idéias do Perl6
>>sobre orientação a objetos.
>
>
> Eu costumo fazer assim, hoje em dia: ou eu uso algo bem simples e
> tradicional, simplesmente usando Class::Accessor ou eu uso Moose.
>
> O Moose é bem legal.
>
> -Nilson Santos F. Jr.
> _______________________________________________
> Cascavel-pm mailing list
> Cascavel-pm em pm.org
> http://mail.pm.org/mailman/listinfo/cascavel-pm
>
>
Mais detalhes sobre a lista de discussão Cascavel-pm