Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Erro ao criar a tabela

Meu código está um pouco diferente do apresentado no vídeo, pois achei que funcionaria desta forma.

Possuo duas dúvidas. É apresentado uma exceção ao criar o banco, pois estou utilizando objetos na minha classe agendamento, deixando o código mais claro, seguindo orientação objetos. Minha classe agendamento:

 public class Agendamento
    {
        public Veiculo Veiculo { get; set; }
        public Usuario Usuario { get; set; }

        public TimeSpan HoraAgendamento { get; set; }
        DateTime dataAgendamento = DateTime.Today;
        public DateTime DataAgendamento
        {
            get
            {
                return dataAgendamento;
            }
            set
            {
                dataAgendamento = value;
            }
        }

        public Agendamento(Veiculo veiculo, Usuario usuario)
        {
            this.Veiculo = veiculo;
            this.Usuario = usuario;
        }
    }

Minha primeira dúvida é: Devo realmente criar variável para cada tipo do objeto como apresentado no curso?

Segunda: Num app final, como isso é feito? Pois pela lógica nenhuma classe poderá ter como atributo uma outra classe...

Esses pontos fiquei em dúvida, se puder me ajudar eu agradeço!

2 respostas

Eu resolvi o problema fazendo assim:

public class Agendamento
    {
        //Tópico no forum: https://cursos.alura.com.br/forum/topico-erro-ao-criar-a-tabela-44082
        // public Veiculo Veiculo { get; set; }
        // public Usuario Usuario { get; set; }

        public string Nome { get; set; }
        public string Fone { get; set; }
        public string Email { get; set; }
        public string Modelo { get; set; }
        public decimal Preco { get; set; }

        public TimeSpan HoraAgendamento { get; set; }
        DateTime dataAgendamento = DateTime.Today;
        public DateTime DataAgendamento
        {
            get
            {
                return dataAgendamento;
            }
            set
            {
                dataAgendamento = value;
            }
        }

        public Agendamento(Veiculo veiculo, Usuario usuario)
        {
            this.Nome = usuario.nome;
            this.Fone = usuario.telefone;
            this.Email = usuario.email;
            this.Modelo = veiculo.Nome;
            this.Preco = veiculo.Preco;            
        }
    }

Mas como falei, não entendi como funcionaria num código de uma aplicação final, pois achei que não está sendo aproveitado a orientação a objetos da melhor forma assim...

solução!

Olá, Alexandre

O código do curso não está perfeito, reconheço. Porém, quando espalhamos atributos como Nome, Fone e Email da classe Usuário na classe Agendamento também podemos incorrer num novo problema, que é conhecido como "Primitive Obsession":

http://enterprisecraftsmanship.com/2015/03/07/functional-c-primitive-obsession/

A solução para esse problema é justamente substituir valores de dados por objetos, ou em inglês "Replace Data Value With Object".