- Modificar as classes Artista e Filme do namespace Alura.Filmes para que elas
sejam consistentes uma com a outra, ou seja, sempre que for adicionado um artista
a um filme, terá de ser adicionado também o filme à lista de filmes do artista.
namespace Alura.Filmes;
class Filme
{
private int duracao;
public List<Artista> Elenco { get; set; }
public string Titulo { get; set; }
public int Duracao
{
get => duracao;
set
{
if (value < 0)
{
duracao = 0;
}
else
{
duracao = value;
}
}
}
public Filme(string titulo, int duracao, List<Artista> elenco)
{
if (elenco == null)
{
Elenco = new List<Artista>();
}
else
{
Elenco = elenco;
foreach (var artista in Elenco)
{
artista.AdicionarFilme(this);
}
}
Titulo = titulo;
Duracao = duracao;
}
public void AdicionarElenco(Artista artista)
{
Elenco.Add(artista);
if (!artista.FilmesAtuados.Contains(this))
{
artista.AdicionarFilme(this);
}
Console.WriteLine($"{artista} adicionado/a ao elenco.");
}
public void ExibirElenco()
{
if (Elenco.Count == 0)
{
Console.WriteLine("O Elenco está vazio.");
}
else
{
var ListaOrdenada = Elenco.OrderBy(ator => ator).ToList();
Console.WriteLine("Lista do Elenco:");
foreach (var ator in ListaOrdenada)
{
Console.WriteLine($"-{ator}");
}
}
}
}
namespace Alura.Filmes;
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 AdicionarFilme(Filme filme)
{
FilmesAtuados.Add(filme);
if (!filme.Elenco.Contains(this))
{
filme.AdicionarElenco(this);
}
}
public void MostrarFilmesAtuados()
{
if (this.FilmesAtuados.Count == 0)
{
Console.WriteLine($"Nenhum filme encontrado na base para {this.Nome}");
return;
}
Console.WriteLine($"Filmes de {this.Nome}:");
foreach (var filme in FilmesAtuados)
{
Console.WriteLine($"Filme: {filme.Titulo}");
}
Console.WriteLine($"A quantidade de filmes total é: {QuantidadeDeFilmes}");
}
}