por quer ele cria 2 metodos, um get e outro set ?
public String getNome() { return this.nome; } public void setNome(String nome) { this.nome = nome; }
por quer ele cria 2 metodos, um get e outro set ?
public String getNome() { return this.nome; } public void setNome(String nome) { this.nome = nome; }
Oi Murilo,
O método get nós criamos sempre quando queremos obter o atributo, o método set usamos quando queremos modificar o atributo.
Esses métodos são criados devido ao encapsulamento de classe. Em Java, encapsulamento é um dos princípios fundamentais da programação orientada a objetos. Ele refere-se à prática de ocultar os detalhes internos de uma classe e restringir o acesso direto aos seus membros, como variáveis e métodos. O encapsulamento é alcançado através do uso de modificadores de acesso, como private, protected, public, e métodos de acesso (getters e setters). O encapsulamento ajuda a organizar o código, reduzir dependências e facilitar a manutenção. Ele fornece um nível de abstração que permite alterar a implementação interna de uma classe sem afetar o código cliente. Além disso, encapsular dados privados com métodos de acesso oferece controle sobre como esses dados são manipulados e validados.
Vamos aos exemplos:
public class Pessoa {
private int idade;
public int getIdade() {
returh this.idade;
}
public void setIdade(int novaIdade) {
if(novaIdade > 0){
this.idade = novaIdade;
}
}
}
Como pode ver nesse exemplo, o método set antes de simplesmente settar a idade para o novo valor passado, ele verifica se a nova idade é maior que 0, assim, automatizando essa validação e nos poupando de sempre ter que lembrar de validar essa informação manualmente. Essa lógica garante a integridade dos dados da classe Pessoa. Enquanto o método get apenas retorna o valor da idade.
Se deixássemos o atributo idade com o controle de acesso como "public", seria possível acessar o atributo diretamente e manipular os dados desse atributo livremente, comprometendo a regra de negócio que a equipe definiu para a classe.
Aqui vai outro exemplo:
public class Calculadora {
private int numero1;
private int numero2;
// Construtor
public Calculadora(int num1, int num2) {
this.numero1 = num1;
this.numero2 = num2;
}
// Getter para o resultado da soma
public int getSoma() {
return calcularSoma();
}
// Método privado para calcular a soma
private int calcularSoma() {
return numero1 + numero2;
}
Nesse exemplo nós temos o método privado calcularSoma(), ou seja, ninguém consegue acessar ele, a não ser a própria classe internamente. Usamos esse método dentro do nosso método getSoma. Em vez de manualmente recuperarmos o numero1 e numero2 para então manualmente calcular. Nós deixamos a lógica de soma abstraída em um método que pode ser usado em diversas outras operações dentro da classe, sendo uma delas, a operação de obter o resultado da soma getSoma().
As responsabilidades de recuperar um valor e definir um valor estão separadas.
Agora no início isso pode te parecer desnecessário, quando você poderia simplesmente acessar o atributo diretamente, mas mais para frente você vai ver essa prática fazendo cada vez mais sentido.
Se isso te ajudou, marca como solução. Bons estudos