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 criar 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 na qual diferentes tipos de funcionários compartilham atributos comuns, mas calculam seus bônus de maneiras diferentes.

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 um Salary (decimal). Crie um construtor que aceite ambos os valores. Adicione um método virtual chamado CalculateBonus() que retorne 10% do salário por padrão. Substitua ToString() para retornar "{Name} - ${Salary}".
  • Manager.cs: defina uma classe Manager no namespace Company que herde de Employee. Os gerentes têm uma propriedade adicional TeamSize (int). O construtor deve aceitar nome, salário e tamanho da equipe, usando base para inicializar a classe pai. Substitua CalculateBonus() para retornar 15% do salário mais $50 para cada membro da equipe. Substitua ToString() para retornar "{Name} - ${Salary} (Manager, Team: {TeamSize})".
  • Developer.cs: defina uma classe Developer no namespace Company que herde de Employee. Os desenvolvedores têm uma propriedade ProgrammingLanguage (string). O construtor aceita nome, salário e linguagem de programação. Substitua CalculateBonus() para retornar 12% do salário. Substitua ToString() para retornar "{Name} - ${Salary} (Developer, {ProgrammingLanguage})".
  • Program.cs: no arquivo principal, crie um funcionário de cada tipo usando valores de entrada. Armazene os três em um array de referências Employee para demonstrar o polimorfismo. Percorra o array e imprima o resultado de ToString() de cada funcionário, seguido do 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 deverá 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 ainda assim você pode processá-los todos por meio de um único array de Employee. Esse é 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

Pratique por conta própria: Compilador de C# online