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