Menu
Coddy logo textTech

Recapitulação - Hierarquia de Funcionários

Parte da seção Programação Orientada a Objetos do Journey de C# da Coddy — lição 24 de 70.

challenge icon

Desafio

Fácil

Vamos construir um sistema de hierarquia de funcionários que reúne todos os conceitos de herança deste capítulo. Você criará uma estrutura de empresa onde diferentes tipos de funcionários compartilham atributos comuns, mas calculam seus bônus de forma diferente.

Você organizará seu código em quatro arquivos:

  • Employee.cs: Defina a classe base Employee no namespace Company. Todo funcionário tem um Name (string) e Salary (decimal). Crie um construtor que aceite ambos os valores. Adicione um método virtual chamado CalculateBonus() que retorna 10% do salário por padrão. Sobrescreva ToString() para retornar "{Name} - ${Salary}".
  • Manager.cs: Defina uma classe Manager no namespace Company que herda de Employee. Gerentes têm uma propriedade adicional TeamSize (int). O construtor deve aceitar nome, salário e tamanho da equipe, usando base para inicializar o pai. Sobrescreva CalculateBonus() para retornar 15% do salário mais $50 para cada membro da equipe. Sobrescreva ToString() para retornar "{Name} - ${Salary} (Manager, Team: {TeamSize})".
  • Developer.cs: Defina uma classe Developer no namespace Company que herda de Employee. Desenvolvedores têm uma propriedade ProgrammingLanguage (string). O construtor aceita nome, salário e linguagem de programação. Sobrescreva CalculateBonus() para retornar 12% do salário. Sobrescreva ToString() para retornar "{Name} - ${Salary} (Developer, {ProgrammingLanguage})".
  • Program.cs: No seu arquivo principal, crie um de cada tipo de funcionário usando valores de entrada. Armazene os três em um array de referências de Employee para demonstrar polimorfismo. Percorra o array e imprima o resultado do ToString() de cada funcionário seguido pelo seu bônus.

Você receberá seis entradas:

  • Nome do funcionário base
  • Salário do funcionário base
  • Nome do gerente
  • Salário do gerente
  • Tamanho da equipe do gerente
  • Nome do desenvolvedor
  • Salário do desenvolvedor
  • Linguagem de programação do desenvolvedor

Imprima as informações e o bônus de cada funcionário neste formato:

{ToString result}
Bonus: ${CalculateBonus result}

Por exemplo, se as entradas forem John, 50000, Sarah, 80000, 5, Mike, 70000, e C#, a saída deve ser:

John - $50000
Bonus: $5000
Sarah - $80000 (Manager, Team: 5)
Bonus: $12250
Mike - $70000 (Developer, C#)
Bonus: $8400

Observe como cada tipo de funcionário calcula os bônus de maneira diferente, mas você pode processá-los todos por meio de um único array de Employee. Este é o poder de combinar herança com polimorfismo!

Experimente você mesmo

using System;
using Company;

class Program
{
    public static void Main(string[] args)
    {
        // Ler as entradas básicas do funcionário
        string empName = Console.ReadLine();
        decimal empSalary = Convert.ToDecimal(Console.ReadLine());
        
        // Ler as entradas do gerente
        string mgrName = Console.ReadLine();
        decimal mgrSalary = Convert.ToDecimal(Console.ReadLine());
        int teamSize = Convert.ToInt32(Console.ReadLine());
        
        // Ler as entradas do desenvolvedor
        string devName = Console.ReadLine();
        decimal devSalary = Convert.ToDecimal(Console.ReadLine());
        string progLang = Console.ReadLine();
        
        // TODO: Criar um Employee, um Manager e um Developer
        
        // TODO: Armazenar todos os três em um array de Employee para demonstrar polimorfismo
        
        // TODO: Percorrer o array e imprimir o ToString() e o bônus de cada funcionário
        // Formato:
        // {resultado do ToString}
        // Bonus: ${resultado do CalculateBonus}
    }
}

Todas as lições de Programação Orientada a Objetos