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

[Dúvida] Desafio Genero

Eu criei a classe genero, porem quando vou executar no programa, aparece Genero: genero, não o "ROCK"

Genero:

class Genero
{
    public string Nome { get; set; }
}

Album:

class Album
{
    private List<Musica> musicas = new List<Musica>();
    public string Nome { get; set; }
    public int DuraçãoTotal => musicas.Sum(m => m.Duracao);
    public Genero genero { get; set; }

    public void AdicionarMusica(Musica musica)
    {
        musicas.Add(musica);
    }

    public void ExibirMusicasDoAlbum()
    {
        Console.WriteLine($"Lista de musicas do álbum {Nome}:\n");
        foreach (var musica in musicas)
        {
            Console.WriteLine($"Musica: {musica.Nome}");
        }
        Console.WriteLine($"Para ouvir esse album inteiro você precisa de {DuraçãoTotal} segundos");
    }

    public void ExibirFichaTecnicaAlbum()
    {
        Console.WriteLine($"Nome: {Nome}");
        Console.WriteLine($"Duração do Album: {DuraçãoTotal}");
        Console.WriteLine($"Genero do Album: {genero}");
    }
}

Musica:

class Musica
{
public string Nome { get; set; }
public string Artista { get; set; }
public int Duracao { get; set; } 
public bool Disponivel { get; set; }
public Genero genero { get; set; }

public string DescricaoResumida => 
    $"A música {Nome} pertence a banda {Artista}";

public void ExibirFichaTecnica()
{
    Console.WriteLine($"Nome: {Nome}");
    Console.WriteLine($"Artista: {Artista}");
    Console.WriteLine($"Duração: {Duracao}");
    Console.WriteLine($"Genero: {genero}");
    if (Disponivel)
    {
        Console.WriteLine("Disponivel no plano");
    }
    else
    {
        Console.WriteLine("Adiquira o plano Plus+");
    }
}
public void ExibirNomeArtista()
{
    Console.WriteLine($"Nome: {Nome} - Artista: {Artista}");
}
}
    

Program:

Musica musica1 = new Musica();
musica1.Nome = "Duality";
musica1.Artista = "Slipknot";
musica1.Duracao = 205;
musica1.Disponivel = true;
musica1.genero = new Genero { Nome = "Rock" };

Console.WriteLine(musica1.DescricaoResumida);

Musica musica2 = new Musica();
musica2.Nome = "Toxicity";
musica2.Artista = "System of a Down";
musica2.Duracao = 225;
musica2.Disponivel = false;
Console.WriteLine(musica2.DescricaoResumida);

// Console.WriteLine($"Nome da música: {musica1.nome}");
// Console.WriteLine($"Nome do artista: {musica1.artista}");

musica1.ExibirFichaTecnica();
musica2.ExibirFichaTecnica();
musica1.ExibirNomeArtista();

Console.WriteLine("\n----------------------\n");

Album AlbumDoSlipknot = new Album();
AlbumDoSlipknot.Nome = "9.0";
AlbumDoSlipknot.genero = new Genero { Nome = "Rock" };

Musica musica3 = new Musica();
musica3.Nome = "Before i Forget";
musica3.Duracao = 265;
Album album = new Album();
album.genero = new Genero { Nome = "Rock" };

Musica musica4 = new Musica();
musica4.Nome = "Everething Ends";
musica4.Duracao = 304;

AlbumDoSlipknot.AdicionarMusica(musica3);
AlbumDoSlipknot.AdicionarMusica(musica4);

AlbumDoSlipknot.ExibirMusicasDoAlbum();
AlbumDoSlipknot.ExibirFichaTecnicaAlbum();
1 resposta
solução!

Olá Vinicius, tudo bem com você?

Mandou bem no gosto musical hehehe Quanto a não impressão do gênero, você precisa sobrescrever o método ToString() na classe Genero para retornar a propriedade Nome. Exemplo:

class Genero
{
    public string Nome { get; set; }

    public override string ToString()
    {
        return Nome;
    }
}

Agora, quando você tentar imprimir um objeto Genero no console, o C# vai usar o método ToString() que você acabou de definir, e vai exibir o valor da propriedade Nome.

Resultado:

Lista de musicas do álbum 9.0:

Musica: Before i Forget
Musica: Everething Ends
Para ouvir esse album inteiro você precisa de 569 segundos
Nome: 9.0
Duração do Album: 569
Genero do Album: Rock

Espero ter ajudado. Continue mergulhando em conhecimento e não hesite em voltar ao fórum para continuar aprendendo e interagindo com a comunidade.

Em caso de dúvidas estou à disposição.

Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

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