• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Encapsulamento em oo
 

Encapsulamento em oo

on

  • 1,460 views

 

Statistics

Views

Total Views
1,460
Views on SlideShare
1,460
Embed Views
0

Actions

Likes
0
Downloads
25
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • Programação orientada a objetos com Java
  • Programação orientada a objetos com Java
  • Programação orientada a objetos com Java
  • Programação orientada a objetos com Java
  • Programação orientada a objetos com Java
  • Programação orientada a objetos com Java
  • Programação orientada a objetos com Java

Encapsulamento em oo Encapsulamento em oo Presentation Transcript

  • EncapsulamentoProgramação em Java
  • Pilares da programação OO Encapsulamento Herança (Generalização/Especialização) Polimorfismo 2/27
  • Encapsulamento Separa a interface de um objeto dos detalhes de seu funcionamento interno 3/27
  • Encapsulamento Permite que uma aplicação seja construída a partir de um conjunto de componentes que realizam seu trabalho de forma independente. Cada componente contém tudo que precisa para realizar seu trabalho independentemente dos outros componentes. Estimula a divisão de responsabilidades: cada objeto faz apenas o que deve fazer, não realizando tarefas extras. 4/27
  • Encapsulamento A independência entre os objetos é obtida escondendo detalhes internos do funcionamento de cada componente, tornando o uso do componente acessível apenas através de uma interface externa. Facilita o controle ao acesso de informações do estado interno do objeto. Você não precisa saber como um telefone realmente funciona, para poder usá-lo. Só precisamos saber para que ele serve, e conhecer sua interface, ou seja a forma de nos comunicarmos com ele. 5/27
  • Encapsulamento Se a companhia telefônica mudar seus processos, você vai continuar usando o aparelho normalmente A implementação de uma classe, pode ser alterada sem afetar a sua interface. Se um novo telefone for criado, como um telefone digital, a implementação foi alterada, mas a interface permanece a mesma 6/27
  • Interface Lista de serviços oferecidos por um componente Funciona como um “contrato” que o componente estabelece com o mundo exterior que define exatamente como este pode fazer uso do componente Funciona como um “painel de controle” do componente. 7/27
  • Interface Formada por métodos e atributos públicos. Ausência de informações sobre como o trabalho é realizado. Liberdade para modificar o funcionamento do componente sem “quebra de contrato” com o mundo exterior. 8/27
  • Exemplo Encapsulamento Telefone  interface pública- botões utilizados para interagir com o objeto  implementação - as operações internas, o propósito do objeto Carro  interfaces públicas - pedais, direção, câmbio  implementação - o funcionamento do carro 9/27
  • Encapsulamento em Java - Métodosde acesso  Junto com os métodos modificadores, viabilizam o encapsulamento.  Métodos de acesso permitem acessar os atributos do objeto. 10/27
  • Métodos de acesso Tipo de retorno Nome do método Lista deModificador de parâmetrosvisibilidade (vazia) public String getNome() { return nome; Instrução de retorno } Início e fim do corpo do método (bloco) 11/27
  • Encapsulamento em Java - Métodosmodificadores Utilizados para modificar o estado de um objeto. Alcançados por meio da modificação do valor de um ou mais atributos do objeto.  Geralmente contêm instruções de atribuição.  Geralmente recebem parâmetros. 12/27
  • Métodos modificadores Modificador de Tipo de retorno (void) visibilidade Nome do método Parâmetro public void setNome(String nome_produto) { nome = nome_produto; Atribuição } Atributo sendo alterado 13/27
  • Exemplo Encapsulamentoclass Cliente { private double credito; private String nome; public String getNome() { return nome; } public void setNome(String nome_cliente) { nome = nome_cliente; } public void imprimaDadosCliente(Cliente c) { imprimir(c.nome, c.credito); } private void imprimir(String nome, double credito) { System.out.println(“Cliente: “ + nome + “ Crédito: R$ “ + credito); }} 14/27
  • Interface da classe Cliente public String getNome() public void setNome(String nomeCliente) public void imprimaDadosCliente(Cliente c) Note que o método privado imprimir não faz parte da interface! 15/27
  • Vantagens do encapsulamento Reutilização – Uma vez que o componente é independente, ele pode ser utilizado em diferentes programas com facilidade. Divisão de responsabilidades – Cada objeto faz apenas o que lhe é devido, não assumindo funções extras. Facilidade de modificação – Uma vez que o mundo exterior não conhece a implementação do componente, esta pode ser alterada sem problemas. Ausência de efeitos colaterais – Uma vez que o componente não depende de partes do seu programa para funcionar, não há risco dele modificar o funcionamento do programa. 16/27
  • Exemploclass ProdutoSemEncapsulamento { public int codigo; public String nome; public double preco; public double desconto_a_vista; } 17/27
  • Exemplopublic static void main(String[] args) { ProdutoSemEncapsulamento p = new ProdutoSemEncapsulamento(); p.codigo = 1; p.nome = "Samsung 17 polegadas"; p.preco = 500; p.desconto_a_vista = 10; System.out.println("Preço à prazo: " + p.preco); System.out.println("Preço à vista: " + (p.preco – p.preco*p.desconto_a_vista/100));} 18/27
  • Exemplo O que aconteceria se o programador tivesse digitado um desconto de 200? 19/27
  • Exemplo 20/27
  • Encapsulamento Exercício  Corrija a classe do exemplo anterior (vista abaixo). Esta classe deverá usar encapsulamento, possuir um construtor, um método que calcula o preço a vista bem como um método setDesconto, que recebe o valor do desconto, e se o mesmo for superior a 100 ou menor que zero, configurar o desconto como zero.class ProdutoSemEncapsulamento { public int codigo; public String nome; public double preco; public double desconto_a_vista;} 21/27
  • Soluçãoclass Produto { private int codigo; private String nome; private double preco; private double desconto_a_vista; public Produto(int cod_prod, String nome_prod, double preco_prod, double desc) { codigo = cod_prod; nome = nome_prod; preco = preco_prod; desconto_a_vista = desc; } 22/27
  • Solução public double getPreco() { return preco; } public double getPrecoAVista() { double preco_a_vista; preco_a_vista = preco - preco*desconto_a_vista/100; return preco_a_vista; } public void setDesconto(double desc) { if ((desc > 100) || (desc < 0)) desconto_a_vista = 0; else desconto_a_vista = desc; }} 23/27
  • Exercício Crie uma classe para representar uma conta bancária. Esta classe deverá:  Usar encapsulamento;  Possuir dois atributos, código e saldo;  Possuir um construtor que receba o número da conta e o saldo inicial. Se for passado um valor negativo para o saldo,utilizar zero como saldo inicial;  Possuir métodos para creditar um valor, sacar um valor e imprimir o saldo.  Se o valor a ser sacado for maior do que o saldo, sacar apenas o valor correspondente ao saldo (saldo será igual a zero), retornando o valor sacado em seguida. 24/27
  • Solução class Conta { private double saldo; private long numero; public Conta(long num, double val) { numero = num; if (val > 0) saldo = val; } public void creditar(double val) { saldo = saldo + val; } 25/27
  • Solução public double debitar(double val) { if (val > saldo) val = saldo; saldo = saldo - val; return val; } public void imprimaSaldo() { System.out.println(“Conta: “ + numero + “Saldo: R$ “ + saldo); } } 26/27
  • EncapsulamentoProgramação em JavaProf. Maurício Braga