Perl OO & Atributos com Class::Accessor

Publicado por Daniel Vinciguerra (última atualização em 25/04/2016)

[ Hits: 5.338 ]

Homepage: http://bivee.com.br

Download class-acessor.pl

Download class-accessors.pl (versão 2)




O intuito deste script foi mostrar como pode ser fácil criar classes com atributos e accessors através do Class::Accessor.

OBSERVAÇÂO:
Este script depende do módulo Class::Accessor... para instalar o mesmo segue o comando:
$ sudo perl -MCPAN -e "install Class::Accessor"

PERL DOC Class::Accessor:
http://search.cpan.org/~kasei/Class-Accessor-0.34/lib/Class/Accessor.pm

  



Versões atualizadas deste script

Versão 2 - Enviado por Daniel Vinciguerra em 03/04/2016

Changelog: Accessors em Perl são equivalentes aos métodos getters e setters do Java e do .Net e são utilizados para fazer o encapsulamento dos atributos da nossa classe.

Eles também permitem que utilizemos uma interface mais "amigável" na hora de acessar os atributos:

Ex.:
Acesso Direto
GET: $self->{nome}
SET: $self->{idade} = 12

Usando Accessor
GET: $self->nome() ou $self->nome
SET: $self->idade(12)


CHANGES:

- Tradução do script
- Melhoria nos comentários.
- "Modernização" da sintaxe


PRÉ-REQUISITOS

- perl 5.10 ou superior (para utilizar o say)


REFERÊNCIAS

https://metacpan.org/pod/Class::Accessor


EXECUTANDO

$ perl class-accessors.pl

Download class-accessors.pl


Esconder código-fonte

#!/usr/bin/perl -w

# (c) 2011 Bivee. All rights reserveds.
# author dvicniguerra < dan.vinciguerra at gmail.com >
#
# This script is distributed under Perl Itself License

# declaring Pessoa class
package Pessoa;

# This module provide a constructor and att declarations
# like Moose this way.
use Class::Accessor "antlers";

# nome attribute
has nome => ( 
    is => "rw", 
    isa => "Str" 
);

# email attribute
has email => ( 
    is => "rw", 
    isa => "Str" 
);

# idade attribute
has idade => ( 
    is => "rw", 
    isa => "Num" 
);


# meet method show some info about Pessoa object
sub meeting_you {
    my $self = shift;
    print "Hi " . $self->nome . ", you have " . $self->idade . " years old and your email is " . $self->email;
}


# now we can call the class
package main;

# getting a new pessoa object
my $p = Pessoa->new({ 
    nome => 'Daniel Vinciguerra', 
    idade => 23, 
    email => 'daniel.vinciguerra@test.com'
});

# calling meeting_you method from Pessoa object
$p->meeting_you;

Scripts recomendados

Exemplo de uso do módulo Term::InKey

Separando seu código em módulos no Perl

Calculo de valor futuro - regrassão linear

Usando sub/method signatures no Perl

arruma_nomes.pl


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts