Nesta aula iniciaremos o estudo sobre o encapsulamento. Inicialmente, estudaremos o conceito prático encapsulamento ao analisarmos uma situação prática da necessidade da utilização. Em seguida, estudaremos os conceitos teóricos do encapsulamento segundo os conceitos da orientação a objetos. |
INTRODUÇÃO
Uma classe é uma estrutura que contém um conjunto de dados, um conjunto de operações e tem implementado as funcionalidade necessárias para a correta manipulação das informações.
ENCAPSULAMENTO
Todo objeto é, por definição, uma estrutura de dados especializada, também chamado de tipo abstraido de dados TAD. As estruturas de dados, normalmente, irão possuir membros de classes que armazenam valores - as variáveis; e membros de classe que desempenham alguma ação - as funções.
Os membros de classe que são utilizados internamente, devem estar inacessíveis externamente. É interessante observar que isso não é meramente uma definição, mas sim, um conceito utilizado amplamente, inclusive pela própria natureza.
Há várias formas para entendermos o encapsulamento, porém, talvez a mais importante seja a capacidade de definirmos um novo tipo de informação e fazer com que instâncias desse novo tipo sejam capazes de manter a integridade de suas informações.
A única maneira para mantermos a integridade é verificando os dados que são enviados pelos membros de classe e estabelecendo através destes as regras para a correta atribuição de informações.
Encapsular implica na modificação da visibilidade de membros de classe e portanto, foram definidos algumas palavras-chaves para explicitamente definirmos o escopo de cada membro.
ABSTRAÇÃO
A abstração é uma das característica de um bom encapsulamento. Entretanto, podemos escrever um código que abstrai um processo sem encapsular o mesmo. Por exemplo, um função que resolve uma somatória abstrai o cálculo através do uso de funções, porém, só com o uso de funções, não haverá encapsulamento de informação nem funcionalidade.
Ao ocultarmos informações, estamos protegemos nossa estrutura da má utilização por parte do usuário e por conseguinte, acabamos protegendo o usuário de uma eventual má implementação.
Assim, a abstração também é a simplificação de processos complexos. Um programa é uma abstração de algoritmos em partes independentes e que são projetados para se conectarem a outras abstrações.
Uma função abstrai um processo tornando-o acessível através de um nome e seus parâmetros; uma classe abstraí um tipo de dado e suas funções de tratamento e manipulação.
Quando encapsulamos um processo estaremos abstraíndo a implementação e também, os possíveis dados que são utilizados. O objetivo com a encapsulação e a abstração, é ocultar os processos e dados internos, mas disponibilizar uma interface simples para a utilização desse tipo abstrato de dados. Até porque, não existe encapsulação e abstração se não houver uma forma para o acesso das informações e funcionalidades encapsuladas. Se não houver uma interface de comunicação, nós temos um módulo independente, que é executado isoladamente e não há razão para mantermos esse código dentro de qualquer outro. Se não houver uma maneira de acesso, não haverá, por definição, utilidade e uso do código.
EXEMPLO FEITO EM AULA
# ENCAPSULAMENTO
class Pessoa{
private $nome;
function setNome($nome){
$this -> nome = $nome;
}
function getNome(){
return $this -> nome;
}
}
$p1 = new Pessoa();
//$p1 -> setNome("eXcript");
$p1 -> nome = "";
VEJA TAMBÉM
- Aula 91: Primeira Classe
- Aula 92: Primeira Classe
- Aula 93: Criação de Objetos
- Aula 94: Acessando Membros de Classe
- Aula 95: Implementando Funcionalidades na Classe
- Aula 96: Pseudo variável $this
- Aula 97: Gerenciando atributos de Classe
- Aula 98: Construtor
- Aula 99: Construtores Personalizados
- Aula 100: Destrutores
- Aula 101: Encapsulamento I
- Aula 102: Encapsulamento II
- Aula 103: Herança I
- Aula 104: Herança II
- Aula 105: Modificadores de Acesso
- Aula 106: Visibilidade das Funções
- Aula 107: Funções Modificadoras
- Aula 108: Sobrescrita de Funções
Tags curso, php, programação orientada a objetos, poo, encapsulamento, classe, objeto, instância
Comentários
comments powered by Disqus