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!