Created
December 20, 2011 21:24
-
-
Save alexduarte/1503345 to your computer and use it in GitHub Desktop.
This file contains 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 IKCV extends TemplateDeImpostoCondicional { | |
public IKCV(Imposto outroImposto) { | |
super(outroImposto); | |
} | |
public IKCV(){} | |
public boolean deveUsarMaximaTaxacao(Orcamento orcamento) { | |
return orcamento.getValor() > 500.00 && temItemMaiorQue100Reais(orcamento); | |
} | |
public double maximaTaxacao(Orcamento orcamento) { | |
return orcamento.getValor()*0.1 + calculoDoOutroImposto(orcamento); | |
} | |
public double minimaTaxacao(Orcamento orcamento) { | |
return orcamento.getValor()*0.06 + calculoDoOutroImposto(orcamento); | |
} | |
private boolean temItemMaiorQue100Reais(Orcamento orcamento){ | |
for(Item item: orcamento.getItens()){ | |
if(item.getValor() > 100) | |
return true; | |
} | |
return false; | |
} | |
} | |
public class ICPP extends TemplateDeImpostoCondicional { | |
public ICPP(Imposto outroImposto) { | |
super(outroImposto); | |
} | |
public ICPP(){} | |
public boolean deveUsarMaximaTaxacao(Orcamento orcamento) { | |
return orcamento.getValor()>500.00 + calculoDoOutroImposto(orcamento); | |
} | |
public double maximaTaxacao(Orcamento orcamento) { | |
return orcamento.getValor()*0.07 + calculoDoOutroImposto(orcamento); | |
} | |
public double minimaTaxacao(Orcamento orcamento) { | |
return orcamento.getValor()*0.05 + calculoDoOutroImposto(orcamento); | |
} | |
} | |
public abstract class TemplateDeImpostoCondicional extends Imposto { | |
public TemplateDeImpostoCondicional(){} | |
public TemplateDeImpostoCondicional(Imposto outroImposto){ | |
super(outroImposto); | |
} | |
public double calcula(Orcamento orcamento) { | |
if(deveUsarMaximaTaxacao(orcamento)){ | |
return maximaTaxacao(orcamento)+ calculoDoOutroImposto(orcamento); | |
} | |
else { | |
return minimaTaxacao(orcamento) + calculoDoOutroImposto(orcamento); | |
} | |
} | |
public abstract boolean deveUsarMaximaTaxacao(Orcamento orcamento); | |
public abstract double maximaTaxacao(Orcamento orcamento); | |
public abstract double minimaTaxacao(Orcamento orcamento); | |
} | |
public abstract class Imposto { | |
private final Imposto outroImposto; | |
public Imposto(Imposto outroImposto){ | |
this.outroImposto = outroImposto; | |
} | |
public Imposto(){ | |
this.outroImposto = null; | |
} | |
protected double calculoDoOutroImposto(Orcamento orcamento) { | |
if(outroImposto==null)return 0; | |
return outroImposto.calcula(orcamento); | |
} | |
public abstract double calcula(Orcamento orcamento); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment