Resultados 1 a 2 de 2
  1. #1
    Hacker Avatar de acpguedes
    Data de Ingresso
    Sep 2011
    Localização
    #!/usr/bin/env perl
    Posts
    955

    [TUTORIAL] Introdução: MOOSE - Programação Orientada a Objetos Pós-Moderna

    O MOOSE é, em essência, uma extensão ao sistema de Programação Orientada a Objetos do Perl5. Com uma sintaxe mais elegante - baseada nas linguagens Java, Perl6 e Ruby - o MOOSE permite que o programador Perl pense mais na abstração dos dados e da classe do que em como os detalhes da classe deve ser implementada. Para utilizar o Moose no seu sistema, primeiro você deve instalar o Moose. A instalação pode ser via CPAN (Windows e Linux) ou via instalador de pacotes do seu Linux.
    Para começar nossos estudos com Moose vamos utilizar o exemplo mais clássico da programação OOP. Vamos criar uma classe Ponto. Para isso cri um arquivo Ponto.pm:
    Código PHP:
    $vi Ponto.pm 
    e adicione o seguinte código:
    Código PHP:

      
    #!/usr/bin/perl 

    package Ponto;
    use 
    Moose;
    use 
    common::sense;

    #Declara os atributos x e y
    #como inteiros para leitura e escrita
    #ou seja, os valores podem ser modificados
    #durante a execução do programa.

    has 'x' => (isa =>'Int'
                
    is => 'rw');
    has 'y' => (isa => 'Int',
                
    is  => 'rw');

    1
    salve o arquivo e crie outro arquivo, usa_ponto.pl
    Código PHP:
    $vi usa_ponto.pl 


    Código PHP:
    #!/usr/bin/perl 

    use strict
    use 
    warnings;
    use 
    lib ".";
    use 
    Ponto;

    my $ponto Ponto->new;

    $ponto->x(3);

    $ponto->y(4);

    printf "O objeto $ponto tem as coordenadas: %d e %d\n ",

    $ponto->x$ponto->y
    Salve o arquivo e execute o Script:
    Código PHP:
    perl usa_ponto.pl 
    Código PHP:
    O objeto Ponto=HASH(0x153b28tem as coordenadas3 e 4 


    Veja que, gratuitamente, o Moose criou os métodos new, x e y. Ao definirmos os atributos x e y o Moose já criou métodos para estes métodos para atribuir e ler o valor.


    Conceitos de OOP com Moose:
    Como o Moose tenta obter o que há de melhor no mundo OOP, ele possuí conceitos um pouco diferenciados, principalmente para programadores acostumados com a programação estruturada. Estes conceitos são classes, atributos, métodos, regras, modificadores de métodos, tipos, delegação, construção, destruição, instância, privacidade e herança.

    Classe:
    A classe é a própria abstração do objeto. É como um manual de montagem que diz ao Perl como construir o objeto. Quando criamos um pacote no Perl e declaramos use Moose neste pacote ele automaticamente se torna uma classe com alguns métodos e facilidades já criados pelo Moose:

    Exemplo:
    1 – crie o arquivo line.pl: $ vi line.pl
    2- Adicione o código:
    Código PHP:
    #!/usr/bin/perl

      
    package Line;{

        use 
    Moose;

      }

      
    package Main;{

      
    my $linha Line->new();

      print 
    "O objeto linha: $linha\n"

      

    Execute o script:



    $ perl Line.pm
    O objeto linha: Line=HASH(0x611728)

    $



    Além do método new( ), o Moose e o Perl criam diversas facilidades para a nossa classe. Para ver os detalhes, vamos ver o Objeto criado pelo Moose no debuger do perl. Digite perl -d line.pl na sua linha de comandos:


    Código PHP:
    $perl -d line.pl 
    Código PHP:

      Loading DB routines from perl5db
    .pl version 1.33

      Editor support available
    .

      
    Enter h or `h h' for help, or `man perldebug' for more help.

      Line::(line.pl3):      use Moose;

      DB<1> 




    No prompt do debugger envie o comando n duas vezes. Este comando executa a linha atual:

    Código PHP:

        DB
    <1n

        DB
    <1
    Isto te colocará na linha 6 do script. Onde iremos criar o objeto. O comando v mostra a região do código onde estamos:

    Código PHP:

        DB
    <1v

      
    use Moose;

      }

      
    package Main;{

      ==>    
    my $linha Line->new();

      :      print 
    "O objeto linha: $linha\n"

      

             

    Execute n novamente para criar o objeto. Depois envie o comando m $linha, que irá mostrar os métodos da classe:

    Código PHP:

        DB
    <1n

      Main
    ::(Line.pm:7):      print "O objeto linha: $linha\n"

        
    DB<2m $linha

      after

      around
      augment
      before
      blessed
      confess
      
    extends
      
    has
      inner

      meta
      override
      super
      with
      via Moose
    ::ObjectBUILDALL
      via Moose
    ::ObjectBUILDARGS
      via Moose
    ::ObjectDEMOLISHALL
      via Moose
    ::ObjectDESTROY
      via Moose
    ::ObjectDOES
      via Moose
    ::Objectdoes
      via Moose
    ::Objectdump
      via Moose
    ::Object: new
      
    via UNIVERSALVERSION
      via UNIVERSAL
    can
      via UNIVERSAL
    isa
        DB
    <3
    VERSION, isa e can são herdados da Classe Universal, a classe pai de todas as classes no Perl. Os outros métodos são facilidades criadas pela classe Moose::Object e pelo Moose. Toda classe criada com Moose será uma classe descendente de Universal e Moose::Object.

    Fonte: DevMedia
    Autor: Thiago Glauco
    So respondo se a consiencia perguntar!!!
    Não Respondo MP's de perguntas, as faça em um tópico!

    Perl User, Bioinformatcs Programmer!

  2. #2
    White Hat Administrador Avatar de fvox
    Data de Ingresso
    Sep 2005
    Localização
    São Paulo - SP
    Posts
    4.428
    Hi.

    É disso que o Brasil gosta! Yahahahah.

    []'s
    Acha que está caindo na insanidade? Mergulhe!

    Twitter | Blog | Facebook | Github

Permissões de Postagem

  • Você não pode iniciar novos tópicos
  • Você não pode enviar respostas
  • Você não pode enviar anexos
  • Você não pode editar suas mensagens
  •