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 &lt;
<a href="mailto:andre.garcia.carneir@terra.com.br">andre.garcia.carneir@terra.com.br</a>&gt; 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 &quot;Learning Object Oriented Perl&quot;, Randal Schwartz.
<br><br><br><br>&lt;code_pai&gt;<br><br><br>package pai;<br><br>sub new{<br> &nbsp; &nbsp; my $self = {};<br> &nbsp; &nbsp; bless $self;<br> &nbsp; &nbsp; 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-&gt;{atributo} = $at if $at;<br>return $self-&gt;{atributo};<br><br>}<br><br><br>1;<br><br>&lt;/code_pai&gt;<br><br>&lt;code_filho&gt;<br><br>package filho;<br>use base &#39;pai&#39;; #HERANÇA AQUI.
<br><br>sub new {<br> &nbsp; &nbsp;my $self = {};<br> &nbsp; &nbsp; bless $self;<br> &nbsp; &nbsp; return $self;<br>}<br><br>#Mais métodos aqui...<br><br>1;<br><br>&lt;code_filho&gt;<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: &quot;Lista Perl Sao Paulo&quot; <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>&gt; Boa noite, pessoas!<br>&gt;<br>&gt; 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>&gt; filha de <a href="http://classe.pm" target="_blank">classe.pm</a>. Seguem os códigos:
<br>&gt;<br>&gt; =========<br>&gt; package filha;<br>&gt;<br>&gt; use classe;<br>&gt; our @ISA = qw(classe);<br>&gt;<br>&gt; use vars qw(@ISA);<br>&gt; sub new {<br>&gt; &nbsp; &nbsp;my $class = &quot;filha&quot;;<br>&gt;<br>&gt; &nbsp; &nbsp;$class-&gt;SUPER::new;
<br>&gt; }<br>&gt; 1;<br>&gt; ==========<br>&gt;<br>&gt; ==========<br>&gt; #!/usr/bin/perl<br>&gt;<br>&gt; package classe;<br>&gt;<br>&gt; use strict;<br>&gt;<br>&gt; sub new {<br>&gt; &nbsp; &nbsp;my $class = &quot;classe&quot;;<br>
&gt; &nbsp; &nbsp;my $self = {&quot;a&quot; =&gt; &quot;b&quot;};<br>&gt; &nbsp; &nbsp;bless ($self, $class);<br>&gt; }<br>&gt;<br>&gt; sub func {<br>&gt; &nbsp; &nbsp;my $self = shift;<br>&gt;<br>&gt; &nbsp; &nbsp;print $self-&gt;{&quot;a&quot;};<br>&gt; }<br>
&gt;<br>&gt; 1;<br>&gt; ========<br>&gt;<br>&gt; Esse código, pelo que testei, funciona perfeitamente, por exemplo, quando eu<br>&gt; instancia uma filha e chamo o método func, presente na classe pai.<br>&gt; No entanto, pelo que me resta de lembranças de quando fucei OO em perl, ao
<br>&gt; invés de fazer<br>&gt; sub new {<br>&gt; &nbsp; &nbsp;my $class = &quot;classe&quot;<br>&gt;<br>&gt; eu deveria fazer<br>&gt; sub new {<br>&gt; &nbsp; &nbsp;my $class = shift;<br>&gt;<br>&gt; O problema é que usando o shift não funciona, ele me retorna um mensagem de
<br>&gt; erro quando tento instanciar a filha (pois ele não conhece um SUPER).<br>&gt; Os arquivos problemáticos estão anexados.<br>&gt;<br>&gt; Gostaria que alguém me ajudasse dizendo o que estou fazendo de errado ou se<br>
&gt; algo mudou e eu não percebi.<br>&gt;<br></div></div><div class="Ih2E3d">&gt; Abraços a todos! Agradeço desde já!<br>&gt;<br>&gt; Bolha.<br>&gt;<br>&gt; --<br></div><div class="Ih2E3d">&gt; &quot;Café clareia as idéias, apesar de amarelar os dentes&quot;
<br>&gt; -- Bolha<br>&gt;<br></div>&gt; E-mail classificado pelo Identificador de Spam Inteligente Terra.<br>&gt; Para alterar a categoria classificada, visite<br>&gt;<br><a href="http://mail.terra.com.br/cgi-bin/imail.cgi?+_u=andre.garcia.carneir&amp;_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&amp;_l=1,1194043277.665580.6175.capalaba.hst.terra.com.br,8720,Des15,Des15</a><br>&gt;<br>&gt; Esta mensagem foi verificada pelo E-mail Protegido Terra.<br>
&gt; Scan engine: McAfee VirusScan / Atualizado em 02/11/2007 / Versão: 5.1.00/5155<br>&gt; Proteja o seu e-mail Terra: <a href="http://mail.terra.com.br/" target="_blank">http://mail.terra.com.br/</a><br>&gt;<br>&gt;<br>
<font color="#888888"><br>--<br>André Garcia Carneiro<br>Developer(Perl/PHP)<br>Member of &quot;São Paulo Perl Mongers&quot; - <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 &lt;piada_programador.h&gt;<br>&quot;Sabe o que seria do mundo sem C?<br> Seria um u&quot;<br>
// Magrão &amp;&amp; Bolha