1
resposta

[Dúvida] Desafio da Conta e Titular

O desafio tem duas partes:

1 - Modelar uma classe Conta, que tenha como atributos uma classe Titular, além de informações da conta, como agência, número da conta, saldo e limite, bem como um método que devolva as informações da conta de forma detalhada. 2 - Instanciar um objeto do tipo Conta e um do tipo Titular e mostrar as informações de Titular, a partir da Conta.

Quando eu tentei rodar o que eu tinha construído, o Visual Studio deu alerta de erro. Mesmo olhando a resposta do instrutor, eu ainda não sei o que está errado com meu código (e não entendi como ele chegou na resposta da segunda parte).

Eu separei cada classe em um documento próprio:

class Titular
{
    public string Nome { get; set; }
    public int CPF { get; set; }
    public string Endereco { get; set; }

    public Titular(string nome, int cpf, string endereco)
    {
        Nome = nome;
        CPF = cpf;
        Endereco = endereco;
    }
}
class ContaBancaria
{
    public int NumeroIndicador { get; set; }
    public int Agencia { get; set; }
    public Titular Titular { get; set; }
    public double Saldo { get; set; }
    public double Limite { get; set; }

    public string Informacoes =>
        $"Conta nº {this.NumeroIndicador} \nAgência: {this.Agencia} \nTitular: {this.Titular.Nome} \nSaldo: {this.Saldo}";
}
Titular titular1 = new Titular();
titular1.Nome = "João da Silva";
titular1.CPF = 1234567898;
titular1.Endereco = "Rua dos Bobos, n.0";


ContaBancaria conta1 = new ContaBancaria();
conta1.NumeroIndicador = 1;
conta1.Agencia = 1;
conta1.Titular = titular1;
conta1.Saldo = 2565.37;
conta1.Limite = 5000;
conta1.Senha = "123";

Console.WriteLine(conta1.Informacoes);

A resposta do instrutor: Parte 1:

class Titular
{
    public string Nome {get; set;}
    public string Cpf {get; set;}
    public string Endereco {get; set;}
}

class Conta
{
    public Titular Titular {get; set;}
    public int Agencia {get; set;}
    public int NumeroDaConta {get; set;}
    public double Saldo {get; set;}
    public double Limite {get; set;}

    public string Informacoes => $"Conta nº {this.NumeroDaConta}, Agência {this.Agencia}, Titular: {this.Titular.Nome} - Saldo: {this.Saldo}";
}

Resposta da parte 2:

Titular t = new();
Conta c = new();

t.Nome = "George Harrison";
t.Cpf = "000.000.000-00";
t.Endereco = "Rua dos Besouros - Liverpool";

c.Titular = t;
c.Agencia = 1;
c.NumeroDaConta = 2234;
c.Saldo = 10000000.0;
c.Limite = 100000.0;

Console.WriteLine("Informações do Titular: ");
Console.WriteLine($"Nome: {c.Titular.Nome}");
Console.WriteLine($"CPF: {c.Titular.Cpf}");
Console.WriteLine($"Endereco: {c.Titular.Endereco}");

Eu estou muito perdido, agradeço se alguém me der uma ajuda!

1 resposta

Oi, Allan! Como vai?

Vamos resolver isso. Seu código tem alguns pontos que precisam de ajustes:

  1. O CPF está como int, mas o ideal é string, pois pode conter zeros à esquerda e formatação.
  2. A classe Titular não tem um construtor vazio, mas você tenta instanciá-la sem parâmetros.
  3. Senha não foi declarada na classe ContaBancaria, então o erro ocorre ao atribuí-la.

Veja como ajustar:

class Titular
{
    public string Nome { get; set; }
    public string CPF { get; set; }
    public string Endereco { get; set; }

    public Titular() {} // Construtor vazio

    public Titular(string nome, string cpf, string endereco)
    {
        Nome = nome;
        CPF = cpf;
        Endereco = endereco;
    }
}

class ContaBancaria
{
    public int NumeroIndicador { get; set; }
    public int Agencia { get; set; }
    public Titular Titular { get; set; }
    public double Saldo { get; set; }
    public double Limite { get; set; }

    public string Informacoes => 
        $"Conta nº {NumeroIndicador} \nAgência: {Agencia} \nTitular: {Titular.Nome} \nSaldo: {Saldo}";
}

// Criando o titular
Titular titular1 = new Titular();
titular1.Nome = "João da Silva";
titular1.CPF = "123.456.789-00";
titular1.Endereco = "Rua dos Bobos, n.0";

// Criando a conta
ContaBancaria conta1 = new ContaBancaria();
conta1.NumeroIndicador = 1;
conta1.Agencia = 1;
conta1.Titular = titular1;
conta1.Saldo = 2565.37;
conta1.Limite = 5000;

Console.WriteLine(conta1.Informacoes);

O que mudou?

  • CPF agora é string para aceitar formatação.
  • Construtor vazio adicionado na classe Titular, permitindo a criação do objeto sem parâmetros.
  • Removida a Senha, pois ela não existe na classe ContaBancaria.

Agora seu código deve rodar sem erros!

Espero ter ajudado. Conte com o apoio do Fórum na sua jornada. Fico à disposição.

Abraços e bons estudos!

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!