Tutorial de POO no PHP: Encapsulamento
Autor/fonte: Bruno Viana
Tags: [ tutorial poo ]
O encapsulamento é um dos recursos mais interessantes da programação orientada a objetos. Encapsular significa, na programação, esconder os dados contidos nas propriedades de uma classe. Qualquer classe é completamente responsável pelos dados que ela transporta e necessita que os mesmos se mantenham íntegros, ou seja, sem alterações não previstas durando o fluxo da aplicação.
Por exemplo, não é necessário conhecer todo o funcionamento interno de um carro para poder dirigi-lo. Para isso é escondido por baixo da lataria tudo que faz com que o carro funcione, deixando apenas para o usuário o que é realmente necessário para se dirigir. Assim é garantido que o usuário leigo, ou que não saiba completamente do funcionamento do carro faça mexa na peça errada, corte o fio errado ou faça qualquer outra besteira.
Na programação orientada a objetos é possível utilizar do encapsulamento dando permissões de acessos aos atributos das classes. Assim podemos dizer quem pode acessar seus atributos diretamente ou não. São eles:
1. Public
A palavra chave public informa que a propriedade ou o método são públicos, ou seja, qualquer um pode acessar (desde subclasses como outras classes que estão a instanciando).
2. Private
Já a palavra chave private informa que a propriedade ou método só podem ser acessados internamente na classe. Nem seus filhos podem acessá-lo.
3. Protected
Enquanto isso protected indica que subclasses podem acessar, mas outras classes ou funções não têm essa permissão. Um exemplo de tudo isso junto:
Por exemplo, não é necessário conhecer todo o funcionamento interno de um carro para poder dirigi-lo. Para isso é escondido por baixo da lataria tudo que faz com que o carro funcione, deixando apenas para o usuário o que é realmente necessário para se dirigir. Assim é garantido que o usuário leigo, ou que não saiba completamente do funcionamento do carro faça mexa na peça errada, corte o fio errado ou faça qualquer outra besteira.
Na programação orientada a objetos é possível utilizar do encapsulamento dando permissões de acessos aos atributos das classes. Assim podemos dizer quem pode acessar seus atributos diretamente ou não. São eles:
1. Public
A palavra chave public informa que a propriedade ou o método são públicos, ou seja, qualquer um pode acessar (desde subclasses como outras classes que estão a instanciando).
2. Private
Já a palavra chave private informa que a propriedade ou método só podem ser acessados internamente na classe. Nem seus filhos podem acessá-lo.
3. Protected
Enquanto isso protected indica que subclasses podem acessar, mas outras classes ou funções não têm essa permissão. Um exemplo de tudo isso junto:
<?php
class Pessoa
{
private $id;
protected $nome;
public function setId( $id )
{
$this->id = $id;
}
public function getId()
{
return $this->id;
}
public function getNome()
{
return $this->nome;
}
}
class PessoaFisica extends Pessoa
{
public function setId( $id )
{
$this->id = $id;
}
public function setNome( $nome )
{
$this->nome = $nome;
}
}
$pessoa = new Pessoa();
$pessoaFisica = new PessoaFisica();
/**
* Isto causa um Fatal Error,
* pois esta proriedade está como private
*/
$pessoa->id = 1;
$pessoa->setId(1); // já isto, funciona normalmente
$pessoaJuridica->setId(1); // isto causa outro Fatal Error
/**
* Isto causa um Fatal Error,
* pois esta proriedade está como protected
*/
$pessoaFisica->nome = 'Bruno Viana';
$pessoaFisica->setNome( 'Bruno Viana' ); // já isto, funciona
?>

Enviado por xKuRt em 03/02/2009 às 08:46
Itens relacionados
Tutorial de POO no PHP: Classes e Objetos
Tutorial de POO no PHP: Padrões de projetos
Tutorial de POO no PHP: Membros da classe
Tutorial de POO no PHP: Tratamento de erros
Tutorial de POO no PHP: Abstração
Tutorial de POO no PHP: Intercepções
Tutorial de POO no PHP: Herança e polimorfismo
Tutorial de POO no PHP: Programação Estruturada x Programação Orientada a Objetos
Avaliação
Avaliação desta publicação: 10.00; Total de avaliações: 1
A avaliação de publicações é restrita a membros cadastrados e logados no nosso site.
Comentários
| Enviado por lucasmartins em 08/01/2010 às 22:12 Se private nega acesso até para classes filhas, como a classe PessoaFisica ta conseguindo alterar a propriedade $id sendo que ela é private ???? -- @LucasSena - www.lucasmartins.com.br - www.ainternetenossa.wordpress.com |
| Enviado por BMCVET em 07/11/2009 às 12:08 Muito Bom Tuturial Parabens !!! -- BMCVET |
Envio de comentário:
Quinta, 02 de Setembro de 2010
Área restrita
Leitura recomendada
.NET: Curso completo e referência do programador: Edição gold
Últimas publicações
Top 5 membros
- dddweb213 pts
- Jotah191 pts
- fbinasco165 pts
- andersonop153 pts
- fredbcn117 pts
Últimos membros cadastrados
- reniltonem 02/09
- baixehdem 02/09
- danilocarlosem 02/09



