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).
O
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?
L
Solucao aceita
Lucas_Camara
Exato!
O
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
L
Lucas_Camara
Vc está correto, e isso não se prende apenas em java, mas na orientação à objetos no geral, independente da linguagem.
O
OliverG
Então rsrs,
Estou tentando pegar bem a POO pois é bem utilizada na linguagem.
L
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.
O
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