Gett and Sett Java

Olá Meus caros tudo bem?

Me tirem uma dúvida,

Eu criei uma classe com o nome pessoas e seus atributos Nome e CPF.

Como faço para que os métodos dentro da classe tenha acesso aos atributos apenas pelos métodos geter e seter e não permitir acessar o atribuo a não ser pelos metodos?

Dentro da mesma classe não dá (e nem precisa). O encapsulamento é para impedir que outras classes acessem propriedades de forma indevida (para atender alguma regra, por exemplo).

Perfeito entendi,

Bom é que nesse caso o get é apenas para resgatar os valores fora da classe né?

Pois dentro da classe ele não tem nenhuma serventia certo?

1 curtida

Exato!

Maravilha rsrs,

Estou repassando um estudo que já fiz em java lá em 2020, ai só para recapitular os assuntos.

Volta e meia sai uma pergunta kkk

Vc está correto, e isso não se prende apenas em java, mas na orientação à objetos no geral, independente da linguagem.

Então rsrs,

Estou tentando pegar bem a POO pois é bem utilizada na linguagem.

Um exemplo de uso para o encapsulamento mais simples é assim:

Em vez de só criar um método set que atribui um nome à uma pessoa, seria mais interessante criar um método que indique melhor o que será feito e já tratando algumas coisas, ex.:

public class Pessoa {
  private String nome;

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

  public void alterarNome(String novoNome) {
    if (novoNome == null || "".equals(novoNome)) {
      throw new IllegalArgumentException("Novo nome informado não é valido!");
    }

    if (novoNome.length() < 3) {
      throw new IllegalArgumentException("Novo nome deve ter pelo menos 3 letras!");
    }

    this.nome = novoNome;
  }
}

E ao usar:

Pessoa pessoa = new Pessoa();

pessoa.alterarNome(""); // erro pois não é um nome válido

pessoa.alterarNome("Lu"); // erro pois possui menos do que 3 letras

pessoaRepository.save(pessoa); // não vai salvar pq caiu nas validações

Dessa forma, em todo o sistema, qualquer funcionalidade que for alterar o nome de uma Pessoa, irá passar pelas mesmas validações para garantir que a pessoa tenha um nome de acordo com as regras.

Então, lembra aquela ajuda que pedi para você sobre as requisições do PK PARTIC então tentei implementar ela em Java, para praticar a orientação a objetos e conhecer um pouco mais dos recursos.

Segue o link postado no github

Depois se você quiser dar uma olhada e sugerir alguma melhoria em questão de sintaxe ou algo do tipo, sou aberto a sugestões.

Pois num futuro não tão distante pretendo trabalhar só com java rsrs

1 curtida

Gostei dessa sugestão rsrs