Sophie

Sophie

distrib > Mandriva > 2008.1 > i586 > by-pkgid > 703d980c580707c382b4e43e25965bc5 > files > 10685

php-manual-pt_BR-5.2.4-1mdv2008.1.noarch.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<HTML
><HEAD
><TITLE
>Abstração de Objetos</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
REL="HOME"
TITLE="Manual do PHP"
HREF="index.html"><LINK
REL="UP"
TITLE="Classes e Objetos (PHP 5)"
HREF="language.oop5.html"><LINK
REL="PREVIOUS"
TITLE="Constantes do Objeto"
HREF="language.oop5.constants.html"><LINK
REL="NEXT"
TITLE="Interfaces de Objetos"
HREF="language.oop5.interfaces.html"><META
HTTP-EQUIV="Content-type"
CONTENT="text/html; charset=UTF-8"></HEAD
><BODY
CLASS="sect1"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>Manual do PHP</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="language.oop5.constants.html"
ACCESSKEY="P"
>Anterior</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
>Capítulo 19. Classes e Objetos (PHP 5)</TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="language.oop5.interfaces.html"
ACCESSKEY="N"
>Próxima</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="sect1"
><H1
CLASS="sect1"
><A
NAME="language.oop5.abstract"
>Abstração de Objetos</A
></H1
><P
>&#13;   PHP 5 introduz métodos e classes abstratos. Não é permitido criar
   uma instância de uma class que foi definida como abstrata. Qualquer classe que
   contêm pelo menos um método abstrato deve também ser abstrata. Métodos
   definidos como abstratos simplesmente declaram a assinatura do método,
   eles não podem definir a implementação.
  </P
><P
>&#13;   Quando uma classe herda uma classe abstrata, todos os métodos marcados como abstratos
   na declaração da classe-pai devem ser definidos na classe filha; além disso,
   esses métodos devem ser definidos com a mesma <A
HREF="language.oop5.visibility.html"
>visibilidade</A
>
   ou mais fraca. Por exemplo,
   se um método abstrado é definido como protected, a implementação da função
   deve ser definida ou como protected ou public.
  </P
><TABLE
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
CLASS="EXAMPLE"
><TR
><TD
><DIV
CLASS="example"
><A
NAME="AEN5739"
></A
><P
><B
>Exemplo 19-17. Exemplo de classe abstrata</B
></P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
CELLPADDING="5"
><TR
><TD
><code><font color="#000000">
<font color="#0000BB">&lt;?php<br />abstract </font><font color="#007700">class </font><font color="#0000BB">ClasseAbstrata<br /></font><font color="#007700">{<br />&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#FF8000">// Força a classe que extende (a subclasse) a definir esse método<br />&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#0000BB">abstract protected </font><font color="#007700">function </font><font color="#0000BB">pegarValor</font><font color="#007700">();<br />&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#0000BB">abstract protected </font><font color="#007700">function </font><font color="#0000BB">valorComPrefixo</font><font color="#007700">( </font><font color="#0000BB">$prefixo </font><font color="#007700">);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#FF8000">// Método comum<br />&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#0000BB">public </font><font color="#007700">function </font><font color="#0000BB">imprimir</font><font color="#007700">() {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print </font><font color="#0000BB">$this</font><font color="#007700">-&gt;</font><font color="#0000BB">pegarValor</font><font color="#007700">();<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /><br />class </font><font color="#0000BB">ClasseConcreta1 </font><font color="#007700">extends </font><font color="#0000BB">ClasseAbstrata<br /></font><font color="#007700">{<br />&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#0000BB">protected </font><font color="#007700">function </font><font color="#0000BB">pegarValor</font><font color="#007700">() {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return </font><font color="#DD0000">"ClasseConcreta1"</font><font color="#007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#0000BB">public </font><font color="#007700">function </font><font color="#0000BB">valorComPrefixo</font><font color="#007700">( </font><font color="#0000BB">$prefixo </font><font color="#007700">) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return </font><font color="#DD0000">"</font><font color="#007700">{</font><font color="#DD0000">$prefixo</font><font color="#007700">}</font><font color="#DD0000">ClasseConcreta1"</font><font color="#007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /><br />class </font><font color="#0000BB">ClasseConcreta2 </font><font color="#007700">extends </font><font color="#0000BB">ClasseAbstrata<br /></font><font color="#007700">{<br />&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#0000BB">protected </font><font color="#007700">function </font><font color="#0000BB">pegarValor</font><font color="#007700">() {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return </font><font color="#DD0000">"ClasseConcreta2"</font><font color="#007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#0000BB">public </font><font color="#007700">function </font><font color="#0000BB">valorComPrefixo</font><font color="#007700">( </font><font color="#0000BB">$prefixo </font><font color="#007700">) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return </font><font color="#DD0000">"</font><font color="#007700">{</font><font color="#DD0000">$prefixo</font><font color="#007700">}</font><font color="#DD0000">ClasseConcreta2"</font><font color="#007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /><br /></font><font color="#0000BB">$classe1 </font><font color="#007700">= new </font><font color="#0000BB">ClasseConcreta1</font><font color="#007700">;<br /></font><font color="#0000BB">$classe1</font><font color="#007700">-&gt;</font><font color="#0000BB">imprimir</font><font color="#007700">();<br />echo </font><font color="#0000BB">$classe1</font><font color="#007700">-&gt;</font><font color="#0000BB">valorComPrefixo</font><font color="#007700">(</font><font color="#DD0000">'FOO_'</font><font color="#007700">) .</font><font color="#DD0000">"\n"</font><font color="#007700">;<br /><br /></font><font color="#0000BB">$classe2 </font><font color="#007700">= new </font><font color="#0000BB">ClasseConcreta2</font><font color="#007700">;<br /></font><font color="#0000BB">$classe2</font><font color="#007700">-&gt;</font><font color="#0000BB">imprimir</font><font color="#007700">();<br />echo </font><font color="#0000BB">$classe2</font><font color="#007700">-&gt;</font><font color="#0000BB">valorComPrefixo</font><font color="#007700">(</font><font color="#DD0000">'FOO_'</font><font color="#007700">) .</font><font color="#DD0000">"\n"</font><font color="#007700">;<br /></font><font color="#0000BB">?&gt;</font>
</font>
</code></TD
></TR
></TABLE
><P
>O exemplo acima irá imprimir:</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
CELLPADDING="5"
><TR
><TD
><PRE
CLASS="screen"
>ConcreteClass1
FOO_ConcreteClass1
ConcreteClass2
FOO_ConcreteClass2</PRE
></TD
></TR
></TABLE
></DIV
></TD
></TR
></TABLE
><P
>&#13;    Código antigo que não tem classes ou funções definidas pelo usuário
    como 'abstract' deve ser executado sem modificações.
   </P
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="language.oop5.constants.html"
ACCESSKEY="P"
>Anterior</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Principal</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="language.oop5.interfaces.html"
ACCESSKEY="N"
>Próxima</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Constantes do Objeto</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="language.oop5.html"
ACCESSKEY="U"
>Acima</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Interfaces de Objetos</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>