static void UsoDoVar() { // var é usado para o compilador inferir o tipo da variavel que tem a direita na atribuição (tipo implicito de acordo com a atribuição) // nome: inferencia de tipo de variavel var conta = new ContaCorrente(344, 565656); var gerenciador = new GerenciadorBonificacao(); var gerenciadores = new List <GerenciadorBonificacao>(); var idade = 18; var soma = SomarVarios(18, 23, 25, 51, 55); conta.Depositar(3443); }
static void TestarLerArquivosEConverter() { var enderecoArquivo = "../contas.txt"; using (var fluxoDeArquivo = new FileStream(enderecoArquivo, FileMode.Open)) using (var leitor = new StreamReader(fluxoDeArquivo)) { while (!leitor.EndOfStream) { var linha = leitor.ReadLine(); var contaCorrente = ConverterStringparaContaCorrente(linha); Out.PrintLn($"{contaCorrente.Titular.Nome} -> Conta numero: {contaCorrente.Numero}, ag {contaCorrente.Agencia}, Saldo: {contaCorrente.Saldo}"); } } ContaCorrente ConverterStringparaContaCorrente(string linha) { // Dessa forma eu consigo ler arquivos separados por '<space>', mas caso eu tenha dados como nomes que sao separados por espaços, // irei pegar apenas o primeiro nome e descartar o resto... // para resolver isso, existe o padrao de arquivos CSV, que sao separados por ',' // SEPARADO POR '<space>' //string[] campos = linha.Split(' '); // O ARQUIVO .TXT FOI ALTERADO PARA O PADRAO CSV // SEPARADO POR ',' string[] campos = linha.Split(','); var agencia = campos[0]; var numero = campos[1]; var saldo = campos[2].Replace('.', ','); var nomeTitular = campos[3]; var agenciaComoInt = int.Parse(agencia); var numeroComoInt = int.Parse(numero); var saldoComoDouble = double.Parse(saldo); var titular = new Cliente { Nome = nomeTitular }; var resultado = new ContaCorrente(agenciaComoInt, numeroComoInt); resultado.Depositar(saldoComoDouble); resultado.Titular = titular; return(resultado); } }
static void TestandoVar() { /*A variavel "var" é uma variavel do tipo generico ou seja ela se adequa de acordo com o tipo da instancia que é iniciada. * O que estou informando ao compilador é que a no local do "var" eu quero que seja do tipo Ex: * ContaCorrente, GerenciadorBonificaçãoe e etc. * Ela funciona como se fosse o <T> das classes genericas. * * Variaveis do tipo "var"devem ser inicialidas para o compilador ja definir o tipo. Depois de inicializada, ela não pode mais ser atribuida. * Como por exemplo mais abaixo o "var idade" e o "var nome" */ var conta = new ContaCorrente(1245, 598745); var gerenciador = new GerenciadorBonificacao(); var gerenciadores = new List <GerenciadorBonificacao>(); var idade = 25; var nome = "Anderson"; conta.Depositar(50); }
static ContaCorrente ConverterStringParaContaCorrente(string linha) { var campos = linha.Split(',');//Quebra uma string pelo caractere passado como parâmetor, neste caso estamos quebrando nossa string pelo espaço //Como split nos retorna um vetor de strings, iremos armazenar estes dados dentro de variaveis var agencia = int.Parse(campos[0]); var numero = int.Parse(campos[1]); var saldo = double.Parse(campos[2]); //var titular = campos[3]; //Acima estamos transformando nossas strings em inteiros, saldo em double var resultado = new ContaCorrente(agencia, numero); resultado.Depositar(saldo); resultado.Titular = ConverteStringParaCliente(linha); return(resultado); }
static ContaCorrente ConvertTextToAcc(string line) { var fields = line.Split(' '); var agencia = int.Parse(fields[0]); var numero = int.Parse(fields[1]); var saldo = double.Parse(fields[2].Replace('.', ',')); var name = fields[3]; var titular = new Cliente(); titular.Nome = name; var result = new ContaCorrente(agencia, numero); result.Depositar(saldo); result.Titular = titular; return(result); }
public void Transferir(double valor, ContaCorrente contaDestino) { if (valor < 0) { throw new ArgumentException("Valor inválido para a transferência.", nameof(valor)); } try { Sacar(valor); } catch (ArgumentException ex) { ContadorTransferenciasNaoPermitidas++; throw new ArgumentException("Operação não realizada.", ex); } contaDestino.Depositar(valor); }
static ContaCorrente ConverterStringParaContaCorrente(string linha) { string[] campos = linha.Split(','); var agencia = campos[0]; var numero = campos[1]; var saldo = campos[2].Replace('.', ','); var nomeTitular = campos[3]; var agenciaComInt = int.Parse(agencia); var numeroComInt = int.Parse(numero); var saldoComDouble = double.Parse(saldo); var titular = new Cliente(); titular.Nome = nomeTitular; var resultado = new ContaCorrente(agenciaComInt, numeroComInt); resultado.Depositar(saldoComDouble); resultado.Titular = titular; return(resultado); }
static void DatasNuGet() { ContaCorrente minhaConta = new ContaCorrente(123, 1234567); minhaConta.Titular = new Cliente(); minhaConta.Titular.Nome = "Lais"; Console.WriteLine("Olá, " + minhaConta.Titular.Nome); Console.WriteLine("Número da agência: " + minhaConta.Agencia); Console.WriteLine("Número da conta: " + minhaConta.Numero); Console.WriteLine("Seu saldo é: " + minhaConta.Saldo); minhaConta.Depositar(200); Console.WriteLine("Seu novo saldo é de: " + minhaConta.Saldo); // Dia 17 de Agosto de 2018 DateTime dataFimPagamento = new DateTime(2018, 8, 17); // Data corrente no momento de execução do código ou DateTime.Today para criar sem horário DateTime dataCorrente = DateTime.Now; TimeSpan diferenca = dataFimPagamento - dataCorrente; string mensagem = "Vencimento em " + TimeSpanHumanizeExtensions.Humanize(diferenca); Console.WriteLine(mensagem); }
static ContaCorrente ConvertStringCC(string linha) { var campos = linha.Split(','); var agencia = campos[0]; var numero = campos[1]; var saldo = campos[2].Replace('.', ','); var nomeTitular = campos[3]; var intAg = int.Parse(agencia); var intCC = int.Parse(numero); var dbSaldo = double.Parse(saldo); var titular = new Cliente(); titular.Nome = nomeTitular; var resultado = new ContaCorrente(intAg, intCC); resultado.Titular = titular; resultado.Depositar(dbSaldo); return(resultado); }
static void Main(string[] args) { // Usando a classe List, em vez da classe Lista implementada List <int> inteiros = new List <int>(); inteiros.Add(1); inteiros.Add(2); inteiros.Add(3); inteiros.Remove(3); Console.WriteLine(inteiros.Count); inteiros.AddRange(new int[] { 4, 5, 6 }); // Criando uma extensão para List ListExtensoes.AdicionarVarios(inteiros, 1, 5687, 1987, 1567, 987); // Utilizando a extensão com a classe List estendida inteiros.AdicionarVarios(67, 45, 90); Console.WriteLine("Printando lista de inteiros: "); inteiros.PrintaList(); // Testando método de extensão (de string, veja na classe) com argumento genérico string nome = "karina"; nome.TesteGenerico <int>(); nome.TesteGenerico <string>(); int[] a = new int[] { 0, 1, 2 }; int[] b = new int[] { 3, 4, 5 }; Console.WriteLine("Printando arrays concatenadas: "); int[] resultado = a.Concatenar(b); resultado.PrintaArray(); // Usando o tipo "var", o compilador entende que queremos armazenar o // nome do tipo que temos na expressão de atribuição, isto se chama // "Inferência de Tipo de Variável" var conta = new ContaCorrente(344, 56456556); var contas = new List <ContaCorrente>(); conta.Depositar(3443); //var idade; // Erro: "Variáveis de tipo implícito devem ser inicializadas" object outraConta = new ContaCorrente(344, 56456556); // Abaixo, não é permitido pois em object caberia uma referência a // qualquer classe, que não necessariamente teria o método Depositar //outraConta.Depositar(3443); var numeros = SomarVarios(1, 2, 3); Console.WriteLine("Somar vários: " + numeros); // Ordenação inteiros.Sort(); Console.WriteLine("Printando lista ordenada de inteiros: "); inteiros.PrintaList(); var nomes = new List <string>() { "Wellington", "Joana", "Bruna", "Ana" }; nomes.Sort(); Console.WriteLine("Printando lista ordenada de nomes: "); nomes.PrintaList(); var novasContas = new List <ContaCorrente>() { new ContaCorrente(341, 57480), new ContaCorrente(342, 45678), new ContaCorrente(340, 48950), new ContaCorrente(290, 18950) }; // Chama a implementação dada em IComparable: //novasContas.Sort(); // Lançaria uma InvalidOperationException // se não tivéssemos implementado a interface IComparable // Utilizando o comparador: //contas.Sort(new ComparadorContaCorrentePorAgencia()); //novasContas.PrintaList(); // Utilizando expressões lambda: IOrderedEnumerable <ContaCorrente> contasOrdenadas = novasContas.OrderBy(conta => conta.Numero); foreach (var item in contasOrdenadas) { Console.WriteLine($"Conta número {item.Numero}, ag. {item.Agencia}"); } // Para se precaver contra objetos nulos, é possível expandir a expressão: //IOrderedEnumerable<ContaCorrente> contasOrdenadas = // novasContas.OrderBy(conta => { // if (conta == null) // { // return int.MaxValue; // Deixa no final, MinValue deixaria no começo // } // return conta.Numero; // }); // Exemplo com tipo sem propriedades var meses = new List <string>() { "janeiro", "fevereiro", "março", "abril", "maio", "junho", "julho", "agosto", "setembro", "outubro", "novembro", "dezembro" }; meses.OrderBy(mes => mes); // Where (retorna um IEnumerable<T>): var maisContas = new List <ContaCorrente>() { new ContaCorrente(341, 66480), null, new ContaCorrente(340, 11111), null }; Console.WriteLine("Filtra contas não nulas e ordena por nº de agência: "); var contasNaoNulas = maisContas .Where(conta => conta != null) .OrderBy(conta => conta.Agencia); foreach (var item in contasNaoNulas) { Console.WriteLine($"Conta número {item.Numero}, ag. {item.Agencia}"); } }