コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        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);
        }
コード例 #6
0
        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);
        }
コード例 #7
0
        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);
        }
コード例 #8
0
        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);
        }
コード例 #9
0
        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);
        }
コード例 #10
0
ファイル: Program.cs プロジェクト: kdmoreira/alura-dotnet
        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}");
            }
        }