static void Main(String[] args) { NotaFiscalBuilder criador = new NotaFiscalBuilder(); criador .ParaEmpresa("Pizzaria Rio Claro") .ComCnpj("123") .ComItem(new ItemDaNota("item 1", 100.0)) .ComItem(new ItemDaNota("item 2", 200.0)) .NaDataAtual() .ComObservacoes("Uma Obs qualquer"); criador.AdicionaAcao(new EnviadorDeEmail()); criador.AdicionaAcao(new EnviadorDeSms()); criador.AdicionaAcao(new NotaFiscalDAO()); NotaFiscal nf = criador.Constroi(); Console.WriteLine(nf.ValorBruto); Console.WriteLine(nf.Impostos); Console.ReadKey(); }
public void Executa(NotaFiscal nf) { Console.WriteLine("email"); }
public void Executa(NotaFiscal notaFiscal) { Console.WriteLine("Nota fiscal enviada por e-mail"); }
private void ExecutaListaAcao(NotaFiscal notaFiscal) { this.listaAcao.ForEach(acao => { acao.Executa(notaFiscal); }); }
public void Executa(NotaFiscal notaFiscal) { Console.WriteLine(notaFiscal.ValorBruto * Fator); }
public void Executar(NotaFiscal notaFiscal) { throw new NotImplementedException(); }
public void Executa(NotaFiscal notaFiscal) { Console.WriteLine("Nota fiscal salva no banco com sucesso"); }
public void Executa(NotaFiscal notaFiscal) { Console.WriteLine("Simulação do envio por e-mail"); }
static void Main(string[] args) { //IImposto ikcp = new IKCP(); //IImposto ippp = new IPPP(); //IImposto ihit = new IHIT(); //Orcamento orcamento = new Orcamento(1000.0); //orcamento.AdicionaItem(new Item("CANETA", 1000)); //orcamento.AdicionaItem(new Item("CANETA",1000)); //orcamento.AdicionaItem(new Item("LAPIS", 200)); //Não precisa utilizar a classe CalculadorDeImposto pois no metodo RealizaCalcula realiza a //seguinte operação: // Console.WriteLine(imposto.Calcula(orcamento)); //Que pode ser alterado nesse código para-> //Console.WriteLine(ikcp.Calcula(orcamento)); //Console.WriteLine(ippp.Calcula(orcamento)); //Console.WriteLine(ihit.Calcula(orcamento)); //Calculador de Imposto é responsável para impressão do valor do imposto //CalculadorDeImpostos calculador = new CalculadorDeImpostos(); //calculador.RealizaCalculo(orcamento, ikcp); //calculador.RealizaCalculo(orcamento, ippp); //calculador.RealizaCalculo(orcamento, ihit); //Console.ReadKey(); //CalculadorDeDescontos calculador_desconto = new CalculadorDeDescontos(); //Orcamento orcamento = new Orcamento(100); //orcamento.AdicionaItem(new Item("CANETA", 500)); //double desconto = calculador_desconto.Calcula(orcamento); //Console.WriteLine(desconto); //Console.ReadKey(); // Teste do design pattern - chain of responsability para formatação da exibição dos // dados da conta //Conta conta = new Conta("Jaqueline", 2000); //Formatador formatador = new Formatador(); //formatador.Formata(new Requisicao(Formato.XML), conta); //formatador.Formata(new Requisicao(Formato.CSV), conta); //formatador.Formata(new Requisicao(Formato.PORCENTO), conta); //Console.ReadKey(); // Exemplo utilizando o dominio de uma conta do Banco // Neste caso os impostos possuem uma estrutura comum: Taxação minima, Taxação máxima e uma condição de cálculo de taxação //ContaBanco conta_01 = new ContaBanco("Henrique Lustosa", "010203-00", "030201-00", 500); //ContaBanco conta_02 = new ContaBanco("Sabrina", "010204-00", "030201-01", 500); //ContaBanco conta_03 = new ContaBanco("Amariles", "010205-00", "030201-02", 500); //ContaBanco conta_04 = new ContaBanco("Joice Maria", "010206-00", "030201-03", 500); //IRelatorio relatorioSimples = new RelatorioSimples(); //IRelatorio relatorioComplexo = new RelatorioComplexo(); //List<ContaBanco> contas = new List<ContaBanco>(); //contas.Add(conta_01); //contas.Add(conta_02); //contas.Add(conta_03); //contas.Add(conta_04); //relatorioSimples.Imprime(contas); //Console.ReadKey(); //relatorioComplexo.Imprime(contas); //Console.ReadKey(); // Problema: No dominio do imposto o calculo pode ser uma composicao desses impostos // Por exemplo: ICMS e o ISS incidem no calculo ao mesmo tempo, ou ainda o imposto // ICPP pode compor o calculo. //Imposto iss = new ISScomICMS(); ?????!!!!!! - muitas combinacoes // ou //Imposto iss = new ISS(new ICMS( new ICPP)); - solucao mais elegante //Orcamento orcamento = new Orcamento(500); //orcamento.AdicionaItem(new Item("CANETA", 1000)); //orcamento.AdicionaItem(new Item("CANETA",1000)); //orcamento.AdicionaItem(new Item("LAPIS", 200)); //orcamento.AdicionaItem(new Item("CANETA", 1000)); //orcamento.AdicionaItem(new Item("CANETA", 1000)); //orcamento.AdicionaItem(new Item("LAPIS", 200)); //Imposto impostoComplexo = new ISS(new ICMS(new ImpostoMuitoAlto())); //double valor = impostoComplexo.Calcula(orcamento); //Console.WriteLine(valor); //Console.ReadKey(); //ContaBanco conta_01 = new ContaBanco("Henrique Lustosa", "019203-00", "030201-00", 12, new DateTime(2021, 06, 14)); //ContaBanco conta_02 = new ContaBanco("Sabrina", "010204-00", "039201-01", 50000000, new DateTime(2020, 07, 20)); //ContaBanco conta_03 = new ContaBanco("Amariles", "010205-00", "033201-02", 100, new DateTime(2021, 01, 03)); //ContaBanco conta_04 = new ContaBanco("Joice Maria", "010206-00", "036201-03", 50, new DateTime(2021, 02, 02)); //ContaBanco conta_05 = new ContaBanco("Luciano", "010203-01", "037201-00", 2000, new DateTime(2021, 04, 14)); //ContaBanco conta_06 = new ContaBanco("Lucas", "010204-02", "038201-01", 50000, new DateTime(2020, 03, 20)); //ContaBanco conta_07 = new ContaBanco("Simone", "010205-03", "038201-02", 100, new DateTime(2021, 05, 03)); //ContaBanco conta_08 = new ContaBanco("Sineide", "010206-04", "038201-03", 55, new DateTime(2021, 05, 02)); //List<ContaBanco> contas = new List<ContaBanco>(); //contas.Add(conta_01); //contas.Add(conta_02); //contas.Add(conta_03); //contas.Add(conta_04); //contas.Add(conta_05); //contas.Add(conta_06); //contas.Add(conta_07); //contas.Add(conta_08); //Filtro filtro = new DataAberturaMes( new SaldoMaior500(new SaldoMenor100())); //IList<ContaBanco> contasFiltradas = filtro.Filtra(contas); //foreach(ContaBanco c in contasFiltradas) //{ // string v = c.DataAbertura.ToString(); // Console.WriteLine(c.Nome + " - " + c.Numero + " - " + c.Agencia + " - " + c.Saldo + " - " + v ); //} //Console.ReadKey(); // Orcamento reforma = new Orcamento(500); // Console.WriteLine(reforma.Valor); // reforma.AplicaDescontoExtra(); // Console.WriteLine(reforma.Valor); // reforma.Aprova(); // reforma.AplicaDescontoExtra(); // Console.WriteLine(reforma.Valor); // reforma.Finaliza(); // Console.WriteLine(reforma.Valor); //Console.ReadKey(); // Implementação do Design Pattern State para um conta bancária // Onde os estados da classe ContaBanco são os seguintes: // Positivo e Negativo // e os métodos implementados pelas classses concretas são Saca() e Deposita() //ContaBanco conta_01 = new ContaBanco("Henrique Lustosa", "019203-00", "030201-00", 12, new DateTime(2021, 06, 14)); //ContaBanco conta_02 = new ContaBanco("Sabrina", "010204-00", "039201-01", 50000000, new DateTime(2020, 07, 20)); //conta_01.Saca(500); //conta_01.Saca(500); //Console.WriteLine(conta_01.Saldo); //conta_01.Deposita(1000); //Console.WriteLine(conta_01.Saldo); // Implementação do Design Pattern Builder: // Sem a utilização do Design Builder para criar uma nova nota fiscal // a classe teste teria que seguir muitos passos que dificultariam // a implementação. Além de um construtor recebendo muitos parâmetros. //IList<ItemDaNota> itens = new List<ItemDaNota>(); //double valorTotal = 0; //foreach(ItemDaNota item in itens) //{ // valorTotal += item.Valor; //} //double impostos = valorTotal * 0.05; //NotaFiscal nf = new NotaFiscal("RazaoSocial", "cnpj", DateTime.Now, valorTotal, impostos, itens, "obs qualquer"); //Console.ReadKey(); // Utilizando o construtor a classe teste fica mais intelegível para a criaçõa // da nota fiscal. // Implementando o Design Pattern Observer para controlar as ações que são realizadas no método Constroi da construção de uma nota fiscal NotaFiscalBuilder builder = new NotaFiscalBuilder(); builder.AdicionaAcao(new Impressora()); builder.AdicionaAcao(new NotaFiscalDAO()); builder.AdicionaAcao(new EnviadorDeSms()); builder.AdicionaAcao(new EnviadorDeEmail()); builder.AdicionaAcao(new Multiplicador(2)); NotaFiscal nf = builder.ParaEmpresa("Caelum") .ComCnpj("123.456.789/0001-10") .ComItem(new ItemDaNota("item 1", 100.0)) .ComItem(new ItemDaNota("item 2", 200.0)) .ComItem(new ItemDaNota("item 3", 300.0)) .ComObservacoes("entregar nf pessoalmente") .NaDataAtual() .Constroi(); }
static void Main(string[] args) { Console.WriteLine("----- Curso Design Patterns -----"); IImposto iss = new ISS(); IImposto icms = new ICMS(); Orcamento orcamento = new Orcamento(500); CalculadorImposto calculador = new CalculadorImposto(); var resultado = calculador.Calcular(orcamento, iss); Console.WriteLine($"Orçamento ISS: {orcamento.Valor} , Imposto: {resultado}"); IImposto ickv = new IKCV(); resultado = calculador.Calcular(orcamento, ickv); Console.WriteLine($"Orçamento IKCV: {orcamento.Valor} , Imposto: {resultado}"); ImpostoComposto insdc = new INSDC(new INSPT()); Console.WriteLine($"Orçamento INSDC: {orcamento.Valor} , Imposto: {insdc.Calcular(orcamento)}"); Orcamento marketing = new Orcamento(1200); marketing.AplicaDescontoExtra(); Console.WriteLine($"Orçamento Marketing: {marketing.Valor} , Estado: {marketing.EstadoAtual}"); marketing.Aprova(); marketing.AplicaDescontoExtra(); Console.WriteLine($"Orçamento Marketing: {marketing.Valor} , Estado: {marketing.EstadoAtual}"); marketing.Finaliza(); Console.WriteLine($"Orçamento Marketing: {marketing.Valor} , Estado: {marketing.EstadoAtual}"); // marketing.AplicaDescontoExtra(); /// BUILDER PATTERN / FLUENT INTERFACE GeradorNotaFiscal geradorNF = new GeradorNotaFiscal(); geradorNF .ParaEmpresa("RMac Hambone Sys compliance") .ComCnpj("923.321.001/0001-12") .comItem(new NotaFiscalItem("item 1", 10.2, 0.1)) .comItem(new NotaFiscalItem("item 2", 13.7, 0.1)) .comItem(new NotaFiscalItem("item 3", 20.2, 0.1)) .comItem(new NotaFiscalItem("item 4", 110.2, 0.1)) .NaDataAtual() .ComObservacoes("Entregar no bar da esquina"); /// OBSERVER PATTERN geradorNF.AdicionarAcao(new NotaDao()); geradorNF.AdicionarAcao(new NotaEnvio()); geradorNF.AdicionarAcao(new NotaSMS()); NotaFiscal NF001 = geradorNF.Gerar(); Console.WriteLine($"Notafiscal: Valor {NF001.ValorBruto} - Impostos: {NF001.Impostos}"); Console.ReadKey(); }
static void Main(string[] args) { //------------------------------------------------------------------------------ //CALCULADOR DE IMPOSTO //Imposto iss = new ISS(); //Imposto icms = new ICMS(); //Orcamento orcamento = new Orcamento(500.0); //CalculadorDeImpostos calculador = new CalculadorDeImpostos(); //calculador.RealizaCalculo(orcamento, iss); //-----------------DECORATOR------------------------------------------------------------- //CALCULADOR DE DESCONTO //CalculadorDeDescontos calculador = new CalculadorDeDescontos(); //Orcamento orcamento = new Orcamento(500); //orcamento.AdicionaItem(new Item("CANETA", 500)); //orcamento.AdicionaItem(new Item("LAPIS", 500)); //double desconto = calculador.Calcula(orcamento); //Console.WriteLine(desconto); Imposto iss = new ISS(); Orcamento orcamento = new Orcamento(100); double valor = iss.Calcula(orcamento); iss.Calcula(orcamento); Console.WriteLine(valor); Console.ReadKey(); //----------------STATES-------------------------------------------------------------- //Orcamento reforma = new Orcamento(500); //Console.WriteLine(reforma.Valor); //reforma.AplicaDesscontoExtra(); //Console.WriteLine(reforma.Valor); //reforma.Aprova(); //reforma.AplicaDesscontoExtra(); //Console.WriteLine(reforma.Valor); //reforma.Finaliza(); //reforma.AplicaDesscontoExtra(); //Console.WriteLine(reforma.Valor); //Console.ReadKey(); //-----------BUILDER--------------------------------------------------------------------- IList <ItemDaNota> itensDaNota = new List <ItemDaNota>(); itensDaNota.Add(new ItemDaNota("Biscoito", 2.50)); itensDaNota.Add(new ItemDaNota("Desodorante", 8.00)); itensDaNota.Add(new ItemDaNota("Feijão", 10.0)); double valorTotal = 0; foreach (var item in itensDaNota) { valorTotal += item.Valor; } double impostos = valorTotal * 0.05; NotaFiscal nf = new NotaFiscal ( "razao", "cnpj", DateTime.Now, valorTotal, impostos, itensDaNota, "obs qualquer" ); //NotaFiscalBuilder criador = new NotaFiscalBuilder(); NotaFiscal nf2 = new NotaFiscalBuilder() .ParaEmpresa("Caelum Ensino e Inovacao") .ComCnpj("Caelum Ensino e Inovacao") .NaDataAtual() .ComObservacoes("Uma obs qualquer") .ComItem(new ItemDaNota("Biscoito", 100.0)) .ComItem(new ItemDaNota("Desodorante", 200.0)) .Constroi(); //NotaFiscal nf = criador.Constroi(); Console.WriteLine(nf.ValorBruto); Console.WriteLine(nf.Impostos); Console.ReadKey(); //------------------------------------------------------------------------------// var conta = new Conta.Conta(500); conta.Saca(600); Console.WriteLine(conta); conta.Saca(100); }
public void Executa(NotaFiscal notaFiscal) { Console.WriteLine("Simulando a inserção da Nota Fiscal no Banco de Dados"); }
public void Executa(NotaFiscal notaFiscal) { Console.WriteLine("Valor bruto mutiplicado pelo fator: " + notaFiscal.ValorBruto * _fator); }
public void Executa(NotaFiscal notaFiscal) { Console.WriteLine("imprimindo notaFiscal"); }