Introdução ao PHP
<p class=\"negrito\">12. Classes e Objetos</p>
<p align=\"JUSTIFY\"> </p>
<p align=\"JUSTIFY\">Classe</p>
<p align=\"JUSTIFY\">Uma classe é um conjunto de variáveis
e funções relacionadas a essas variáveis. Uma
vantagem da utilização de programação
orientada a objetos é poder usufruir do recurso de encapsulamento
de informação. Com o encapsulamento o usuário
de uma classe não precisa saber como ela é implementada,
bastando para a utilização conhecer a interface, ou
seja, as funções disponíveis. Uma classe é
um tipo, e portanto não pode ser atribuída a uma variável.
Para definir uma classe, deve-se utilizar a seguinte sintaxe:</p>
<p align=\"JUSTIFY\"><span class=\"mysql\"><?php<br>
class Nome_da_classe {<br>
var $variavel1;<br>
var $variavel2;</span></p>
<p align=\"JUSTIFY\"> <span class=\"mysql\"> function funcao1
($parametro) {<br>
/* === corpo da função ===
*/<br>
}<br>
}<br>
?> </span></p>
<p align=\"JUSTIFY\"><span class=\"mysql\"></span>Objeto</p>
<p align=\"JUSTIFY\">Como foi dito anteriormente, classes são
tipos, e não podem ser atribuídas a variáveis.
Variáveis do tipo de uma classe são chamadas de objetos,
e devem ser criadas utilizando o operador <span class=\"mysql\">new</span>,
seguindo o exemplo abaixo:</p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\" class=\"mysql\">$variavel = new $nome_da_classe;</p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\">Para utilizar as funções definidas
na classe, deve ser utilizado o operador <span class=\"mysql\">"->"</span>,
como no exemplo:</p>
<p align=\"JUSTIFY\" class=\"mysql\">$variavel->funcao1();</p>
<p align=\"JUSTIFY\"> </p>
<p align=\"JUSTIFY\">A variável $this</p>
<p align=\"JUSTIFY\">Na definição de uma classe, pode-se
utilizar a variável <span class=\"mysql\">$this</span>, que
é o próprio objeto. Assim, quando uma classe é
instanciada em um objeto, e uma função desse objeto
na definição da classe utiliza a variável <span class=\"mysql\">$this</span>,
essa variável significa o objeto que estamos utilizando.</p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\">Como exemplo da utilização de classes
e objetos, podemos utilizar a classe conta, que define uma conta
bancária bastante simples, com funções para
ver saldo e fazer um crédito.</p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\"><span class=\"mysql\"><?php<br>
class conta {<br>
var $saldo;</span></p>
<p align=\"JUSTIFY\"> <span class=\"mysql\"> function saldo()
{<br>
return $this->saldo;<br>
}</span></p>
<p align=\"JUSTIFY\"> <span class=\"mysql\"> function credito($valor)
{<br>
$this->saldo += $valor;<br>
}<br>
}</span></p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\"><span class=\"mysql\">$minhaconta = new conta;<br>
</span><span class=\"mysql\">$minhaconta->saldo();	// a variavel
interna não foi</span><span class=\"mysql\"> inicializada,
<br>
</span><span class=\"mysql\">// e não contém</span><span class=\"mysql\">
valor algum</span></p>
<p align=\"JUSTIFY\"><span class=\"mysql\">$minhaconta->credito(50);<br>
</span><span class=\"mysql\">$minhaconta->saldo(); // retorna 50<br>
?> </span></p>
<p align=\"JUSTIFY\"> </p>
<p align=\"JUSTIFY\">SubClasses</p>
<p align=\"JUSTIFY\">Uma classe pode ser uma extensão de outra.
Isso significa que ela herdará todas as variáveis
e funções da outra classe, e ainda terá as
que forem adicionadas pelo programador. Em PHP não é
permitido utilizar herança múltipla, ou seja, uma
classe pode ser extensão de apenas uma outra.Para criar uma
classe extendida, ou derivada de outra, deve ser utilizada a palavra
reservada <span class=\"mysql\">extends</span>, como pode ser visto
no exemplo seguinte:</p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\"><span class=\"mysql\"><?php<br>
class novaconta extends conta {<br>
var $num;</span></p>
<p align=\"JUSTIFY\"> <span class=\"mysql\"> function numero()
{<br>
return $this->num;<br>
}<br>
}<br>
?></span></p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\">A classe acima é derivada da classe conta,
tendo as mesmas funções e variáveis, com a
adição da variável <span class=\"mysql\">$numero</span>
e a função <span class=\"mysql\">numero()</span>.</p>
<p align=\"JUSTIFY\"><font face=\"Arial\"><a name=\"_Toc485214830\">Construtores</a></font></p>
<p align=\"JUSTIFY\">Um construtor é uma função
definida na classe que é automaticamente chamada no momento
em que a classe é instanciada (através do operador
<span class=\"mysql\">new</span>). O construtor deve ter o mesmo nome
que a classe a que pertence. Veja o exemplo:</p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\"><span class=\"mysql\"><?php<br>
class conta {<br>
var $saldo;</span></p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\"> <span class=\"mysql\"> function conta
() {<br>
$this.saldo = 0;<br>
}</span></p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\"> <span class=\"mysql\"> function saldo()
{<br>
return $this->saldo;<br>
}</span></p>
<p align=\"JUSTIFY\"> <span class=\"mysql\"> function credito($valor)
{<br>
$this->saldo += $valor;<br>
}<br>
}<br>
?> </span></p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\">Podemos perceber que a classe conta agora possui
um construtor, que inicializa a variável <span class=\"mysql\">$saldo</span>
com o valor 0.</p>
<p align=\"JUSTIFY\">Um construtor pode conter argumentos, que são
opcionais, o que torna esta ferramenta mais poderosa. No exemplo
acima, o construtor da classe conta pode receber como argumento
um valor, que seria o valor inicial da conta.</p>
<p align=\"JUSTIFY\">Vale observar que para classes derivadas, o construtor
da classe pai não é automaticamente herdado quando
o construtor da classe derivada é chamado.</p>
<p align=\"JUSTIFY\"> </p>
<p align=\"JUSTIFY\">Classe</p>
<p align=\"JUSTIFY\">Uma classe é um conjunto de variáveis
e funções relacionadas a essas variáveis. Uma
vantagem da utilização de programação
orientada a objetos é poder usufruir do recurso de encapsulamento
de informação. Com o encapsulamento o usuário
de uma classe não precisa saber como ela é implementada,
bastando para a utilização conhecer a interface, ou
seja, as funções disponíveis. Uma classe é
um tipo, e portanto não pode ser atribuída a uma variável.
Para definir uma classe, deve-se utilizar a seguinte sintaxe:</p>
<p align=\"JUSTIFY\"><span class=\"mysql\"><?php<br>
class Nome_da_classe {<br>
var $variavel1;<br>
var $variavel2;</span></p>
<p align=\"JUSTIFY\"> <span class=\"mysql\"> function funcao1
($parametro) {<br>
/* === corpo da função ===
*/<br>
}<br>
}<br>
?> </span></p>
<p align=\"JUSTIFY\"><span class=\"mysql\"></span>Objeto</p>
<p align=\"JUSTIFY\">Como foi dito anteriormente, classes são
tipos, e não podem ser atribuídas a variáveis.
Variáveis do tipo de uma classe são chamadas de objetos,
e devem ser criadas utilizando o operador <span class=\"mysql\">new</span>,
seguindo o exemplo abaixo:</p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\" class=\"mysql\">$variavel = new $nome_da_classe;</p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\">Para utilizar as funções definidas
na classe, deve ser utilizado o operador <span class=\"mysql\">"->"</span>,
como no exemplo:</p>
<p align=\"JUSTIFY\" class=\"mysql\">$variavel->funcao1();</p>
<p align=\"JUSTIFY\"> </p>
<p align=\"JUSTIFY\">A variável $this</p>
<p align=\"JUSTIFY\">Na definição de uma classe, pode-se
utilizar a variável <span class=\"mysql\">$this</span>, que
é o próprio objeto. Assim, quando uma classe é
instanciada em um objeto, e uma função desse objeto
na definição da classe utiliza a variável <span class=\"mysql\">$this</span>,
essa variável significa o objeto que estamos utilizando.</p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\">Como exemplo da utilização de classes
e objetos, podemos utilizar a classe conta, que define uma conta
bancária bastante simples, com funções para
ver saldo e fazer um crédito.</p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\"><span class=\"mysql\"><?php<br>
class conta {<br>
var $saldo;</span></p>
<p align=\"JUSTIFY\"> <span class=\"mysql\"> function saldo()
{<br>
return $this->saldo;<br>
}</span></p>
<p align=\"JUSTIFY\"> <span class=\"mysql\"> function credito($valor)
{<br>
$this->saldo += $valor;<br>
}<br>
}</span></p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\"><span class=\"mysql\">$minhaconta = new conta;<br>
</span><span class=\"mysql\">$minhaconta->saldo();	// a variavel
interna não foi</span><span class=\"mysql\"> inicializada,
<br>
</span><span class=\"mysql\">// e não contém</span><span class=\"mysql\">
valor algum</span></p>
<p align=\"JUSTIFY\"><span class=\"mysql\">$minhaconta->credito(50);<br>
</span><span class=\"mysql\">$minhaconta->saldo(); // retorna 50<br>
?> </span></p>
<p align=\"JUSTIFY\"> </p>
<p align=\"JUSTIFY\">SubClasses</p>
<p align=\"JUSTIFY\">Uma classe pode ser uma extensão de outra.
Isso significa que ela herdará todas as variáveis
e funções da outra classe, e ainda terá as
que forem adicionadas pelo programador. Em PHP não é
permitido utilizar herança múltipla, ou seja, uma
classe pode ser extensão de apenas uma outra.Para criar uma
classe extendida, ou derivada de outra, deve ser utilizada a palavra
reservada <span class=\"mysql\">extends</span>, como pode ser visto
no exemplo seguinte:</p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\"><span class=\"mysql\"><?php<br>
class novaconta extends conta {<br>
var $num;</span></p>
<p align=\"JUSTIFY\"> <span class=\"mysql\"> function numero()
{<br>
return $this->num;<br>
}<br>
}<br>
?></span></p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\">A classe acima é derivada da classe conta,
tendo as mesmas funções e variáveis, com a
adição da variável <span class=\"mysql\">$numero</span>
e a função <span class=\"mysql\">numero()</span>.</p>
<p align=\"JUSTIFY\"><font face=\"Arial\"><a name=\"_Toc485214830\">Construtores</a></font></p>
<p align=\"JUSTIFY\">Um construtor é uma função
definida na classe que é automaticamente chamada no momento
em que a classe é instanciada (através do operador
<span class=\"mysql\">new</span>). O construtor deve ter o mesmo nome
que a classe a que pertence. Veja o exemplo:</p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\"><span class=\"mysql\"><?php<br>
class conta {<br>
var $saldo;</span></p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\"> <span class=\"mysql\"> function conta
() {<br>
$this.saldo = 0;<br>
}</span></p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\"> <span class=\"mysql\"> function saldo()
{<br>
return $this->saldo;<br>
}</span></p>
<p align=\"JUSTIFY\"> <span class=\"mysql\"> function credito($valor)
{<br>
$this->saldo += $valor;<br>
}<br>
}<br>
?> </span></p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\">Podemos perceber que a classe conta agora possui
um construtor, que inicializa a variável <span class=\"mysql\">$saldo</span>
com o valor 0.</p>
<p align=\"JUSTIFY\">Um construtor pode conter argumentos, que são
opcionais, o que torna esta ferramenta mais poderosa. No exemplo
acima, o construtor da classe conta pode receber como argumento
um valor, que seria o valor inicial da conta.</p>
<p align=\"JUSTIFY\">Vale observar que para classes derivadas, o construtor
da classe pai não é automaticamente herdado quando
o construtor da classe derivada é chamado.</p>
Alguem descobriu onde baixar esse tutorial???
02/09/2008 8:57am
(~16 anos atrás)
Estou procurando a dias esse arquivos PDF com as imagens, pois não estou encontrando o arquivo completo, quero imprimir isso.
Obriado.
Obriado.
28/06/2007 5:30am
(~17 anos atrás)
Não consigo fazer o download através do link (http://phpbrasil.com/click.php?send=http://www.helo.tato.nom.br/arquivos/apostilaphp_mv.pdf).
01/06/2006 5:22am
(~18 anos atrás)
tentei no passado aprender por apostila,
mais livros ajudar muito ,em especial aquele que envolver o leitor num projeto.
esse tipo de trabalho ou livro são excelente ajuda : mais legal pela iniciativa
25/11/2005 10:32am
(~19 anos atrás)
As imagens não estão aparecendo e tentei acessar o site do autor, mas também não funciona.
Alguém tem disponível para download?
Alguém tem disponível para download?
24/06/2005 7:06pm
(~19 anos atrás)
dizem q a primeira impreção é a q fica,
axei bastante intuitivo.
:)
axei bastante intuitivo.
:)
24/04/2005 11:56pm
(~19 anos atrás)
Galera, quem estiver afim de baixar o tutorial é só acessar o seguinte link
http://www.helo.tato.nom.br/arquivos/apostilaphp_mv.pdf
Té +
http://www.helo.tato.nom.br/arquivos/apostilaphp_mv.pdf
Té +
11/03/2005 7:31pm
(~19 anos atrás)