1
resposta

[Projeto] Desafio: Hora da prática

namespace Alura.Filmes
{
    public class Filme
    {
        public string Titulo { get; set; }
        public int DuracaoMinutos { get; set; }
        public List<Artista> Elenco { get; private set; }

        public Filme(string titulo, int duracaoMinutos)
        {
            Titulo = titulo;
            DuracaoMinutos = duracaoMinutos;
            Elenco = new List<Artista>();
        }

        public void AdicionarArtista(Artista artista)
        {
            if (!Elenco.Contains(artista))
            {
                Elenco.Add(artista);
            }

            if (!artista.Filmes.Contains(this))
            {
                artista.Filmes.Add(this);
            }
        }

        public void ExibirInfo()
        {
            Console.WriteLine($"Título: {Titulo}");
            Console.WriteLine($"Duração: {DuracaoMinutos} minutos");
            Console.WriteLine("Elenco:");
            foreach (var artista in Elenco)
            {
                Console.WriteLine($"- {artista.Nome}");
            }
            Console.WriteLine("-----------------------------");
        }
    }
}
namespace Alura.Filmes
{
    public class Artista
    {
        public string Nome { get; set; }
        public int Idade { get; set; }
        public List<Filme> Filmes { get; private set; }

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

        public void ExibirInfo()
        {
            Console.WriteLine($"Artista: {Nome}, {Idade} anos");
            Console.WriteLine("Filmes:");
            foreach (var filme in Filmes)
            {
                Console.WriteLine($"- {filme.Titulo}");
            }
            Console.WriteLine("-----------------------------");
        }
    }
}
using Alura.Filmes;

class Program
{
    static void Main()
    {
        Artista dicaprio = new Artista("Leonardo DiCaprio", 51);
        Artista keanu = new Artista("Keanu Reeves", 61);
        Artista crowe = new Artista("Russell Crowe", 61);
        Artista hathaway = new Artista("Anne Hathaway", 43);
        Artista mcconaughey = new Artista("Matthew McConaughey", 56);

        Filme f1 = new Filme("Interestelar", 169);
        Filme f2 = new Filme("O Senhor dos Anéis: A Sociedade do Anel", 178);
        Filme f3 = new Filme("Matrix", 136);
        Filme f4 = new Filme("A Origem", 148);
        Filme f5 = new Filme("Gladiador", 155);

        f1.AdicionarArtista(mcconaughey);
        f1.AdicionarArtista(hathaway);
        f3.AdicionarArtista(keanu);
        f4.AdicionarArtista(dicaprio);
        f5.AdicionarArtista(crowe);

        List<Filme> filmes = new List<Filme> { f1, f2, f3, f4, f5 };

        Console.WriteLine("=== FILMES FAVORITOS ===");
        foreach (var filme in filmes)
        {
            filme.ExibirInfo();
        }

        Console.WriteLine("=== ARTISTAS ===");
        dicaprio.ExibirInfo();
        keanu.ExibirInfo();
        crowe.ExibirInfo();
        hathaway.ExibirInfo();
        mcconaughey.ExibirInfo();
    }
}
1 resposta

Oi, Matheus! Como vai?

Agradeço por compartilhar seu código com a comunidade Alura. O seu projeto ficou bem organizado, com as classes Filme e Artista separadas de forma clara, e um ponto que chama atenção é o cuidado no método AdicionarArtista(), evitando duplicidades e mantendo a relação entre filme e artista nos dois lados.

Isso mostra um uso muito bom de Orientação a Objetos e de encapsulamento com private set.

Uma dica interessante para o futuro é usar o método ToString() pra facilitar a exibição das informações dos objetos.


public override string ToString()
{
    return $"{Titulo} - {DuracaoMinutos} minutos";
}

Esse código faz com que o objeto já retorne um texto formatado quando for exibido no Console.WriteLine(), deixando o código mais limpo e fácil de manter.

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