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

Lucas F. Rosada lucasrosada em gmail.com
Quinta Novembro 8 18:34:59 PST 2007


Obrigado, André, vou procurar ler sim!
Inclusive, vou dar uma sapeada nos tutoriais de oo (se não me engano,
perloot, perlooc, ou coisa parecida).

Abraços!

On Nov 6, 2007 9:45 AM, André Garcia Carneiro <
andre.garcia.carneir em terra.com.br> wrote:

>
> 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
>



-- 

#include <piada_programador.h>
"Sabe o que seria do mundo sem C?
Seria um u"
// Magrão && Bolha
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: http://mail.pm.org/pipermail/saopaulo-pm/attachments/20071109/8b25e0d9/attachment.html 


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