Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I...

31

Transcript of Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I...

Page 1: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Métodos Get e Set.
Page 2: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Métodos Get e Set.

Curso de Aprendizado Industrial

Desenvolvedor WEB

Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa

Métodos Get e Set

Page 3: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Métodos Get e Set.

Métodos Get e Set

Page 4: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Métodos Get e Set.

 Get e Set nada mais são que métodos, que frequentemente vemos em classes de Java. Eles servem para pegarmos informações  de variáveis da classe que são definidas como 'private', porém esses método são definidos como 'public'.

O que são e para que servem os métodos get e set

Page 5: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Métodos Get e Set.

 Usamos get para obter informações. Esse tipo de método sempre retorna um valor.

 Usamos set para definir valores. Esse tipo de método geralmente não retorna valores.

Como usar os métodos get e set

Page 6: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Métodos Get e Set.

 Daí surge uma pergunta natural: por que criar métodos para acessar variáveis, se podemos acessar elas diretamente? Simples: questão de segurança. As variáveis 'private' só podem ser acessadas de dentro da Classe. É como se elas fossem invisíveis foram do escopo da classe/objeto. Assim, evitamos que outros métodos, classes ou hackers tenham acesso aos dados de determinada classe, que muitas vezes podem ser dados privados, como é caso de aplicações para empresas e bancos.

Page 7: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Métodos Get e Set.

 Como tratar, então, essas variáveis? Aí que entra a questão dos métodos. Vamos permitir o acesso a essas variáveis, claro (senão não haveria sentido em usar esses atributos). Porém, vamos ter um total controle sobre essas variáveis através dos métodos.

Page 8: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Métodos Get e Set.

 Por exemplo: Suponha que você tenha que criar uma aplicação para um banco, onde vai limitar o número de saques de um cliente. Os valores do saldo desse cliente ficarão armazenados na variável 'saldo'. Se você der acesso total a essa variável, o cliente poderia usar de forma descontrolada os serviços do banco.

Page 9: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Métodos Get e Set.

 Porém, podemos criar um método em que, cada vez que o cliente saque dinheiro ele ative um contador:

public void setSaque(double valor){ saldo -= valor; contador++;} Nesse trecho de código, quando o usuário tenta sacar, através do menu do caixa eletrônico, ele vai para o método 'saque()'.

Page 10: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Métodos Get e Set.

 Então cada vez que ele saca, seu saldo diminui em 'valor' e um contador (que é uma variável da classe) é incrementado. É impossível fugir desse método!Sacou? O contador roda! Sempre!

 Sabemos que temos um limite diário de saque, vamos supor que seja três. Então vamos limitar o número de saques:

Page 11: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Métodos Get e Set.

 public void setSaque(double valor){ if(contador <=3){ saldo -= valor; contador++;   } else { System.out.println("Você atingiu o limite de saques diários");   }}

Page 12: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Métodos Get e Set.

 Pronto. Se você sacar 3x, o contador terá valor 4 (supondo que seu valor inicial seja 1), e agora é impossível ele sacar mais, pois sempre vai cair no else.

Page 13: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Métodos Get e Set.

 Usamos get para obter informações. Esse tipo de método sempre retorna um valor. Usamos set para definir valores. Esse tipo de método geralmente não retorna valores.

Usando o exemplo da classe "Funcionario", da aula passado sobre this e uso de métodos em Classe e Objetos, temos o código:

Como usar os métodos get e set

Page 14: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Métodos Get e Set.

 getSet.java

 public class getSet{     public static void main(String[] args){   String nome = “Zezinho";   int ID=2112;   double salario = 1000;   Funcionario chefe = new Funcionario();

Page 15: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Métodos Get e Set.

  chefe.setNome(nome);   chefe.setID(ID);   chefe.setSalario(salario);   chefe.exibir();   } 

 }

Page 16: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Métodos Get e Set.

 Funcionario.java

 public class Funcionario {  private String nome;  private int ID;  private double salario;

  public void exibir(){  System.out.printf("O funcionário %s, de número %d recebe %.2f por mês", getNome(),getID(),getSalario());  }

Page 17: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Métodos Get e Set.

 public void setNome( String nome ){  this.nome = nome;  }

 public void setID( int ID ){  this.ID = ID;  }

Page 18: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Métodos Get e Set.

  public void setSalario( double salario ){  this.salario = salario;  }

  public String getNome(){  return this.nome;  }

  public int getID(){  return this.ID;  }

  public double getSalario(){  return this.salario;  }  }

Page 19: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Métodos Get e Set.

 Outra maneira de inicializarmos as variáveis de um Objeto, é usando os métodos 'set', direto do construtor:

 setGet.java

 public class setGet{

 public static void main(String[] args){   String nome = “Zezinho";   int ID=2112;   double salario = 1000;

Como invocar métodos de dentro do construtor 

Page 20: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Métodos Get e Set.

  Funcionario chefe = new Funcionario(nome, ID, salario);     chefe.exibir();   }   }

Page 21: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Métodos Get e Set.

 Funcionario.java

 public class Funcionario {  private String nome;  private int ID;  private double salario;

  public Funcionario( String nome, int ID, double salario){

  setNome(nome);  setID(ID);  setSalario(salario);  }

Page 22: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Métodos Get e Set.

  public void exibir(){  System.out.printf("O funcionário %s, de número %d recebe %.2f por mês", getNome(),getID(),getSalario());  }

  public void setNome( String nome ){  this.nome = nome;  }

 public void setID( int ID ){  this.ID = ID;  } 

Page 23: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Métodos Get e Set.

 public void setSalario( double salario ){  this.salario = salario;  }

  public String getNome(){  return nome;  }

  public int getID(){  return ID;  }

 public double getSalario(){  return salario;  }  }   

Page 24: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Métodos Get e Set.

 Qual a diferença entre alterar e pegar o valor de uma variável diretamente (caso ela seja pública), e alterar e pegar o valor dela através de set e get (se ela for privada) ? Não é segurança, já que podemos alterar seu valor como bem quisermos, através dos métodos set.

Uso errado do get e set

Page 25: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Métodos Get e Set.

 Definir get e set para todas as variáveis, de forma direta, é um exemplo de péssimo hábito de programação. Infelizmente é uma técnica bem comum e muitos programadores, até os mais experientes, cometem esse ato inútil.

Page 26: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Métodos Get e Set.

 Para que servem então? Quando usar? Só use set e get quando você for fazer algo além de simplesmente mudar o valor de uma variável 'private'.Lá no começo de nosso tutorial, usamos o exemplo de contador, que limita o número de saques de um cliente a um caixa eletrônico.

Page 27: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Métodos Get e Set.

 Outro exemplo disso, seria em um aplicativo de vendas. Ao comprar, o método set ou get automaticamente define o valor de desconto ou juros. Assim esse método faz algo mais além do que mudar a variável. Assim, sua aplicação se torna robusta e segura, pois se torna impossível mudar o valor da variável sem que seja alterada o valor do juros ou desconto.

Page 28: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Métodos Get e Set.

Sempre que seu método set do tipo for:

retorno metodo(tipo valor){ this.nome_da_variavel = valor;}

Muito provavelmente ele é inútil. Para saber quando usar é simples: use quando for fazer algo além de fornecer valor.

Um exemplo útil:

retorno metodo(tipo valor){this.nome_da_variavel = valor * juros;};

Page 29: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Métodos Get e Set.

Vamos Treinar. Pesquisa

Exercício: Caixa Eletrônico em Java - Caixa.java

Crie um protótipo de caixa eletrônico em Java. No início, ele pede seu nome e valor $$ inicial que tem na conta. O programa deve fornecer um número de 4 dígitos - número da conta - para o usuário (use Random). Esses dados serão usados para criar um objeto da classe "Conta.java"

Atividade

Page 30: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Métodos Get e Set.

  A seguir, mostra um menu com as opções (esse menu deverá ser um método):- Extrato: exibe o nome, número da conta, saldo e quantos saques já foram realizados- Sacar: recebe o valor a ser sacado, informa se pode ser sacado (não pode ficar negativo) e mostra o saldo- Depositar: recebe o valor a ser depositado e mostra o novo saldo- Sair

  Esse menu aparece até o usuário escolher sair. As outras opções são métodos que devem fazer parte da "Conta.java" (setters e getters). Note que o usuário pode sacar no máximo 5 vezes por dia.

Continuação

Page 31: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Métodos Get e Set.

Vamos agora conhecer o Membro Static!!!