Funcionario.cs
namespace E09GestaoDeServicos.Models;
internal class Funcionario(string nome, string departamento)
{
public string Nome { get; } = nome;
public string Departamento { get; } = departamento;
}
IServico.cs
namespace E09GestaoDeServicos.Interfaces;
internal interface IServico
{
void ExecutarServico();
}
Servico.cs
namespace E09GestaoDeServicos.Models;
internal abstract class Servico(string tituloDaTarefa, Funcionario responsavel)
{
public string TituloDaTarefa { get; } = tituloDaTarefa;
public Funcionario Responsavel { get; } = responsavel;
}
Manutencao.cs
using System.Text;
using E09GestaoDeServicos.Interfaces;
namespace E09GestaoDeServicos.Models;
internal class Manutencao(string tituloDaTarefa, Funcionario responsavel)
: Servico(tituloDaTarefa, responsavel), IServico
{
public void ExecutarServico()
{
StringBuilder sb = new();
sb.AppendLine($"\nExecutando serviço de manutenção: {TituloDaTarefa}");
sb.AppendLine($"Responsável: {Responsavel.Nome} - Departamento: {Responsavel.Departamento}");
Console.WriteLine(sb.ToString());
}
}
Consultoria.cs
using System.Text;
using E09GestaoDeServicos.Interfaces;
namespace E09GestaoDeServicos.Models;
internal class Consultoria(string tituloDoServico, Funcionario responsavel)
: Servico(tituloDoServico, responsavel), IServico
{
public void ExecutarServico()
{
StringBuilder sb = new();
sb.AppendLine($"Executando serviço de consultoria: {TituloDaTarefa}");
sb.AppendLine($"Responsável: {Responsavel.Nome} - Departamento: {Responsavel.Departamento}");
Console.WriteLine(sb.ToString());
}
}
Program.cs
using E09GestaoDeServicos.Interfaces;
using E09GestaoDeServicos.Models;
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();
-----------Dúvida------------
Sei que o exercício pede o uso de interface aqui, mas como eu criei uma classe base Serviço, onde todos os serviços vão herdar suas propriedades e métodos.. eu poderia ter o método abstrato ExecutarServico() dentro da classe Serviço e sobrescreve-lo nas classes filhas, certo? Ou para esse cenário devemos sempre utilizar interfaces?