private const double TRIBUTACAO_ICMS = 0.16; //Exemplo MG em certos produtos public double Calcular(ItemNoEstoque item) { var impostoRetido = item.Valor * TRIBUTACAO_ICMS; item.SetNovoPreco(item.Valor + impostoRetido); //Troca o preco atual return(impostoRetido); }
private const double TRIBUTACAO_ALFANDEGA = 0.6; //Caso o produto custe mais de 100 reais public double Calcular(ItemNoEstoque item) { if (item.Valor > 100) { var impostoRetido = item.Valor * TRIBUTACAO_ALFANDEGA; item.SetNovoPreco(item.Valor + impostoRetido); return(impostoRetido); } return(-1); }
static void Main(string[] args) { //Cadeia de responsabilidade permite q outras classes conheçam suas antecedentes //Ele liga cada classe com uma proxima, permitindo que tenha um maior desacoplamento no códido //Nota: que esse codigo pode ser reescrito utilizando o template method ItemNoEstoque itemN1 = new ItemNoEstoque("Bic", 3.90, 10); ItemNoEstoque itemN2 = new ItemNoEstoque("Castel", 3.90, 10); ItemNoEstoque itemN3 = new ItemNoEstoque("Bic Vermelha", 3.90, 10); ItemNoEstoque itemN4 = new ItemNoEstoque("Lapiseira", 3.90, 2_000); ItemNoEstoque itemN5 = new ItemNoEstoque("XBOX", 3_900, 10); ItemNoEstoque itemN6 = new ItemNoEstoque("PS4", 4_800, 10); EstoqueGeral estoque = new EstoqueGeral("Papelaria"); Vendedor vendedorAndre = new Vendedor("Andre Soares Gomes", 10_000.00); IMeta meta5K = new _5KDeVendas(); IMeta meta10K = new _10KDeVendas(); IMeta meta20K = new _20KDeVendas(); meta5K.ProximaMeta = meta10K; meta10K.ProximaMeta = meta20K; estoque.SetVendedorResponsavel(vendedorAndre); estoque.SetMetaInicial(meta5K); estoque.AdicionaNovoItemNoEstoque(itemN1); estoque.AdicionaNovoItemNoEstoque(itemN2); estoque.AdicionaNovoItemNoEstoque(itemN3); estoque.AdicionaNovoItemNoEstoque(itemN4); estoque.AdicionaNovoItemNoEstoque(itemN5); estoque.AdicionaNovoItemNoEstoque(itemN6); estoque.LeituraMensalDeMeta(); //estoque.LeituraDosProdutos(); //estoque.LeituraDoValorTotalEmEstoque(); ReadKey(); }
static void Main(string[] args) { //O padrão estrategy é um design patthern que permite que multiplas estrátegias possam ser utilizadas no mesmo objetivo //Ele permite um menor desacoplamento entre as classes, permitindo por consequinte uma maior escalabilidade do código ItemNoEstoque itemN1 = new ItemNoEstoque(100_000.00, "Lancer"); ItemNoEstoque itemN2 = new ItemNoEstoque(680.00, "Zenfone 7"); ItemNoEstoque itemN3 = new ItemNoEstoque(90.00, "Xiaomi Airdots"); WriteLine(itemN1.Informacoes); WriteLine(itemN2.Informacoes); WriteLine(itemN3.Informacoes); IImposto icms = new Icms(); IImposto alfandega = new TaxaAlfandega(); CalculadoraDeImposto.MostraInformações(itemN1, icms); CalculadoraDeImposto.MostraInformações(itemN2, alfandega); CalculadoraDeImposto.MostraInformações(itemN3, alfandega); ReadKey(); }