This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| public class DescontoPorMaisDeCincoItens { | |
| public double desconta(Orcamento orcamento) { | |
| if(orcamento.getItens().size > 5) { | |
| return orcamento.getValor() * 0.1; | |
| } | |
| return 0; | |
| } | |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| public interface Desconto { | |
| double desconta(Orcamento orcamento); | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| public interface Desconto { | |
| double desconta(Orcamento orcamento); | |
| void setProximo(Desconto proximo); | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| public class DescontoPorMaisDeCincoItens implements Desconto { | |
| private Desconto proximo; | |
| public void setProximo(Desconto proximo) { | |
| this.proximo = proximo; | |
| } | |
| public double desconta(Orcamento orcamento) { | |
| if(orcamento.getItens().size > 5) { |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| public class SemDesconto implements Desconto { | |
| public double desconta(Orcamento orcamento) { | |
| return 0; | |
| } | |
| public void setProximo(Desconto desconto) { | |
| // nao tem! | |
| } | |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| public class CalculadorDeDescontos { | |
| public double calcula(Orcamento orcamento) { | |
| Desconto descontoPorMaisDeCincoItens = new DescontoPorMaisDeCincoItens(); | |
| Desconto descontoPorMaisDeQuinhentosReais = new DescontoPorMaisDeQuinhentosReais(); | |
| Desconto semDesconto = new SemDesconto(); | |
| descontoPorMaisDeCincoItens.setProximo(descontoPorMaisDeQuinhentosReais); | |
| descontoPorMaisDeQuinhentosReais.setProximo(semDesconto); | |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| public class DescontoPorVendaCasada implements Desconto { | |
| private Desconto proximo; | |
| public double desconta(Orcamento orcamento) { | |
| if(aconteceuVendaCasadaEm(orcamento)) { | |
| return orcamento.getValor() * 0.05; | |
| } | |
| return proximo.desconta(orcamento); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| public class CalculadorDeDescontos { | |
| public double calcula(Orcamento orcamento) { | |
| Desconto descontoPorMaisDeCincoItens = new DescontoPorMaisDeCincoItens(); | |
| Desconto descontoPorMaisDeQuinhentosReais = new DescontoPorMaisDeQuinhentosReais(); | |
| Desconto descontoPorVendaCasada = new DescontoPorVendaCasada(); | |
| Desconto semDesconto = new SemDesconto(); | |
| descontoPorMaisDeCincoItens.setProximo(descontoPorMaisDeQuinhentosReais); | |
| descontoPorMaisDeQuinhentosReais.setProximo(descontoPorMaisDeQuinhentosReais); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| public abstract class TemplateDeImpostoCondicional implements Imposto { | |
| public double calcula(Orcamento orcamento) { | |
| if(deveUsarMaximaTaxacao(orcamento)) { | |
| return maximaTaxacao(orcamento); | |
| } else { | |
| return minimaTaxacao(orcamento); | |
| } | |
| } | |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| class ICPP extends TemplateDeImpostoCondicional { | |
| public boolean deveUsarMaximaTaxacao(Orcamento orcamento) { | |
| return orcamento.getValor() > 500; | |
| } | |
| public double maximaTaxacao(Orcamento orcamento) { | |
| return orcamento.getValor() * 0.07; | |
| } | |