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: gestão de serviços

Classe Program:

using GestaoDeServicos;

Funcionario tecnico = new("João", "TI");
IServico s1 = new Manutencao("Atualização de servidor", tecnico);

Funcionario analista = new ("Marina", "Consultoria");
IServico s2 = new Consultoria("Planejamento estratégico", analista);

s1.ExecutarServico();
s2.ExecutarServico();

Interface IServico:

namespace GestaoDeServicos;

internal interface IServico
{
    void ExecutarServico();
}

Classe Funcionario:

namespace GestaoDeServicos;

internal class Funcionario(string nome, string departamento)
{
    public string Nome { get; private set; } = nome;

    public string Departamento { get; private set; } = departamento;
}

Classe Manutencao:

namespace GestaoDeServicos;

internal class Manutencao(string servico, Funcionario funcionario) : IServico
{
    public string Servico { get; private set; } = servico;
    public Funcionario Funcionario { get; private set; } = funcionario;

    public void ExecutarServico()
    {
        Console.WriteLine($"Executando serviço de manutenção: {Servico}");
        Console.WriteLine($"Responsável: {Funcionario.Nome} - Departamento: {Funcionario.Departamento}");
    }
}

Classe Consultoria:

namespace GestaoDeServicos;

internal class Consultoria(string descricao, Funcionario funcionario) : IServico
{
    public string Descricao { get; private set; } = descricao;
    public Funcionario Funcionario { get; private set; } = funcionario;

    public void ExecutarServico()
    {
        Console.WriteLine($"Executando serviço de manutenção: {Descricao}");
        Console.WriteLine($"Responsável: {Funcionario.Nome} - Departamento: {Funcionario.Departamento}");
    }
}
1 resposta
solução!

Oi, Fabiano! Como vai?

Agradeço por compartilhar seu código com a comunidade Alura.

Você aplicou muito bem o conceito de composição ao associar um Funcionario aos serviços de Manutencao e Consultoria, além de utilizar a interface IServico para padronizar a execução dos serviços. Isso demonstra uma boa compreensão da proposta da atividade.

Uma dica interessante para o futuro é utilizar override ToString() para facilitar a exibição de informações de objetos sem precisar montar mensagens manualmente em vários pontos do código. Veja este exemplo:

public override string ToString()
{
    return $"Nome: {Nome} - Departamento: {Departamento}";
}

Neste exemplo, o método retorna uma representacao textual do funcionario, facilitando a reutilizacao dessas informacoes em diferentes partes do sistema.

Alura

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