Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

1
resposta

Minha primeira interação aqui, espero que esteja tudo certo, e nem sei se tenho que enviar sempre .

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

    public Funcionario(string N, string C)
    {
        Nome = N;
        Cargo = C;
    }
        
         
 }
class Freelancer : Funcionario 
{
        public decimal ValorProjeto { get; set; }
    public decimal Salario { get; set; }

    public Freelancer(string N, string C, decimal VP) :base(N, C)
    { 
     ValorProjeto = VP;
    }
}

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


    public Interno(string N,string C, decimal S) :base(N, C) 
    {
        Salario = S;

    }
}

------------------------------------------------------------------------------------------------------------

class main
{ static void Main(string[] args)
    {
        Interno f1 = new Interno("Luciana", "Desenvolvedora", 7000.00m);
        Freelancer f2 = new Freelancer("Carlos", "Designer", 3500.00m);


        Console.WriteLine($"Funcionário Interno: {f1.Nome}, Cargo: {f1.Cargo}, Salário: {f1.Salario}");
        Console.WriteLine($"Funcionário Freelancer: {f2.Nome}, Cargo: {f2.Cargo}, Salário: {f2.Salario}");
    }
   
}
1 resposta

Oi, Lucas! Seja bem-vindo ao fórum!!

Fico feliz que você tenha compartilhado seu código aqui e fique completamente convidado a compartilhar sempre que precisar de ajuda ou simplesmente queira um ponto de vista diferente sobre o código.

Analisando sua implementação com as classes Funcionario, Interno e Freelancer, fica claro que você compreendeu bem o conceito de herança em C#. O uso do construtor com base(N, C) para reaproveitar os parâmetros Nome e Cargo da classe pai está correto, e a separação entre funcionário interno e freelancer faz bastante sentido na prática.

Há apenas um ponto importante a corrigir: na classe Freelancer, você declarou a propriedade Salario do tipo decimal, mas ela nunca recebe um valor. Ao exibir f2.Salario no Console.WriteLine, o resultado será zero, pois somente ValorProjeto é atribuído no construtor. O ideal é substituir f2.Salario por f2.ValorProjeto na linha do Console, que representa o valor real daquele profissional.

Outra dica valiosa para evoluir ainda mais é utilizar a sobrescrita do método ToString() dentro de cada class. Isso torna a exibição dos objetos mais organizada e evita repetição de formatação em múltiplos Console.WriteLine. Veja um exemplo simples:


public override string ToString()
{
    return $"{Nome} - {Cargo}";
}

Com esse método, basta chamar Console.WriteLine(f1) e o próprio objeto saberá como se apresentar.

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

Você já pensou em adicionar um método para calcular o salário líquido, considerando descontos diferentes para o tipo Interno e para o Freelancer?