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).
OliverG1 like
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?
Solucao aceita
Lucas_Camara
Exato!
OliverG
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
Lucas_Camara
Vc está correto, e isso não se prende apenas em java, mas na orientação à objetos no geral, independente da linguagem.
OliverG
Então rsrs,
Estou tentando pegar bem a POO pois é bem utilizada na linguagem.
Lucas_Camara
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.:
publicclassPessoa{privateStringnome;publicStringgetNome(){returnthis.nome;}publicvoidalterarNome(StringnovoNome){if(novoNome==null||"".equals(novoNome)){thrownewIllegalArgumentException("Novo nome informado não é valido!");}if(novoNome.length()<3){thrownewIllegalArgumentException("Novo nome deve ter pelo menos 3 letras!");}this.nome=novoNome;}}
E ao usar:
Pessoapessoa=newPessoa();pessoa.alterarNome("");// erro pois não é um nome válidopessoa.alterarNome("Lu");// erro pois possui menos do que 3 letraspessoaRepository.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.
OliverG1 like
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