public static void TotalDeTributoDeImportados(Produto [] produtos, TotalizadorDeTributoProdutoImportado TTProdutoImportado) { foreach (Produto produto in produtos) { if (!(produto is ProdutoNacional)) /*verificando se o objeto não é um ProdutoNacional */ { /*caso não seja um produto nacional é realizado um casting da variavel produto*/ ITributoDeProdutoImportado produtoImportado = produto as ITributoDeProdutoImportado; TTProdutoImportado.AcumuladorDeTributoProdutoImportado(produtoImportado); /* No nosso caso apenas a classe ProdutoNacional não implementa a interface ITributoDeProdutoImportado, portanto os demais objetos * são ITributoDeProdutoImportado por isso é feito o casting acima.*/ } } }
public static void exibirTotalDeTributoDeImportados(TotalizadorDeTributoProdutoImportado TTProdutoImportado) { Console.WriteLine(TTProdutoImportado.AcumuladorTributoProdImportado); }
static void Main(string[] args) { // ExecutarCalculadora(); // Produto pn = new ProdutoNacional(20.00, 2, 0.02); // Produto pi = new ProdutoImportado(50.00, 1, 0.5); // UpcastingDowcasting(pn, pi); Produto produto = null; Produto[] produtos = CriarArrayProdutos(); TotalizadorDeTributoProdutoImportado TTProdutoImportado = new TotalizadorDeTributoProdutoImportado(); int op = 0, i = 0; //ManipularVetores mv = new ManipularVetores(); // mv.criarVetorInteiros(); // mv.criarVetorDouble(); // mv.criarVetorString(); do { op = Menu(); switch (op) { case 1: try { do { //p = new ProdutoNacional(); CadastrarProduto(produto, produtos, i); Console.WriteLine("Deseja cadastrar outro produto (1-sim) (2-não) \n"); op = int.Parse(Console.ReadLine()); i++; } while (op != 2); ExibirArrayProdutos(produtos, produto); } catch (ArgumentNullException e) { Console.WriteLine(e.Message); } catch (ArgumentException e) { Console.WriteLine(e.Message); } catch (IndexOutOfRangeException e) { Console.WriteLine(e.Message); } catch (Exception e) { Console.WriteLine(e.Message); } break; case 2: TotalDeTributoDeImportados(produtos, TTProdutoImportado); exibirTotalDeTributoDeImportados(TTProdutoImportado); break; case 3: break; case 4: break; case 5: ExibirArrayProdutos(produtos, produto); break; case 6: Console.WriteLine(" Programa encerrado ! \n"); break; } } while (op != 6); Console.Read(); }