CriandoBits
Identifique-se Entrar Esqueceu a senha? Esqueci minha senha

PHP - Encapsulamento

Por Benedito Silva Júnior - publicado em 20/07/2016


Encapsulamento é o termo designado para representar que o funcionamento interno de cada objeto é próprio, podendo ter comportamentos particulares (privados) que somente a própria classe pode invocar e utilizar, a partir de estímulos externos.

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 modificações erradas em peças, 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:

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).

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.

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:

Exemplo:

<?php class Pessoa { private $id; protected $nome; public function setId($id) { $this->id = $id; } public function getId() { return $this->id; } } class PessoaFisica extends Pessoa { public function setId($id) { $this->id = $id; } public function setNome($nome) { $this->nome = $nome; } } $pessoa = new Pessoa(); $pessoaFisica = new PessoaFisica(); $pessoa->id = 1; //causa um Fatal Error, pois esta propriedade está como private $pessoa->setId(1); //assim funciona normalmente //causa outro erro, pois esta propriedade está como private $pessoaJuridica->setId(1); //outro erro, esta propr. está como protected $pessoaFisica->nome = 'Bene Silva Júnior'; $pessoaFisica->setNome( 'Bene Silva Júnior' ); //funciona normalmente ?>


 
Voltar a pagina anteriorVoltarSubir ao topo da páginaTopo