Solucionado (ver solução)

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!

Solucionado
(ver solução)
1
resposta

Cadastro de Funcionarios - POO

Program.cs

using CadastroFuncionarios;

Interno f1 = new Interno("Luciana", "Desenvolvedora", 7000.00m);
Freelancer f2 = new Freelancer("Carlos", "Designer", 3500.00m);

Console.WriteLine($"Funcionaria: {f1.Nome} - Cargo: {f1.Cargo} - Salario: R$ {f1.Salario}");
Console.WriteLine($"Freelancer: {f2.Nome} - Cargo: {f2.Cargo} - Salario: R$ {f2.ValorProjeto}");

Freelancer.cs

namespace CadastroFuncionarios;

internal class Freelancer : Funcionario
{
    public Freelancer(string nome, string cargo, decimal valorProjeto)
        : base(nome, cargo)
    {
        this.ValorProjeto = valorProjeto;
    }

    public decimal ValorProjeto { get; }
}

Funcionario.cs

namespace CadastroFuncionarios;

internal class Funcionario
{
    public Funcionario(string nome, string cargo)
    {
        this.Nome = nome;
        this.Cargo = cargo;
    }

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

Interno.cs

namespace CadastroFuncionarios;

internal class Interno : Funcionario
{
    public Interno(string nome, string cargo, decimal salario)
        : base(nome, cargo)
    {
        this.Salario = salario;
    }

    public decimal Salario { get; }
}
1 resposta
solução!

Oi, Cauã! Como vai?

Que ótimo ver você praticando orientação a objetos com um projeto de cadastro de funcionários em C#. Compartilhar o código com a comunidade é uma atitude muito bacana e ajuda no aprendizado de todos.

Analisando o seu projeto, é possível notar que você aplicou bem os conceitos fundamentais de herança. As classes Interno e Freelancer herdam corretamente da classe base Funcionario, que concentra os atributos comuns nome e cargo.

O uso do namespace CadastroFuncionarios também está correto, mantendo o código organizado. Cada classe utiliza o modificador internal e define suas propriedades com public get, garantindo o encapsulamento adequado. A classe Freelancer adiciona a propriedade ValorProjeto do tipo decimal, enquanto a classe Interno adiciona a propriedade Salario, também decimal. O uso de this para atribuir os valores no construtor e o sufixo 00m nos literais decimais demonstram atenção aos detalhes da linguagem.

Uma dica interessante para evoluir ainda mais é sobrescrever o método ToString() em cada classe. Com isso, você evita repetir a formatação no Program.cs sempre que precisar exibir os dados de um objeto. Veja um exemplo aplicado à classe Funcionario:

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

Esse método pode ser sobrescrito novamente nas subclasses para incluir informações específicas, como o Salario do Interno ou o ValorProjeto do Freelancer, tornando o código mais limpo e reutilizável.

Continue explorando os pilares da orientação a objetos, você está no caminho certo!

Você já pensou em como poderia aplicar polimorfismo nesse projeto para exibir as informações de cada funcionário de forma ainda mais flexível?

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