1
resposta

[Projeto] Resolvido - Resolução com o Program.cs

Filme

namespace Alura.Filmes;

public class Filme(string titulo, int duracao)
{
    public string Titulo { get; set; } = titulo;
    public List<Artista> Elenco { get; set; } = new List<Artista>();
    public int Duracao { get; set; } = duracao;

    public void AdicionarArtistaAoElenco(Artista artista)
    {

        if (artista.FilmesAtuados.Contains(this))
        {
            Console.WriteLine($"O artista {artista.Nome} já está no elenco do Filme {this.Titulo}\n");
        }
        else if (!artista.FilmesAtuados.Contains(this))
        {
            Console.WriteLine($"{artista.Nome} adicionado/a ao elenco do Filme {this.Titulo}.\n");
            // Consistência com a classe Artista
            artista.FilmesAtuados.Add(this); // Adicionando filme atuado
            this.Elenco.Add(artista); // Adicionando artista ao elenco (consistencia)
            // Exemplo: duna2.AdicionarArtistaAoElenco(zendaya) - O this seria o duna2, que e o objeto
        } else
        {
            Console.WriteLine("Teste");
        }
    }

    public void ListarElenco()
    {
        if (Elenco.Count == 0)
        {
            Console.WriteLine("Elenco vazio.");
        }
        else
        {
            Console.WriteLine($"Elenco do filme {this.Titulo}");
            foreach (var artista in Elenco)
            {
                Console.WriteLine(artista.Nome);
            }
        }
    }
}

Artista

namespace Alura.Filmes
{

    public class Artista
    {
        public string Nome { get; set; }
        public int Idade { get; set; }
        public List<Filme> FilmesAtuados { get; set; }
        public int QuantidadeDeFilmes => FilmesAtuados.Count;


        public Artista(string nome, int idade)
        {
            Nome = nome;
            Idade = idade;
            FilmesAtuados = new List<Filme>();
        }


        public void AdicionarFilmeAtuado(Filme filme)
        {
            // This - Artista
            if (this.FilmesAtuados.Contains(filme))
            {
                Console.WriteLine($"O artista {this.Nome} já está no elenco do Filme {filme.Titulo}\n");
            }
            else if (!this.FilmesAtuados.Contains(filme))
            {
                // Consistência com a classe Filme
                FilmesAtuados.Add(filme); // Adicionando filme atuado (consistencia)
                filme.Elenco.Add(this); // Adicionando artista ao elenco
            }
            else
            {
                Console.WriteLine("Abobrinha");
            }
        }

        public void MostrarFilmesAtuados()
        {

            if (this.FilmesAtuados.Count == 0)
            {
                Console.WriteLine($"Nenhum filme encontrado na base para {this.Nome}");
                return;
            }

            Console.WriteLine($"O {this.Nome} atuou em {this.QuantidadeDeFilmes} Filmes...");
            foreach (var filme in FilmesAtuados)
            {
                Console.WriteLine($"Filme: {filme.Titulo}");
            }
        }
    }
}

Exemplos de usos

using Alura.Filmes;

// Instanciando artistas
Artista matthew = new("Matthew", 54);
Artista timotthée = new("Timothée", 28);
Artista anne = new("Anne", 41);
Artista zendaya = new("Zendaya", 27);

// Ao adicionar o elenco, dinamicamente o elenco aqui muda também
Filme interestelar = new("Interestelar", 120);
interestelar.AdicionarArtistaAoElenco(matthew);
interestelar.AdicionarArtistaAoElenco(timotthée);
interestelar.AdicionarArtistaAoElenco(timotthée);
interestelar.AdicionarArtistaAoElenco(anne);

Filme duna2 = new("Duna 2", 150);
duna2.AdicionarArtistaAoElenco(timotthée);
duna2.AdicionarArtistaAoElenco(zendaya);

//// Desafio parte 1 Concluida
//interestelar.ListarElenco();
//Console.WriteLine();



// Desafio parte 2
Filme wonka = new("Wonka", 200);
timotthée.AdicionarFilmeAtuado(wonka);


timotthée.MostrarFilmesAtuados();

Tiverem dúvidas podem me procurar no meu ig @iamguiler.

Bons estudos!

1 resposta

Oi Guilherme, como vai você? Espero que esteja bem!

Fico feliz em ver que se empenhou no projeto, é isso aí! Continue se dedicando aos estudos e colocando em prática seus aprendizados.

Caso tenha dúvidas, fico à disposição.

Abraços 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