[Rio-pm] Objetos Moose vs NonMoose

Aureliano Guedes guedes_1000 em hotmail.com
Quarta Setembro 12 09:38:00 PDT 2012


Uma verdadeira palestra em poucas palavras.

Breno++

> Date: Wed, 12 Sep 2012 13:34:09 -0300
> From: breno em rio.pm.org
> To: rio-pm em pm.org
> Subject: Re: [Rio-pm] Objetos Moose vs NonMoose
> 
> 2012/9/12 Junior Moraes <juniiior182 em gmail.com>:
> > Hi.
> >
> > Em 12 de setembro de 2012 11:32, Blabos de Blebe <blabos em gmail.com>
> > escreveu:
> >
> >> > Módulos criados com bless possuem um modelo diferente dos módulos que
> >> > utilizam o Moose, certo?
> >>
> >> Hein? Defina modelo.
> >
> >
> > A "arquitetura" do módulo internamente.
> > Não sei bem a definição disso. Mas estou falando das diferenças e
> > particularidades deles como Moose::Meta, BUILD e BEGIN, DESTROY e DEMOLISH,
> > etc...
> >
> 
> Perl oferece apenas o esqueleto para criação de objetos, como se
> fossem peças de Lego pra vc montar. Ao usar bless( $variável,
> 'Algum::Pacote' ) o "package Algum::Pacote" é tratado como uma classe,
> instanciada dentro de $variável (que é apenas uma referência,
> normalmente de hash - e.g. my $variável = {} ). As funções definidas
> lá viram métodos para o seu objeto, podendo ser acessadas como
> $variável->meu_metodo( @params ). Quando não há mais referências para
> um determinado objeto no seu programa, o objeto é destruido e o perl
> vai chamar a sub DESTROY da classe associada, caso exista uma.
> 
> Só isso.
> 
> Não existem outras palavras reservadas ou funções mágicas.
> Tecnicamente, nem mesmo a DESTROY é específica de objetos, já que é
> chamada em qualquer "package" durante a destruição do seu programa.
> Até o construtor new() é apenas uma "sub new" que você mesmo define
> dentro da sua classe e pode chamar do que quiser - usar "new" é apenas
> convenção.
> 
> Blocos BEGIN não são específicos de objetos. Você pode saber mais
> sobre eles (e outras etapas do ciclo de vida do seu programa) em
> http://perldoc.perl.org/perlmod.html#BEGIN%2c-UNITCHECK%2c-CHECK%2c-INIT-and-END
> 
> Essa estrutura é minimalista e extremamente flexível, mas por ser tão
> "crua" não é recomendado em Perl Moderno. Existem sistemas de objetos
> completos em Perl 5 construídos em cima desse esqueleto, sistemas como
> o Moose, que oferecem uma sintaxe mais limpa e direta ao ponto para
> classes, meta-classes e objetos em Perl. Existem vários outros
> sistemas de objetos (como Badger e Mouse, que vc citou, entre muitos
> outros), mas o Moose rapidamente se tornou o padrão de-facto do Perl
> Moderno. Todas as outras funções que vc citou, como BUILD e DEMOLISH,
> são dele.
> 
> Leitura recomendada para saber mais sobre objetos em Perl 5 Moderno,
> incluindo uma explicação básica sobre OO e Moose:
> 
> http://perldoc.perl.org/perlootut.html
> 
> E para aprender mais sobre o Moose e suas vantagens:
> 
> https://metacpan.org/module/Moose::Manual::Concepts
> 
> Boa leitura! Qualquer coisa, tamos aí :)
> 
> []s
> 
> -b
> _______________________________________________
> Rio-pm mailing list
> Rio-pm em pm.org
> http://mail.pm.org/mailman/listinfo/rio-pm
 		 	   		  
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/rio-pm/attachments/20120912/7d7adcca/attachment-0001.html>


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