Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Resposta : plataforma de cursos

Interface:

interface ICurso
{
    public void ValidarConteudo();

    public void PublicarCurso();


}

Classe 1:

class Instrutor
{
    public Instrutor(string nome, string especialidade)
    {
        Nome = nome;
        Especialidade = especialidade;
    }

    public string Nome { get; }

    public string Especialidade { get; }


}

Classe 2:

class CursoProgramacao : ICurso
{
    public CursoProgramacao(string titulo, Instrutor instrutor)
    {
        Titulo = titulo;
        Instrutor = instrutor;
    }

    public Instrutor Instrutor { get; }
    public string Titulo { get; }

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

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

Classe 3:

class CursoDesign : ICurso
{
    public CursoDesign(string titulo, Instrutor instrutor)
    {
        Titulo = titulo;
        Instrutor = instrutor;
        
    }

    public Instrutor Instrutor { get; }
    public string Titulo { get; }
    public void ValidarConteudo() => Console.WriteLine($"Validando conteúdo do curso de disign: {Titulo}");
    

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

}
1 resposta
solução!

Oii, Philip.

Que ótimo ver sua dedicação em resolver o desafio. Praticar a implementação de contratos (Interfaces) e entender como objetos se relacionam (Composição) é fundamental para avançar na Orientação a Objetos.

Peguei alguns pontos de destaque:

  • Uso de Expression-bodied members (=>):
    Você utilizou a sintaxe de arrow function (=>) nos métodos ValidarConteudo e PublicarCurso. Isso deixou seu código muito mais limpo e legível do que abrir e fechar chaves { } para métodos de uma linha só. Excelente escolha!
  • Propriedades Read-only:
    Ao declarar public Instrutor Instrutor { get; }, você garantiu que, uma vez criado o curso, o instrutor não pode ser alterado externamente (já que não tem o set). Isso protege a integridade do dado melhor do que apenas variáveis soltas.
  • Implementação da interface:
    O contrato ICurso foi respeitado perfeitamente nas duas classes, garantindo o polimorfismo.
Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!