Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] Getter vs Acesso Direto: Impacto no Uso de Atributos Protected

Considerando o exemplo apresentado sobre o uso do modificador de acesso protected, qual seria o impacto ou diferença significativa entre optar por usar um método getter que retorne o saldo this.getSaldo() em vez de deixar o atributo como protected e acessá-lo diretamente this.saldo dentro do método? Há alguma boa prática sobre isso?

Codigo 1 com atributo saldo privado:

public void calcularJuros() {
    double juros = this.getSaldo() * taxaDeJuros;
    System.out.println("Juros atual: " +juros);
  }

Código 2 com atributo saldo protected:

public void calcularJuros() {
    double juros = this.saldo * taxaDeJuros;
    System.out.println("Juros atual: " +juros);
  }
2 respostas
solução!

Oii Vanessa, tudo bem?

No contexto da orientação a objetos, uma das principais vantagens de utilizar métodos getters em vez de acessar diretamente os atributos (mesmo que estes sejam protected) é a encapsulação. Encapsular significa esconder os detalhes de implementação de uma classe e expor apenas o que é necessário através de métodos públicos. Isso permite que você controle como os atributos são acessados e modificados, o que pode ajudar a manter a integridade dos dados.

Por exemplo, se no futuro você decidir que o saldo de uma conta não pode ser negativo, ou que precisa ser ajustado de acordo com algum critério antes de ser acessado, você pode facilmente implementar essa lógica no método getSaldo() sem alterar o código das classes que dependem dessa informação. Se o acesso fosse direto ao atributo saldo, cada uso desse atributo precisaria ser revisado e possivelmente modificado.

E, usar getters (e setters) permite uma maior flexibilidade e reusabilidade do código. Por exemplo, se você decidir criar uma subclasse que precisa de um comportamento diferente para obter o saldo, simplesmente pode sobrescrever o método getSaldo() na subclasse.

Mas, usar o modificador protected e permitir o acesso direto aos atributos pode ser útil em certas situações, especialmente quando você tem certeza de que o acesso direto não comprometerá a integridade dos dados e quando a performance é uma preocupação crítica (acessar diretamente um atributo é ligeiramente mais rápido do que chamar um método). Isso também pode tornar o código um pouco mais simples e direto em casos onde a lógica de acesso não é complexa.

Então, a escolha entre usar métodos getters ou acesso direto aos atributos protected depende de um equilíbrio entre a necessidade de encapsulação, simplicidade, manutenção e performance do código. A boa prática geralmente sugere priorizar a encapsulação (usando getters e setters), a menos que haja uma justificativa clara para acessar diretamente os atributos.

Um abraço e bons estudos.

Muito bem esclarecido, obrigada <3