1
resposta

[Dúvida] Criei o código de Funcionarios e Freelancers

Olá a todos, boa tarde.

Criei o código de Funcionarios e Freelancers, gostaria de tirar uma duvida.

Por exemplo vi muitas pessoas incluindo o Console.WriteLine, solto no program.cs, nos decorrer dos cursos vi que os professores utilizam métodos.

Então nessa atividade eu criei dois métodos para cada classe (FuncionarioInterno e FuncionarioFreelancer.

Gostaria de tirar uma duvida, sobre meu código se ele faz sentido ? ao meu ver eu achei interessante por que ao criar dois métodos um para cada classe eu vi que a manutenção do código fica mais tranquilo para mim, por exemplo eu mudei a estrutura de como aparece as informações na classe FuncionarioInterno sem mexer na classe Funcionario Freelancer, isso faz sentido ? ou era melhor eu seguir igual a maioria do pessoal esta fazendo direto no program.cs ?

Segue meu codigo:

Funcionario.cs (Classe pai):

public class Funcionario
{
    public string Nome { get; set; }
    public string Cargo { get; set; }

    public Funcionario (string _nome, string _cargo)
    {
        Nome = _nome;
        Cargo = _cargo;
    }
}

FuncionarioInterno.cs:

public class Interno : Funcionario
{
    public decimal Salario { get; set; }

    public Interno(string _nome, string _cargo, decimal _salario) : base(_nome, _cargo)
    {
        Salario = _salario;
    }

    public void InformacoesInterno()
    {
        Console.WriteLine($"==== Funcionario ====");
        Console.WriteLine($"Funcionário: {Nome}");
        Console.WriteLine($"Cargo: {Cargo}");
        Console.WriteLine($"Salário: {Salario}\n");
    }
}

FuncionarioFreelancer.cs:

public class Freelancer : Funcionario
{
    public decimal ValorProjeto { get; set; }

    public Freelancer(string _nome, string _cargo, decimal _valorProjeto ) : base(_nome, _cargo)
    {
        ValorProjeto = _valorProjeto;
    }

    public void InformacoesFreelancer()
    {
        Console.WriteLine($"Freelancer {Nome} - Cargo: {Cargo} - Salário: {ValorProjeto}");
    }
}

Program.cs :

Interno colaboradorInterno = new Interno("Lucas", "Desenvolvedor Senior", 20000m);
Freelancer colaboradorFreelancer = new Freelancer("Jonathan", "Desenvolvedor Junior", 7000m);

colaboradorInterno.InformacoesInterno();
colaboradorFreelancer.InformacoesFreelancer();

Obrigado.

1 resposta

Oi, Lucas! Como vai?

Sua decisão de criar métodos específicos em cada classe faz sentido e está alinhada com a ideia de responsabilidade única. Você conseguiu separar bem o comportamento de Interno e Freelancer, facilitando a manutenção e evitando alterações desnecessárias em outras partes do código, em vez de concentrar tudo no Program.cs.

Uma dica interessante para o futuro é usar polimorfismo com um método virtual na classe base e sobrescrevê-lo nas classes filhas, mantendo a chamada padronizada:


public virtual void ExibirInformacoes()
{
    Console.WriteLine($"Funcionario: {Nome} - Cargo: {Cargo}");
}

Esse código define um método que pode ser sobrescrito, permitindo que cada classe implemente sua própria forma de exibir dados sem mudar o ponto de chamada.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!