Obrigado, André, vou procurar ler sim!<br>Inclusive, vou dar uma sapeada nos tutoriais de oo (se não me engano, perloot, perlooc, ou coisa parecida).<br><br>Abraços!<br><br><div class="gmail_quote">On Nov 6, 2007 9:45 AM, André Garcia Carneiro <
<a href="mailto:andre.garcia.carneir@terra.com.br">andre.garcia.carneir@terra.com.br</a>> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<br>Olá!<br><br><br>Exemplo bem medíocre abaixo. Sugiro você fazer RTFM em perlobj. No entanto, acho meramente didático, o Champs<br>outro dia mesmo me recomendou um livro "Learning Object Oriented Perl", Randal Schwartz.
<br><br><br><br><code_pai><br><br><br>package pai;<br><br>sub new{<br> my $self = {};<br> bless $self;<br> return $self;<br><br>}<br><br>#mais métodos aqui...<br><br><br>#Encapsulando atributos<br><br>sub atributo {
<br>my ($self,$at) = @_;<br>$self->{atributo} = $at if $at;<br>return $self->{atributo};<br><br>}<br><br><br>1;<br><br></code_pai><br><br><code_filho><br><br>package filho;<br>use base 'pai'; #HERANÇA AQUI.
<br><br>sub new {<br> my $self = {};<br> bless $self;<br> return $self;<br>}<br><br>#Mais métodos aqui...<br><br>1;<br><br><code_filho><br><br><br><br><br>Cheers!<br><br><br><br><br><br>---------- Cabeçalho original -----------
<br><br>De: saopaulo-pm-bounces+andre.garcia.carneir=<a href="mailto:terra.com.br@pm.org">terra.com.br@pm.org</a><br>Para: "Lista Perl Sao Paulo" <a href="mailto:saopaulo-pm@mail.pm.org">saopaulo-pm@mail.pm.org</a>
<br>Cópia:<br>Data: Fri, 2 Nov 2007 19:40:45 -0300<br>Assunto: [SP-pm] Dúvida com OO e classes filhas<br><div><div></div><div class="Wj3C7c"><br>> Boa noite, pessoas!<br>><br>> Primeiramente, tenho 2 classes: <a href="http://classe.pm" target="_blank">
classe.pm</a> e <a href="http://filha.pm" target="_blank">filha.pm</a>. A classe <a href="http://filha.pm" target="_blank">filha.pm</a> é<br>> filha de <a href="http://classe.pm" target="_blank">classe.pm</a>. Seguem os códigos:
<br>><br>> =========<br>> package filha;<br>><br>> use classe;<br>> our @ISA = qw(classe);<br>><br>> use vars qw(@ISA);<br>> sub new {<br>> my $class = "filha";<br>><br>> $class->SUPER::new;
<br>> }<br>> 1;<br>> ==========<br>><br>> ==========<br>> #!/usr/bin/perl<br>><br>> package classe;<br>><br>> use strict;<br>><br>> sub new {<br>> my $class = "classe";<br>
> my $self = {"a" => "b"};<br>> bless ($self, $class);<br>> }<br>><br>> sub func {<br>> my $self = shift;<br>><br>> print $self->{"a"};<br>> }<br>
><br>> 1;<br>> ========<br>><br>> Esse código, pelo que testei, funciona perfeitamente, por exemplo, quando eu<br>> instancia uma filha e chamo o método func, presente na classe pai.<br>> No entanto, pelo que me resta de lembranças de quando fucei OO em perl, ao
<br>> invés de fazer<br>> sub new {<br>> my $class = "classe"<br>><br>> eu deveria fazer<br>> sub new {<br>> my $class = shift;<br>><br>> O problema é que usando o shift não funciona, ele me retorna um mensagem de
<br>> erro quando tento instanciar a filha (pois ele não conhece um SUPER).<br>> Os arquivos problemáticos estão anexados.<br>><br>> Gostaria que alguém me ajudasse dizendo o que estou fazendo de errado ou se<br>
> algo mudou e eu não percebi.<br>><br></div></div><div class="Ih2E3d">> Abraços a todos! Agradeço desde já!<br>><br>> Bolha.<br>><br>> --<br></div><div class="Ih2E3d">> "Café clareia as idéias, apesar de amarelar os dentes"
<br>> -- Bolha<br>><br></div>> E-mail classificado pelo Identificador de Spam Inteligente Terra.<br>> Para alterar a categoria classificada, visite<br>><br><a href="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" target="_blank">
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</a><br>><br>> Esta mensagem foi verificada pelo E-mail Protegido Terra.<br>
> Scan engine: McAfee VirusScan / Atualizado em 02/11/2007 / Versão: 5.1.00/5155<br>> Proteja o seu e-mail Terra: <a href="http://mail.terra.com.br/" target="_blank">http://mail.terra.com.br/</a><br>><br>><br>
<font color="#888888"><br>--<br>André Garcia Carneiro<br>Developer(Perl/PHP)<br>Member of "São Paulo Perl Mongers" - <a href="http://sao-paulo.pm.org" target="_blank">http://sao-paulo.pm.org</a><br></font><div><div>
</div><div class="Wj3C7c"><br>_______________________________________________<br>SaoPaulo-pm mailing list<br><a href="mailto:SaoPaulo-pm@pm.org">SaoPaulo-pm@pm.org</a><br><a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">
http://mail.pm.org/mailman/listinfo/saopaulo-pm</a><br></div></div></blockquote></div><br><br clear="all"><br>-- <br><br>#include <piada_programador.h><br>"Sabe o que seria do mundo sem C?<br> Seria um u"<br>
// Magrão && Bolha