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

Lucas Mateus lucasmateus.oliveira em gmail.com
Terça Novembro 6 06:18:03 PST 2007


Desculpa o email foi enviado errado =) era pra outra lista onde ocorre
disputa de conhecimento... isso prejudica muito!!!

Em 06/11/07, Lucas Mateus <lucasmateus.oliveira em gmail.com> escreveu:
>
> 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/20db6594/attachment.html 


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