Você está na página 1de 10

Cursos

Análise e Desenvolvimento de Sistemas


Sistemas para Internet

Base Tecnológica: Programação Orientada a Objetos

Encapsulamento

Prof. Aldo Moura


aldo.moura@p.ficr.edu.br
Roteiro

Encapsulamento
Modificadores de acesso
Métodos “Acessor” e Modificador
Método construtor
Implementação de encapsulamento
Exercício
Encapsulamento

Separa o que é visível (público) do que é oculto (privado).

Uma máquina digital é um objeto complexo.


Através de suas partes externas (interface –
maneira como um objeto se apresenta para
outros objetos), podemos alterar algumas
de suas características (resolução por
exemplo), fazendo com suas partes ocultas
internas (que define o comportamento do
objeto) sejam acionados (circuitos
integrados, resistores, capacitores, etc.).
Encapsulamento

É um mecanismo usado para reunir os atributos e os métodos numa estrutura que pode
esconder a implementação do objeto:
• impedindo o acesso aos dados por um meio diferente dos serviços propostos pelos
métodos
• garantindo a integridade dos dados contidos no objeto.

Permite definir os níveis de visibilidade dos elementos da classe, que definem os direitos
de acesso aos dados conforme acessemos um método da própria classe, de uma classe
herdada, ou de uma classe qualquer.
Modificadores de Acesso
Determinam a visibilidade ou acessibilidade dos atributos e métodos de um objeto a
outros objetos.

Normalmente utiliza-se as seguintes práticas:


• Os atributos devem ser privados

• Os métodos que podem ser chamados por métodos de outras classes devem ser
públicos

• Os métodos que só são chamados por outros métodos da própria classe devem ser
privados
Modificadores de Acesso
Público (public):
• É acessível a partir de qualquer outra classe, do mesmo
assembly ou em outro assembly que faça referência a ele.

Um assembly é uma coleção de


Privado (private): tipos e recursos compilados
para funcionar juntos e formar
• Restringe o acesso a qualquer outra classe, inclusive subclasses. uma unidade lógica de
funcionalidade. assumem a
forma de arquivos
Protegido (protected): executáveis (. exe) ou
Dynamic Link Library (. dll).
• Restringe o acesso a qualquer outra classe, exceto para suas
subclasses.

Interno (internal):
• Permitem acesso apenas a classes do mesmo assembly.
Métodos “Acessor” e Modificador
Usados para manipular os atributos.
Mudanças de atributos devem ser realizados por métodos da própria classe, com o
objetivo de manter o estado consistente do objeto.
Regras:
• Sempre fornecer atributos privados
private atributo;

• Fornecer métodos “acessores” (getters) públicos


public tipoAtributo getAtributo() { return atributo;}

• Fornecer métodos modificadores (setters) públicos


public void setAtributo(tipo var) { this.atributo = var;}
Encapsulamento
class Produto
{
private int codigo;
private String descricao;
private float precoCusto;
class Produto private int estoque;
{
int codigo;
String descricao; // Métodos acessores
float precoCusto; public int getCodigo() { return codigo; }
public String getDescricao() { return descricao; }
int estoque; public float getPrecoCusto() { return precoCusto; }
public int getEstoque() { return estoque; }
void producao(int qtde)
{ // Métodos modificadores
estoque += qtde; public void setCodigo(int codigo) { this.codigo = codigo; }
public void setDescricao(String descricao) { this.descricao = descricao; }
} public void setPrecoCusto(int precoCusto) { this.precoCusto = precoCusto; }

void saida(int qtde) public void setEstoque(int estoque) { this.estoque = estoque; }


{
estoque -= qtde; // Demais métodos
public void producao(int qtde) { estoque += qtde; }
}
public void saida(int qtde) { estoque -= qtde; }
} }
Método Construtor
• Além de métodos e atributos, uma classe pode conter construtores
• Construtores definem como os atributos de um objeto devem ser iniciados
• São semelhantes a métodos, mas não têm tipo de retorno

<modificador de acesso> <nomeConstrutor> (lista de parâmetros)


{
// Corpo
} public Navio(String umNome, int umNumero)
{ Caso não seja definido um
this.nome = umNome;
this.numCabines = umNumero;
construtor, um construtor default
} é fornecido implicitamente

Navio navio1 = new Navio();


navio1.setNome(“Santa Cecilia”);
navio1.setNumCabines(100); O construtor default não tem
parâmetros:
Navio navio2 = new Navio(“Santa Cecilia”, 100);
Método Construtor
class Produto
{
private int codigo;
private String descricao;
Uma classe pode ter mais de um private float precoCusto;
private int estoque;
construtor // Construtores
public Produto (int codigo, String descricao, float precoCusto)
Se diferenciam pela lista de {
this.codigo = codigo;
parâmetros this.descricao = descricao;
this.precoCusto = precoCusto;
this.estoque = 0;
}

public Produto (int codigo, String descricao, float precoCusto, int estoque)
Quando se é definido um construtor {
this.codigo = codigo;
com parâmetros, o construtor this.descricao = descricao;
this.precoCusto = precoCusto;
default não é mais gerado }
this.estoque = estoque;

// Demais métodos
public void entrada(int qtde) { estoque += qtde; }

public void saida(int qtde) { estoque -= qtde; }


}

Você também pode gostar