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

Lucas F. Rosada lucasrosada em gmail.com
Sexta Novembro 2 20:19:51 PDT 2007


Eden, obrigado, funcionou perfeitamente!

Bolha

On Nov 2, 2007 8:30 PM, eden <edencardim em gmail.com> wrote:

> On 11/2/07, Lucas F. Rosada <lucasrosada em gmail.com> wrote:
> > 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.
>
> Sim, você precisa chamar classe->new, e filha->new, invés de
> classe::new e filha::new, respectivamente. Use my $class = shift
> sempre, assim você pode se aproveitar do polimorfismo.
>
> --
> edenc.vox.com
> _______________________________________________
> SaoPaulo-pm mailing list
> SaoPaulo-pm em pm.org
> http://mail.pm.org/mailman/listinfo/saopaulo-pm
>



-- 
"Café clareia as idéias, apesar de amarelar os dentes"
-- Bolha
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: http://mail.pm.org/pipermail/saopaulo-pm/attachments/20071103/cc41e071/attachment.html 


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