Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Contrutores com passagem de parâmetros e validação via setter

            ContaCorrente conta = new ContaCorrente(-10, 86712540);
...
        public ContaCorrente(int agencia, int numero)
        {
            Agencia = agencia;
            Numero = numero;
        }

       private int _agencia;
        public int Agencia
        {
            get
            {
                return _agencia;
            }
            set
            {
                if (value <= 0)
                {
                    return;
                }

                _agencia = value;
            }
        }

Quando tento criar a Agencia com -10, o objeto conta é criado com a Agencia com valor 0. Observe que na regra de negócio do setter, eu verifico se o valor é igual ou menor que 0. Acredito que a atribuição não ocorre e o atributo recebe o valor padrão (0).

Como impedir que o objeto seja criado? (Ainda não cheguei na parte de tratamento de erros. Seria nesta parte?)

1 resposta
solução!

Olá Luis!

Temos algumas formas para evitar isso. Uma delas seria lançar uma exceção, mas como essa parte é mais para entender os conceitos, não foi colocada nenhuma solução para esse tipo de caso por ser apenas para explicar como funcionam os construtores.

Uma forma seria declarar seu atributo Agencia e o campo _agencia como uint que é um valor inteiro apenas positivo (isso impedirá que o programa compile se passar o valor negativo no construtor). Mais informações aqui.

Na parte de tratamento de exceções tratará disso também, fora que depois, quanto tiver uma interface gráfica (exemplo uma página web) também terá validações na própria página.

Espero ter ajudado!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software