1
resposta

[Projeto] Resolução

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}");
            }
        }
    }
}
namespace Alura.Filmes
{
    class Filme
{
    public List<Artista> Elenco { get; set; }
    public string Titulo { get; set; }
    public int Duracao { get; set; }

    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 ListarElenco()
    {
        if (Elenco.Count == 0)
        {
            Console.WriteLine("Elenco vazio.");
        }
        else
        {
            Console.WriteLine("Elenco... ");
            foreach (var artista in Elenco)
            {
                Console.WriteLine($"{artista.Nome} | Idade: {artista.Idade}" );
                  
            }
        }
    }
}
}
using Alura.Filmes;

Filme filme = new Filme("Um sonho de liberdade", 142, new List<Artista>() { new Artista("Tim Robbins", 65), new Artista("Morgan Freeman", 86) });
Filme filme2 = new Filme("O poderoso chefão", 175, new List<Artista>() { new Artista("Marlon Brando", 80), new Artista("Al Pacino", 83), new Artista("Talia Shire", 77) });

List<Filme> meusFilmesFavoritos = new List<Filme>();
meusFilmesFavoritos.Add(filme);
meusFilmesFavoritos.Add(filme2);


foreach (Filme f in meusFilmesFavoritos)
{
    Console.WriteLine($"Filme: {f.Titulo}");
    Console.WriteLine($"Duracao: {f.Duracao}");
    f.ListarElenco();
    Console.WriteLine();
}
1 resposta

Olá, Ulysses! Tudo bem?

Excelente resolução!

Você mandou muito bem na estruturação das classes e, principalmente, na lógica de associação bidirecional (onde o Filme conhece o Artista e o Artista conhece o Filme).

Continue aprofundando seus conhecimentos em Orientação a Objetos!

Bons estudos!

Sucesso

Imagem da comunidade