/* * public static void ExecutarCalculadora(){ * * //Console.WriteLine(Calculadora.Sum(new int[] { 1, 4, 5, 10})); sem usar a palavra params no parametro do método Sum na classe Calculadora * Console.WriteLine(Calculadora.Sum( 1, 4, 5, 10 )); // utilizando a palavra params no parametro do método Sum na classe Calculadora * * // Console.WriteLine(Calculadora.Sum(new double[] { 2.5, 4.5, 13.4 })); sem usar a palavra params no parametro do método Sum na classe Calculadora * Console.WriteLine(Calculadora.Sum( 2.5, 4.5, 13.4 )); * //Console.WriteLine(Calculadora.Sum(new String[] { "Claudio", "Fatima", "Zuila", "Bibiu" })); * Console.WriteLine(Calculadora.Sum("Claudio", "Fatima", "Zuila", "Bibiu" )); * * int x = 10; * * Calculadora.Triple(ref x); // informando no parametro com a palavra ref a variavel que será referenciada * * Console.WriteLine(x); * * int valor = 10; * int result; // com o modificador out não é obrigatorio iniciar a variavel resul * * Calculadora.Triple(valor, out result); * * Console.WriteLine(result); * * * } */ public static void UpcastingDowcasting(Produto pn, Produto pi) { // DOWCASTING /* ProdutoNacional pn2 = pn; nesse caso ocorre um erro pois o compilador não sabe que a variavel pn * do tipo Produto faz referencia a um objeto do tipo ProdutoNacional sendo necessario casting. */ // fazendo dowcasting ProdutoNacional pn2 = (ProdutoNacional)pn; ExibirProduto(pn2); ProdutoImportado pi2 = (ProdutoImportado)pi; ExibirProduto(pi2); /*É necessario muito cuidado ao fazer DOWCASTING pois devemos verificar o tipo do objeto ao qual a variavel faz referencia. * Caso contrario pode ocorrer erro. ex:*/ /* ProdutoImportado pn3 = (ProdutoImportado)pn; erro pois nesse caso a variavel pn não faz referencia a um objeto do tipo ProdutoImportado * e sim a um objeto do tipo ProdutoNacional. Nesse caso é necessario fazer uma verificação confome o exemplo a seguir : */ //verificando o tipo do objeto à qual a variavel faz referencia com a palavra (is) if (pn is ProdutoImportado) { ProdutoImportado pi3 = (ProdutoImportado)pn; } else { Console.WriteLine(" Erro, a variavel pn do tipo Produto não faz referencia a um objeto do tipo ProdutoImportado "); } if (pi is ProdutoNacional) { ProdutoNacional pn3 = (ProdutoNacional)pi; } else { Console.WriteLine(" Erro, a variavel pi do tipo Produto não faz referencia a um objeto do tipo ProdutoNacional "); } if (pn is ProdutoNacional) { // forma opcional de fazer o casting(neste caso dowcasting) utilizando a palavra (as) // ProdutoNacional pn4 = (ProdutoNacional)pn; ProdutoNacional pn4 = pn as ProdutoNacional; ExibirProduto(pn4); } else { Console.WriteLine(" Erro, a variavel pn do tipo Produto não faz referencia a um objeto do tipo ProdutoNacional "); } if (pi is ProdutoImportado) { //ProdutoImportado pi4 = (ProdutoImportado)pi; ProdutoImportado pi4 = pi as ProdutoImportado; ExibirProduto(pi4); // MostrarProduto(pi4); } else { Console.WriteLine(" Erro, a variavel pi do tipo Produto não faz referencia a um objeto do tipo ProdutoImportado "); } }
public static void CadastrarProduto(Produto produto, Produto[] produtos, int pos) { Console.WriteLine(" Cadastrar Produto (1- Nacional) ou (2- Importado) (3- Importado Chines)\n"); int opcao = int.Parse(Console.ReadLine()); Console.WriteLine(" Entre com os dados do Produto \n"); Console.WriteLine(" Entre com o preço do produto :"); decimal preco = decimal.Parse(Console.ReadLine(), CultureInfo.InvariantCulture); // p.SetPreco(Double.Parse(Console.ReadLine(), CultureInfo.InvariantCulture)); Console.WriteLine(" Entre com a quantidade do estoque do produto :"); int qtdEstoque = int.Parse(Console.ReadLine()); //p.SetQtdEmEstoque(int.Parse(Console.ReadLine())); if (opcao == 1) { Console.WriteLine(" Entre com o valor da taxa de imposto(%) do produto nacional :"); decimal impostoNacional = decimal.Parse(Console.ReadLine()); //string.Format("{0:00.00}", impostoNacional); produto = new ProdutoNacional(preco, qtdEstoque, impostoNacional); } else { if (opcao == 2) { Console.WriteLine(" Entre com o valor da taxa de imposto(%) do produto importado :"); decimal impostoImportado = decimal.Parse(Console.ReadLine()); // String.Format("{0:00.00}", impostoImportado); produto = new ProdutoImportado(preco, qtdEstoque, impostoImportado); } else { Console.WriteLine(" Entre com o valor da taxa de imposto(%) do produto importado Chines :"); decimal impostoImportadoChines = decimal.Parse(Console.ReadLine()); // String.Format("{0:00.00}", impostoImportado); produto = new ProdutoImportadoChines(preco, qtdEstoque, impostoImportadoChines); } } Console.WriteLine(" Entre com o nome do produto :"); produto.Nome = Console.ReadLine(); if (pos < produtos.Length) { produtos[pos] = produto; } else { throw new IndexOutOfRangeException(" Operação invalida ! Tentativa de adicionar quantidade de produtos superior à capacidade de estoque. \n"); } //MostrarProduto(p); ExibirProduto(produto); //AdicionarProduto(p); // RemoverProduto(p); }