[SP-pm] Dúvida com OO e classes filhas

Lucas Mateus lucasmateus.oliveira em gmail.com
Terça Novembro 6 05:27:34 PST 2007


Vixiiiiiii o pessoal aki eh bem humilde ehauehauehea essa lista num serve
pra mim !!!

Em 06/11/07, André Garcia Carneiro <andre.garcia.carneir em terra.com.br>
escreveu:
>
>
> Olá!
>
>
> Exemplo bem medíocre abaixo. Sugiro você fazer RTFM em perlobj. No
> entanto, acho meramente didático, o Champs
> outro dia mesmo me recomendou um livro "Learning Object Oriented Perl",
> Randal Schwartz.
>
>
>
> <code_pai>
>
>
> package pai;
>
> sub new{
>      my $self = {};
>      bless $self;
>      return $self;
>
> }
>
> #mais métodos aqui...
>
>
> #Encapsulando atributos
>
> sub atributo {
> my ($self,$at) = @_;
> $self->{atributo} = $at if $at;
> return $self->{atributo};
>
> }
>
>
> 1;
>
> </code_pai>
>
> <code_filho>
>
> package filho;
> use base 'pai'; #HERANÇA AQUI.
>
> sub new {
>     my $self = {};
>      bless $self;
>      return $self;
> }
>
> #Mais métodos aqui...
>
> 1;
>
> <code_filho>
>
>
>
>
> Cheers!
>
>
>
>
>
> ---------- Cabeçalho original -----------
>
> De: saopaulo-pm-bounces+andre.garcia.carneir=terra.com.br em pm.org
> Para: "Lista Perl Sao Paulo" saopaulo-pm em mail.pm.org
> Cópia:
> Data: Fri, 2 Nov 2007 19:40:45 -0300
> Assunto: [SP-pm] Dúvida com OO e classes filhas
>
> > Boa noite, pessoas!
> >
> > Primeiramente, tenho 2 classes: classe.pm e filha.pm. A classe filha.pmé
> > filha de classe.pm. Seguem os códigos:
> >
> > =========
> > package filha;
> >
> > use classe;
> > our @ISA = qw(classe);
> >
> > use vars qw(@ISA);
> > sub new {
> >    my $class = "filha";
> >
> >    $class->SUPER::new;
> > }
> > 1;
> > ==========
> >
> > ==========
> > #!/usr/bin/perl
> >
> > package classe;
> >
> > use strict;
> >
> > sub new {
> >    my $class = "classe";
> >    my $self = {"a" => "b"};
> >    bless ($self, $class);
> > }
> >
> > sub func {
> >    my $self = shift;
> >
> >    print $self->{"a"};
> > }
> >
> > 1;
> > ========
> >
> > Esse código, pelo que testei, funciona perfeitamente, por exemplo,
> quando eu
> > instancia uma filha e chamo o método func, presente na classe pai.
> > No entanto, pelo que me resta de lembranças de quando fucei OO em perl,
> ao
> > invés de fazer
> > sub new {
> >    my $class = "classe"
> >
> > eu deveria fazer
> > sub new {
> >    my $class = shift;
> >
> > O problema é que usando o shift não funciona, ele me retorna um mensagem
> de
> > erro quando tento instanciar a filha (pois ele não conhece um SUPER).
> > Os arquivos problemáticos estão anexados.
> >
> > Gostaria que alguém me ajudasse dizendo o que estou fazendo de errado ou
> se
> > algo mudou e eu não percebi.
> >
> > Abraços a todos! Agradeço desde já!
> >
> > Bolha.
> >
> > --
> > "Café clareia as idéias, apesar de amarelar os dentes"
> > -- Bolha
> >
> > E-mail classificado pelo Identificador de Spam Inteligente Terra.
> > Para alterar a categoria classificada, visite
> >
>
> http://mail.terra.com.br/cgi-bin/imail.cgi?+_u=andre.garcia.carneir&_l=1,1194043277.665580.6175.capalaba.hst.terra.com.br,8720,Des15,Des15
> >
> > Esta mensagem foi verificada pelo E-mail Protegido Terra.
> > Scan engine: McAfee VirusScan / Atualizado em 02/11/2007 / Versão:
> 5.1.00/5155
> > Proteja o seu e-mail Terra: http://mail.terra.com.br/
> >
> >
>
> --
> André Garcia Carneiro
> Developer(Perl/PHP)
> Member of "São Paulo Perl Mongers" - http://sao-paulo.pm.org
>
> _______________________________________________
> SaoPaulo-pm mailing list
> SaoPaulo-pm em pm.org
> http://mail.pm.org/mailman/listinfo/saopaulo-pm
>
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: http://mail.pm.org/pipermail/saopaulo-pm/attachments/20071106/bfa6f05b/attachment.html 


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