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

[Dúvida] Não entendi a utilidade da classe CalculadoraImposto no exemplo

Existe a interface Tributavel que possui o método calculaImposto, e aí cada uma das classes Produto e Servico implementam essa interface e fazem o seu próprio calculo de imposto com este método. Dito isso, então para que está sendo usada a classe CalculadoraImposto? Qual a utilidade dela neste programa? Pois eu não detectei ela sendo usada em momento nenhum, fora que pode haver uma confusão com relação a dois métodos terem o mesmo nome, pois tanto a interface Tributavel quanto a classe CalculadoraImposto possuem um método com mesmo nome, um sobrescreve o outro? O que acontece neste programa por trás dos panos?

2 respostas
solução!

Oi, Fernando! Tudo bem?

A classe CalculadoraImposto é responsável por centralizar o cálculo total dos impostos de diferentes itens que implementam a interface Tributavel. Com um exemplo prático podemos imaginar que temos uma lista de produtos e serviços e queremos calcular o total de impostos de todos eles, sem a classe CalculadoraImposto, precisaríamos iterar sobre essa lista e chamar o método calculaImposto de cada item manualmente, acumulando o valor em uma variável. Dessa forma, a classe CalculadoraImposto facilita esse processo, encapsulando essa lógica de acumulação de impostos.

Essa abordagem traz alguns benefícios:

  • Separação de responsabilidades: A lógica de cálculo do imposto fica concentrada na classe CalculadoraImposto, evitando que cada classe que implementa Tributavel precise conter essa lógica.

  • Polimorfismo: O método calculaImposto(Tributavel tributavel) da classe CalculadoraImposto pode receber qualquer objeto que implemente a interface Tributavel, como Produto ou Servico, o que permite que a CalculadoraImposto calcule o imposto de diferentes tipos de itens tributáveis de forma genérica.

  • Manutenibilidade: Se houver a necessidade de alterar a lógica de cálculo do imposto, essa alteração ficará centralizada na classe CalculadoraImposto, evitando a necessidade de modificar o código em diversos lugares.

Sobre a questão dos métodos com o mesmo nome, não há problema. O método calculaImposto na interface Tributavel é implementado individualmente em cada classe (Produto e Servico) e a classe CalculadoraImposto apenas chama esse método, sem sobrescrevê-lo, assim, não há conflito porque a CalculadoraImposto não implementa Tributavel, ela apenas utiliza objetos que implementam essa interface.

Espero ter ajudado!

Um forte abraço e bons estudos!

Olá Sarah, tudo bem e vc?

Agora eu entendi, eu estava meio confuso mas entendi que a classe CalculadoraImposto ainda não foi utilizada, ela foi apenas criada para ser usada em um momento onde eu precise calcular o total do valor dos impostos de vários objetos o tipo Produto ou Serviço. Ficou mais claro agora! Muito Obrigado!