0
respostas

[Desafio] - AluraFilmes (namespaces)

1. Criar uma classe que representa um filme, com dados como seu titulo, duração e elenco. Após isso, colocá-la no namespace Alura.Filmes. (Substitui o namespace por AluraFilmes.Filmes)

2. Criar um programa Program.cs, instanciar seus 5 filmes favoritos, guardá-los em uma lista e mostrar as suas informações no console.

3. Criar uma classe Artista, que representa uma pessoa que atua em filmes, no namespace Alura.Filmes. A classe deve conter atributos como o nome, idade e uma lista de filmes onde o artista atuou.

4. 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.

OBS.: Não criei as situações onde possa haver atores sem estarem em filmes, entre outras situações de validação por exemplo, só por uma questão de me ater somente ao que foi pedido mesmo e para não levar mais tempo do que o necessário para dar continuidade ao curso.

Classe Filme

namespace AluraFilmes.Filmes;
class Filme
{
    public string Titulo { get; set; }
    public int Duracao { get; set; }
    public List<Artista> Elenco = new();

    public Filme (string titulo, int duracao)
    {
        Titulo = titulo;
        Duracao = duracao;
    }

    public void RegistrarElenco(Artista nome)
    {
        Elenco.Add(nome);
        nome.AdiconarFilmeDoArtista(this);
        
    }

    public void MostrarInformacoesDoFilme()
    {
        Console.WriteLine($"Filme: {Titulo} / Duração: {Duracao} minutos");
        Console.WriteLine("Elenco:");
        if (Elenco.Count == 0)
        {
            Console.WriteLine(" - Não foram encontrados artistas no Elenco. -");
        }
        else
        {
            foreach (var e in Elenco)
            {
                Console.WriteLine($" - {e.Nome}");
            }
            Console.WriteLine();
        }
    }

}

Classe Artista

namespace AluraFilmes.Filmes;
using System.Security;

class Artista
{
    public string Nome { get; set; }
    public int Idade { get; set; }
    public List<Filme> filmesDoArtista = new();

    public Artista (String nome, int idade)
    {
        Nome = nome;
        Idade = idade;
    }

    public void AdiconarFilmeDoArtista(Filme titulo)
    {
        filmesDoArtista.Add(titulo);
    }

    public void MostrarInformacoesDoArtista()
    {
        Console.WriteLine($"Artista: {Nome}");
        Console.WriteLine("Filmes que participou:");
        foreach (var f in filmesDoArtista)
        {
            Console.WriteLine($" - {f.Titulo}");
        }
        Console.WriteLine();
    }
}

Program.cs

using AluraFilmes.Filmes;

Console.Clear();

List<Filme> filmes = new();
List<Artista> artistas = new();

Filme filme1 = new("Harry Potter", 120);
Filme filme2 = new("Avatar - Caminho da Água", 180);
Filme filme3 = new("Vingadores - Ultimato", 140);
Filme filme4 = new("O Senhor dos Anéis - O Retorno do Rei", 200);
Filme filme5 = new("Um tira da pesada 4", 124);

filmes.Add(filme1);
filmes.Add(filme2);
filmes.Add(filme3);
filmes.Add(filme4);
filmes.Add(filme5);

Artista artista1 = new("Daniel Radcliffe", 35);
Artista artista2 = new("Sam Worthington", 48);
Artista artista3 = new("Robert Downey Jr", 60);
Artista artista4 = new("Elijah Wood", 44);
Artista artista5 = new("Eddie Murphy", 64);

artistas.Add(artista1);
artistas.Add(artista2);
artistas.Add(artista3);
artistas.Add(artista4);
artistas.Add(artista5);

filme1.RegistrarElenco(artista1);
filme2.RegistrarElenco(artista2);
filme3.RegistrarElenco(artista3);
filme4.RegistrarElenco(artista4);
filme5.RegistrarElenco(artista5);


Console.WriteLine("__INFORMAÇÕES DOS FILMES__\n");
foreach (var f in filmes)
{
    f.MostrarInformacoesDoFilme();
}

Console.WriteLine("Pressione qualquer tecla para ver as INFORMAÇÕES DOS ARTISTAS...");
Console.ReadKey();
Console.Clear();
Console.WriteLine("Carregando informações...");
Thread.Sleep(2000);
Console.Clear();

Console.WriteLine("__INFORMAÇÕES DOS ARTISTAS__\n");
foreach (var a in artistas)
{
    a.MostrarInformacoesDoArtista();
}

Console.ReadKey();