Created
December 20, 2011 04:11
-
-
Save alexduarte/1500219 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 abstract class TemplateDeImpostoCondicional implements Imposto { | |
public double calcula(Orcamento orcamento) { | |
if(deveUsarMaximaTaxacao(orcamento)){ | |
return maximaTaxacao(orcamento); | |
} | |
else { | |
return minimaTaxacao(orcamento); | |
} | |
} | |
public abstract boolean deveUsarMaximaTaxacao(Orcamento orcamento); | |
public abstract double maximaTaxacao(Orcamento orcamento); | |
public abstract double minimaTaxacao(Orcamento orcamento); | |
} | |
public class ICPP extends TemplateDeImpostoCondicional { | |
public boolean deveUsarMaximaTaxacao(Orcamento orcamento) { | |
return orcamento.getValor()>500.00; | |
} | |
public double maximaTaxacao(Orcamento orcamento) { | |
return orcamento.getValor()*0.07; | |
} | |
public double minimaTaxacao(Orcamento orcamento) { | |
return orcamento.getValor()*0.05; | |
} | |
} | |
public class IKCV extends TemplateDeImpostoCondicional { | |
public boolean deveUsarMaximaTaxacao(Orcamento orcamento) { | |
return orcamento.getValor() > 500.00 && temItemMaiorQue100Reais(orcamento); | |
} | |
public double maximaTaxacao(Orcamento orcamento) { | |
return orcamento.getValor()*0.1; | |
} | |
public double minimaTaxacao(Orcamento orcamento) { | |
return orcamento.getValor()*0.06; | |
} | |
private boolean temItemMaiorQue100Reais(Orcamento orcamento){ | |
for(Item item: orcamento.getItens()){ | |
if(item.getValor() > 100) | |
return true; | |
} | |
return false; | |
} | |
} | |
public class TestaImpostos { | |
public static void main(String[] args) { | |
ICPP icpp = new ICPP(); | |
CalculadorImposto calcula = new CalculadorImposto(); | |
Orcamento orcamento = new Orcamento(700.00); | |
calcula.calculaImposto(orcamento, icpp); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment