0
respostas

O código da minha a plicação está correto?

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();
        }
    }
}