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:

<?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
?>




Rec6 Digg del.icio.us

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


Avaliar:


A avaliação de publicações é restrita a membros cadastrados e logados no nosso site.



Comentários

AvatarEnviado 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

AvatarEnviado por BMCVET em 07/11/2009 às 12:08

Muito Bom Tuturial Parabens !!!

--
BMCVET


Envio de comentário:




  

Quinta, 02 de Setembro de 2010


Top 5 membros

Últimos membros online

Últimos membros cadastrados