Uma verdadeira palestra em poucas palavras. Breno++
> Date: Wed, 12 Sep 2012 13:34:09 -0300 > From: [email protected] > To: [email protected] > Subject: Re: [Rio-pm] Objetos Moose vs NonMoose > > 2012/9/12 Junior Moraes <[email protected]>: > > Hi. > > > > Em 12 de setembro de 2012 11:32, Blabos de Blebe <[email protected]> > > 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 > [email protected] > http://mail.pm.org/mailman/listinfo/rio-pm
_______________________________________________ Rio-pm mailing list [email protected] http://mail.pm.org/mailman/listinfo/rio-pm
