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

[Projeto] Classe Artista

A classe Artista, é bastante parecida com a classe Banda.

Aqui vai minha solução:

Na classe Artista

class Artista
{
    public Artista(string nome, string biografia)
    {
        Nome = nome;
        Biografia = biografia;
    }

    public string Nome { get; }
    public string Biografia { get; }
    private List<Album> Albuns = new List<Album>();

    public void AdicionarAlbum(Album album)
    {
        Albuns.Add(album);
    }

    public void ExibirDiscografia()
    {
        Console.WriteLine($"Discografia do artista {Nome}");
        foreach (Album album in Albuns)
        {
            Console.WriteLine($"Álbum: {album.Nome} ({album.DuracaoTotal})");
        }
    }

}

Na classe Musica

class Musica
{
    public Musica(Artista artista, string nome, Genero genero)
    {
        Artista = artista;
        Nome = nome;
        Genero = genero;
    }

    public Musica(Banda artistabanda, string nome, Genero genero)
    {
        ArtistaBanda = artistabanda;
        Nome = nome;
        Genero = genero;
    }

    public string Nome { get; }
    public Banda? ArtistaBanda { get; }
    public Artista? Artista { get; }
    public int Duracao { get; set; }
    public bool Disponivel { get; set; }
    public string DescricaoResumida => 
        $"A música {Nome} pertence ao(a) artista/banda: {Artista}";
    public Genero Genero { get; }


    public void ExibirFichaTecnica()
    {
        if(Artista != null)
        {
            Console.WriteLine($"Nome: {Nome}");
            Console.WriteLine($"Artista: {Artista.Nome}");
            Console.WriteLine($"Duração: {Duracao}");
            Console.WriteLine($"Gênero: {Genero.Nome}");
        }
        else
        {
            Console.WriteLine($"Nome: {Nome}");
            Console.WriteLine($"Artista: {ArtistaBanda.Nome}");
            Console.WriteLine($"Duração: {Duracao}");
            Console.WriteLine($"Gênero: {Genero.Nome}");

        }
        if (Disponivel)
        {
            Console.WriteLine("A música está disponível em seu plano.");
        }
        else
        {
            Console.WriteLine("Adquira o plano Plus+");
        }
    }

}

No Program.cs

//// Generos 
#region
Genero pop = new Genero("pop");
Genero rock = new Genero("rock");

#endregion

//// Artista 
#region
Artista billieEilish = new Artista("Billie Eilish", "Billie Eilish Pirate Baird O’Connell é uma jovem estrela pop que compõe e canta.");
Album albumBillieEilish = new Album("When We All Fall Asleep Where Do We Go?");

Musica musica1billieEilish = new Musica(billieEilish, "bury a friend", pop)
{
    Duracao = 193,
    Disponivel = true,
    
};

Musica musica2billieEilish = new Musica(billieEilish, "when the party's over", pop)
{
    Duracao = 196,
    Disponivel = false,

};

albumBillieEilish.AdicionarMusica(musica1billieEilish);
albumBillieEilish.AdicionarMusica(musica2billieEilish);
billieEilish.AdicionarAlbum(albumBillieEilish);

musica1billieEilish.ExibirFichaTecnica();
musica2billieEilish.ExibirFichaTecnica();
albumBillieEilish.ExibirMusicasDoAlbum();
billieEilish.ExibirDiscografia();
#endregion

//// Banda 
#region
Banda linkinPark = new Banda("Linkin Park");
Album albumLinkinPark = new Album("Hybrid Theory");

Musica musica1LinkinPark = new Musica(linkinPark, "In The End", rock)
{
    Duracao = 217,
    Disponivel = false,
};

albumLinkinPark.AdicionarMusica(musica1LinkinPark);
linkinPark.AdicionarAlbum(albumLinkinPark);

musica1LinkinPark.ExibirFichaTecnica();
albumLinkinPark.ExibirMusicasDoAlbum();
linkinPark.ExibirDiscografia();
#endregion

Se tiverem alguma sugestão de melhoria, agradeço!

1 resposta
solução!

Oi Lorrayne, tudo bem?

Muito obrigada por compartilhar seu código! Sua implementação das classes Artista e Musica mostra uma estrutura sólida e bem organizada. A clareza, abstração e manipulação de nulos estão excelentes.

Continue praticando e contribuindo para a comunidade de desenvolvedores. Parabéns pelo trabalho!

Um abraço e 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