Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

Solucionado
(ver solução)
1
resposta

[Projeto] Faça como eu fiz: plataforma de cursos

Classe Program:

using PlataformaDeCursos;

Instrutor instrutor1 = new("Carla", "Back-end");
ICurso curso1 = new CursoProgramacao("C# com POO", instrutor1);

Instrutor instrutor2 = new("Felipe", "UI/UX");
ICurso curso2 = new CursoDesign("Design de Interfaces", instrutor2);

curso1.ValidarConteudo();
curso1.PublicarCurso();

curso2.ValidarConteudo();
curso2.PublicarCurso();

Interface ICurso:

namespace PlataformaDeCursos;

internal interface ICurso
{
    void ValidarConteudo();
    void PublicarCurso();
}

Classe Instrutor:

namespace PlataformaDeCursos;

internal class Instrutor(string nome, string especialidade)
{
    public string Nome { get; private set; } = nome;
    public string Especialidade { get; private set; } = especialidade;
}

Classe CursoProgramacao:

namespace PlataformaDeCursos;

internal class CursoProgramacao(string nome, Instrutor instrutor) : ICurso
{
    public string Nome { get; private set; } = nome;
    public Instrutor Instrutor { get; private set; } = instrutor;

    public void ValidarConteudo()
    {
        Console.WriteLine($"Validando conteúdo do curso de programação: {Nome}");
    }

    public void PublicarCurso()
    {
        Console.WriteLine($"Curso publicado com sucesso: {Nome} - Instrutora: {Instrutor.Nome} ({Instrutor.Especialidade})");
    }
}

Classe CursoDesign:

namespace PlataformaDeCursos;

internal class CursoDesign(string nome, Instrutor instrutor) : ICurso
{
    public string Nome { get; private set; } = nome;
    public Instrutor Instrutor { get; private set; } = instrutor;

    public void ValidarConteudo()
    {
        Console.WriteLine($"Validando conteúdo do curso de design: {Nome}");
    }

    public void PublicarCurso()
    {
        Console.WriteLine($"Curso publicado com sucesso: {Nome} - Instrutora: {Instrutor.Nome} ({Instrutor.Especialidade})");
    }
}
1 resposta
solução!

Oi, Fabiano! Como vai?

Seu projeto ficou bem organizado para praticar interfaces, composição e separação de responsabilidades em C#. A interface ICurso define os comportamentos esperados, enquanto CursoProgramacao e CursoDesign implementam suas próprias versões de ValidarConteudo() e PublicarCurso(). Também ficou bom o uso da classe Instrutor, pois ela compõe o curso sem precisar usar herança para tudo.

Dica: revise apenas o texto exibido no método PublicarCurso(), pois no curso de design o instrutor se chama Felipe, mas a mensagem usa “Instrutora”. Você pode deixar mais genérico assim:

Console.WriteLine($"Curso publicado com sucesso: {Nome} - Instrutor(a): {Instrutor.Nome} ({Instrutor.Especialidade})");

Esse ajuste mantém a mensagem adequada para diferentes pessoas instrutoras. Qual parte desse exercício você achou mais interessante: criar a interface ICurso ou compor o curso com a classe Instrutor?

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