Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Faça como eu fiz: cadastro de funcionários

Funcionario.cs

namespace Empresa.Modelos;
internal class Funcionario {
    public string? Nome {get;}
    public string? Cargo {get;}

    public Funcionario(string? nome, string? cargo) {
        Nome = nome;
        Cargo = cargo;
    }
}

Freelancer.cs

namespace Empresa.Modelos;
internal class Freelancer : Funcionario {
    public decimal ValorProjeto {get;}

    public Freelancer(string? nome, string? cargo, decimal valorProjeto) : base (nome, cargo) {
        ValorProjeto = valorProjeto;
    }

}

Interno.cs

namespace Empresa.Modelos;
internal class Interno : Funcionario {
    public decimal Salario {get;}

    public Interno(string? nome, string? cargo, decimal salario) : base (nome, cargo) {
        Salario = salario;
    }
}

Program.cs

using Empresa.Modelos;

Console.Clear();
Freelancer freelancer = new Freelancer ("Roberto", "Programador", 15000m);
Console.WriteLine($"Nome: {freelancer.Nome}");
Console.WriteLine($"Cargo: {freelancer.Cargo}");
Console.WriteLine($"Valor do projeto: R${freelancer.ValorProjeto.ToString("F2")}\n");

Interno interno = new Interno ("Josué", "Gerente", 7300m);
Console.WriteLine($"Nome: {interno.Nome}");
Console.WriteLine($"Cargo: {interno.Cargo}");
Console.WriteLine($"Salário: R${interno.Salario.ToString("F2")}\n");
1 resposta
solução!

Oi, Diego! Como vai?

Agradeço por compartilhar seu código com a comunidade Alura.

Gostei de como você estruturou bem a herança entre Funcionario, Freelancer e Interno, deixando claro o que é comum e o que é específico de cada tipo. Isso mostra um bom entendimento da separação de responsabilidades e do uso correto de construtores com base, o que é um ponto importante nesse tipo de modelagem.

Você pode criar um método comum na classe base para exibir informações, evitando repetição no Program.


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

    public Funcionario(string nome, string cargo) {
        Nome = nome;
        Cargo = cargo;
    }

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

Esse código cria um método reutilizável que pode ser sobrescrito nas classes filhas, deixando o codigo mais organizado e facil de manter.

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