Estou começando em C# E criei uma classe Programador que herda de Funcionário que herda de pessoa. Fiz uma validação dos campos e pra isso criei uma nova classe LancaExcecaoArguemnto, mas não se se isso foi legal. Estou em dúvida se esse código está correto ou não.
Segue código completo.
using System;
namespace AplicativoTexte.Pessoas
{
public abstract class Pessoa
{
protected LancaExcecaoArgumento lancaExcecao = new LancaExcecaoArgumento();
public string Nome { get; set; }
public string CPF { get; private set; }
public string Cidade { get; private set; }
private static int _totalPessoas;
//----------------------------------------------------------------------
// Construtor.
public Pessoa(string cpf, string cidade)
{
Console.WriteLine("Criando PESSOA.");
if (string.IsNullOrEmpty(cpf))
{
lancaExcecao.LancaExcecao(nameof(cpf));
}
CPF = cpf;
if (string.IsNullOrEmpty(cpf))
{
lancaExcecao.LancaExcecao(nameof(cidade));
}
Cidade = cidade;
_totalPessoas++;
}
//----------------------------------------------------------------------
// Total de pessoas.
public int GetTotalPessoas()
{
return _totalPessoas;
}
}
}
using System;
namespace AplicativoTexte.Pessoas
{
public abstract class Funcionario : Pessoa
{
public int Lotacao { get; protected set; }
public double Salario { get; protected set; }
//----------------------------------------------------------------------
// Construtor
public Funcionario(string cpf, string cidade, int lotacao, double salario) : base(cpf, cidade)
{
Console.WriteLine("Criando FUNCIONÁRIO.");
if (lotacao <= 0)
{
lancaExcecao.LancaExcecao(nameof(lotacao));
}
Lotacao = lotacao;
if (salario <= 0)
{
lancaExcecao.LancaExcecao(nameof(cidade));
}
Salario = salario;
}
}
}
using System;
namespace AplicativoTexte.Pessoas
{
public class Programador : Funcionario
{
public string cargo { get; set; }
//----------------------------------------------------------------------
// Construtor
public Programador(string cpf, string cidade, int lotacao, double salario) : base(cpf, cidade, lotacao, salario)
{
Console.WriteLine("Criando PROGRAMADOR.");
}
}
}
using System;
namespace AplicativoTexte
{
public class LancaExcecaoArgumento
{
public string nomeArgumento { get; set; }
public void LancaExcecao(string nomeArgumento)
{
throw new ArgumentNullException($"O campo { nomeArgumento } não pode ser vazio.", nomeArgumento);
}
}
}
using AplicativoTexte.Pessoas;
using System;
namespace AplicativoTexte
{
class Program
{
static void Main(string[] args)
{
Programador programador = new Programador("555.529.949-49", "Umuarama", 123, 100);
programador.Nome = "Maria";
Console.WriteLine(programador.Salario);
Console.WriteLine(programador);
Programador prog = new Programador("225.365.659-65", "Lovat", 800, 2000);
prog.Nome = "Joana";
Console.WriteLine(prog.Salario);
Console.WriteLine("Total de Pessoas: " + prog.GetTotalPessoas());
Console.ReadLine();
}
}
}