1
resposta

Desafio: C#: dominando Orientação a Objetos 01

Artista:

namespace Alura.Filmes
{
    class Artista
    {
        private List<Filme> _filmesAtuados = new();
        public string Nome { get; set; }
        public int Idade { get; set; }
        public List<Filme> FilmesAtuados => _filmesAtuados;
        public Artista(string nome, int idade)
        {
            this.Nome = nome;
            this.Idade = idade;
        }

        public void AdicionarFilmeAtuado(Filme filme)
        {
            FilmesAtuados.Add(filme);
        }

       public void ExibirInformacoesArtista()
        {
            Console.WriteLine(Nome);
            Console.WriteLine($"Filmes em que atuou: \nFilmes: {string.Join(", ", FilmesAtuados.Select(f => f.Titulo))}");
        }
    }
}

Filme:

namespace Alura.Filmes
{
    class Filme
    {
        private List<Artista> _elenco = new();
        public string Titulo {  get; set; }
        public int AnoLancamento {  get; set; }
        public int Duracao { get; set; }
        public List<Artista> Elenco => _elenco;
        public string ResumoFilme => $"{Titulo} - {AnoLancamento}" +
            $"\nElenco: {string.Join(", ", Elenco.Select(a => a.Nome))}";
    public Filme(string titulo, int anoLancamento, int duracao)
        {
            this.Titulo = titulo;
            this.AnoLancamento = anoLancamento;
            this.Duracao = duracao;
            List<Artista> Elenco = _elenco;
        }
        public Filme()
        {
        }
        public void AdicionarFilmeLista(Filme filme)
        {
            List<Filme> ListaFilmes = new();
            ListaFilmes.Add(filme);
        }
        public void AdicionarArtistaAoFilme(Artista artista)
        { 
            Elenco.Add(artista);
            artista.AdicionarFilmeAtuado(this);
        }
        public void ExibirFilme()
        {
            Console.WriteLine(ResumoFilme);
        }
    }
}

Main:

using Alura.Filmes;

class Program
{
    public static void Main(string[] args)
    {
        Filme filme = new();

        Filme f1 = new ("Cidade de Deus",2002, 130);
        Filme f2 = new ("Tropa de Elite",2007, 115);
        Filme f3 = new ("De Volta para o Futuro",1985, 116);
        Filme f4 = new ("Vingadores Ultimato", 2019, 181);
        Filme f5 = new ("Parasita", 2019, 132);
        Filme f6 = new ("Impuros", 2019, 112);
        
        filme.AdicionarFilmeLista(f1);
        filme.AdicionarFilmeLista(f2);
        filme.AdicionarFilmeLista(f3);
        filme.AdicionarFilmeLista(f4);
        filme.AdicionarFilmeLista(f5);

        Artista a1 = new("Alexandre Rodrigues", 42);
        Artista a2 = new("Leandro Firmino", 47);

        f1.AdicionarArtistaAoFilme(a1);
        f1.AdicionarArtistaAoFilme(a2);
        f6.AdicionarArtistaAoFilme(a2);

        f1.ExibirFilme();
        f2.ExibirFilme();
        f3.ExibirFilme();
        f4.ExibirFilme();
        f5.ExibirFilme();

        Console.WriteLine("Artistas: ");
        a1.ExibirInformacoesArtista();
        a2.ExibirInformacoesArtista();
    }
}
1 resposta

Oi, Paulo! Como vai?

Agradeço por compartilhar.

Gostei da sua modelagem entre Artista e Filme. Muito bom como você garantiu o relacionamento nos dois sentidos ao adicionar o artista ao filme e registrar o filme na lista de atuação.

Siga evoluindo, você está no caminho certo ao aplicar Orientação a Objetos dessa forma.

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