public static void RealizaCalculo(Orcamento orcamento, IImposto imposto) { //CalculadoraDeImpostos apenas exibe um mensagem na tela, ela não é necessária. //Mas agora imagine que, além de calcular o imposto, //essa classe precisasse fazer mais alguma coisa, //como por exemplo, alterar o status do Orçamento, ou notificar algum outro objeto desse valor calculado. var valor = imposto.Calcula(orcamento); Console.Write(imposto.GetType().Name + ": "); Console.WriteLine(valor); }
public NotaFiscal Gera(Fatura fatura, IImposto imposto) { double valor = fatura.ValorMensal; double valorImposto = imposto.Calcula(fatura); var notaFiscal = new NotaFiscal(valor, valorImposto); ExecutaAcaoNota(notaFiscal); return(notaFiscal); }
/// <summary> /// Método que independe do imposto para calcular o valor do mesmo. /// </summary> /// <param name="orcamento">Classe que representa o orçamento.</param> /// <param name="imposto">Interface que representa todos os impostos.</param> public void RealizaCalculo(Orcamento orcamento, IImposto imposto) { #region Smell Bad - CÓDIGO PROBLEMÁTICO /* * if ("ICMS".Equals(imposto)) * { * //double icms = orcamento.Valor * 0.1; //CODIGO PROBLEMÁTICO * double icms = new ICMS().CalculaICMS(orcamento); * Console.WriteLine(icms); * } * else if("ISS".Equals(imposto)) * { * //double iss = orcamento.Valor * 0.06; //CODIGO PROBLEMÁTICO * double iss = new ISS().CalculaISS(orcamento); * Console.WriteLine(iss); * }*/ #endregion Console.WriteLine(imposto.Calcula(orcamento)); }
public void RealizaCalculo(Orcamento orcamento, IImposto imposto) { double valor = imposto.Calcula(orcamento); Console.WriteLine(valor); }
// Passar a interface como parâmetro // Com este método genérico por mais que se crie vários outros impostos não precisamos mexer no Calculador de Impostos public void RealizaCalculo(Orcamento orcamento, IImposto imposto) { double resultado = imposto.Calcula(orcamento); Console.WriteLine(resultado); }
public decimal CalculaImposto() { return(_imposto.Calcula(_orcamento)); }
public void RealizaCalculo(Orcamento orcamento, IImposto imposto) { double resultado = imposto.Calcula(orcamento); Console.WriteLine(resultado); }
public Salario Desconta(IImposto desconto) { SalarioAtual -= desconto.Calcula(SalarioAtual); return(this); }
public double RealizaCalculo(Orcamento orcamento, IImposto imposto) { return(imposto.Calcula(orcamento)); }
internal static void RealizaCalculo(Orcamento orcamento, IImposto imposto) { var valor = imposto.Calcula(orcamento); MessageBox.Show($"Valor do imposto calculado: {valor.ToString(CultureInfo.InvariantCulture)}"); }
public void RealizaCalculo(Orcamento orcamento, IImposto imposto) { double icms = imposto.Calcula(orcamento); Console.WriteLine(icms); }
public void RealizaCalculo(Orcamento orcamento, IImposto imposto) { var calculo = imposto.Calcula(orcamento); Console.WriteLine("PadroesDeProjetos.Strategy: " + calculo); }
public void RealizaCalculo(Orcamento orcamento, IImposto imposto) { var valor = imposto.Calcula(orcamento); MessageBox.Show(valor.ToString(CultureInfo.InvariantCulture)); }
// Tentando separar em métodos... /* * public void RealizaCalculoICMS(Orcamento orcamento) * { * double icms = new ICMS().CalculaICMS(orcamento); * Console.WriteLine(icms); * } * * public void RealizaCalculoISS(Orcamento orcamento) * { * double iss = new ISS().CalculaISS(orcamento); * Console.WriteLine(iss); * } * * // O problema persiste * // Ex.: Ao implementar outro imposto, um programador precisaria conhecer todo código */ #endregion #region Passo 4 // Com este método genérico por mais que se crie vários outros impostos não precisamos mexer no Calculador de Impostos public void RealizaCalculo(Orcamento orcamento, IImposto imposto) // Passar a interface como parâmetro { double resultado = imposto.Calcula(orcamento); Console.WriteLine(resultado); }
public CalculadorDeImposto(Orcamento orcamento, IImposto estrategiaDeImposto) { decimal valorImposto = estrategiaDeImposto.Calcula(orcamento); Console.WriteLine($"Valor de {estrategiaDeImposto.Nome}: R$ {valorImposto:F2}"); }