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

Dúvida sobre Setters e Getters na linguagem Java

Olá! Poderia me explicar melhor o que significa "modelo anêmico", quando se fala de Setters e Getters na linguagem Java?

Desde já, eu agradeço!

5 respostas

Olá David, tudo bem?

O termo "modelo anêmico" (ou "anemic model", em inglês) é utilizado para descrever uma classe que contém apenas atributos e métodos getters e setters para acessá-los, sem nenhuma lógica ou comportamento adicional. Em outras palavras, a classe é "vazia" de comportamentos e métodos que vão além de armazenar e recuperar valores. Embora a utilização de getters e setters seja comum em Java e em outras linguagens orientadas a objetos para garantir o encapsulamento dos atributos de uma classe, o uso excessivo desses métodos pode levar a um modelo anêmico. Isso porque, em vez de adicionar comportamentos relevantes à classe, acabamos apenas adicionando um grande número de getters e setters.

Um modelo anêmico pode ser um indicativo de um design ruim, já que não há nenhuma lógica ou comportamento significativo na classe. Em vez disso, os comportamentos acabam sendo implementados em outras classes, o que pode levar a uma complexidade desnecessária no código.

Portanto, é importante lembrar que, embora os getters e setters sejam úteis e necessários em muitos casos, eles não devem ser usados em excesso e devem ser acompanhados de lógica e comportamento significativos na classe.

Então, o modelo anêmico ocorre quando é utilizado apenas métodos Setters e Getters, sem nenhuma lógica ou outro método mais significativo? No caso do exemplo das aulas no projeto do Bytebank, há 3 métodos que servem para atuar no saldo: sacar(),depositar() e transferir(), depois é criado apenas o método getSaldo() para verificar o saldo atual. Os 3 métodos criados além do getSaldo() podem ser suficiente para evitar que o saldo fique negativo e para que não haja modificações utilizando diretamente os atributos do objeto, não havendo a necessidade de criar o método setSaldo(). Desse modo, o correto seria pensar na utilidade, antes de simplesmente criar métodos Setters e Getters, certo?

solução!

Isso David, o modelo anêmico ocorre quando uma classe consiste apenas em getters e setters, sem qualquer lógica adicional ou comportamento significativo. Nesse tipo de modelo, a lógica de negócios é mantida fora da classe, muitas vezes em outra classe, o que pode levar a um design pobre e difícil de manter. No exemplo que você mencionou, os métodos sacar(), depositar(), transferir() e getSaldo() são suficientes para gerenciar o saldo do objeto e evitar que ele fique negativo, sem a necessidade de um método setSaldo(). Esse design de classe é mais robusto e coeso, pois concentra todas as operações relacionadas ao saldo dentro da própria classe. Portanto, antes de criar métodos getters e setters, é importante pensar na utilidade de cada método e no comportamento que deseja-se implementar na classe. Se a classe só precisa armazenar dados simples, getters e setters podem ser suficientes. Porém, se a classe precisa executar operações mais complexas, como cálculos, validações e atualizações de estado, é melhor adicionar métodos com lógica adicional para evitar um modelo anêmico.

Eu entendi! Muito obrigado!

Caramba! Baita aula! Obrigado pessoal!