1
resposta

porque ele cria 2 metodos , sendo um set e outro get para o 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; }

1 resposta

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:

  • Uma das regras de negócio definidas para o nosso objeto Pessoa é que uma Pessoa não pode ter menos do que 1 ano
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