Profissao.cs
namespace E04CertificadoDeProfissoes.Models;
internal abstract class Profissao
{
private readonly string _titulo;
private readonly int _tituloMinLenght;
public Profissao(string titulo)
{
ValidarTitulo(titulo);
_titulo = titulo;
}
public string Titulo => _titulo;
private void ValidarTitulo(string titulo)
{
if (string.IsNullOrWhiteSpace(titulo))
throw new ArgumentException("O título não pode ser vazio");
if (titulo.Length < _tituloMinLenght)
throw new ArgumentException($"O título deve ter no mínimo {_tituloMinLenght} caracteres");
}
}
Docente.cs
namespace E04CertificadoDeProfissoes.Models;
internal class Docente(string titulo) : Profissao(titulo) {}
Analista.cs
namespace E04CertificadoDeProfissoes.Models;
internal class Analista(string titulo) : Profissao(titulo) {}
Certificado.cs
namespace E04CertificadoDeProfissoes.Models;
internal class Certificado
{
public Certificado(Profissao profissao)
{
GerarCertificado(profissao);
}
private static void GerarCertificado(Profissao profissao)
=> Console.WriteLine($"Certificado emitido para: {profissao.Titulo}");
}
Program.cs
using E04CertificadoDeProfissoes.Models;
Analista analista = new("Analista de Sistemas");
Docente docente = new("Docente de Matemática");
Certificado cerf1 = new(analista);
Certificado certf2 = new(docente);