Resolução:
IServico.cs
namespace PraticandoC_05.GestaoDeServicos09
{
internal interface IServico
{
void ExecutarServico();
}
}
Funcionario.cs
namespace PraticandoC_05.GestaoDeServicos09
{
internal class Funcionario
{
public Funcionario(string? nome, string? departamento)
{
Nome = nome;
Departamento = departamento;
}
public string? Nome { get; }
public string? Departamento { get; }
}
}
Consultoria.cs
namespace PraticandoC_05.GestaoDeServicos09
{
internal class Consultoria : IServico
{
public Consultoria(string tarefa, Funcionario consultor)
{
Tarefa = tarefa;
Consultor = consultor;
}
public string Tarefa { get; }
public Funcionario Consultor { get; }
public void ExecutarServico()
{
Console.WriteLine($"Executando serviço de consultoria: {Tarefa}");
Console.WriteLine($"Responsável: {Consultor.Nome} - Departamento: {Consultor.Departamento}\n");
}
}
}
Manutencao.cs
namespace PraticandoC_05.GestaoDeServicos09
{
internal class Manutencao : IServico
{
public string Tarefa { get; }
public Funcionario Tecnico { get; }
public Manutencao(string tarefa, Funcionario tecnico)
{
Tarefa = tarefa;
Tecnico = tecnico;
}
public void ExecutarServico()
{
Console.WriteLine($"Executando serviço de manutenção: {Tarefa}");
Console.WriteLine($"Responsável: {Tecnico.Nome} - Departamento: {Tecnico.Departamento}\n");
}
}
}
Program.cs
using PraticandoC_05.GestaoDeServicos09;
using Func = PraticandoC_05.GestaoDeServicos09.Funcionario;
Func tecnico = new Func("João", "TI");
IServico s1 = new Manutencao("Atualização de servidor", tecnico);
Func consultor = new Func("Marina", "Consultoria");
Consultoria s2 = new Consultoria("Planejamento estratégico", consultor);
s1.ExecutarServico();
s2.ExecutarServico();