Menu
Coddy logo textTech

Resumen: Jerarquía de empleados

Parte de la sección Programación Orientada a Objetos del Journey de C# de Coddy — lección 24 de 70.

challenge icon

Desafío

Fácil

Vamos a construir un sistema de jerarquía de empleados que reúna todos los conceptos de herencia de este capítulo. Crearás una estructura de empresa donde diferentes tipos de empleados comparten atributos comunes pero calculan sus bonificaciones de manera diferente.

Organizarás tu código en cuatro archivos:

  • Employee.cs: Define la clase base Employee en el espacio de nombres Company. Cada empleado tiene un Name (string) y un Salary (decimal). Crea un constructor que acepte ambos valores. Agrega un método virtual llamado CalculateBonus() que devuelva el 10% del salario por defecto. Sobrescribe ToString() para que devuelva "{Name} - ${Salary}".
  • Manager.cs: Define una clase Manager en el espacio de nombres Company que herede de Employee. Los gerentes tienen una propiedad adicional TeamSize (int). El constructor debe aceptar el nombre, el salario y el tamaño del equipo, utilizando base para inicializar al padre. Sobrescribe CalculateBonus() para devolver el 15% del salario más $50 por cada miembro del equipo. Sobrescribe ToString() para que devuelva "{Name} - ${Salary} (Manager, Team: {TeamSize})".
  • Developer.cs: Define una clase Developer en el espacio de nombres Company que herede de Employee. Los desarrolladores tienen una propiedad ProgrammingLanguage (string). El constructor acepta el nombre, el salario y el lenguaje de programación. Sobrescribe CalculateBonus() para devolver el 12% del salario. Sobrescribe ToString() para que devuelva "{Name} - ${Salary} (Developer, {ProgrammingLanguage})".
  • Program.cs: En tu archivo principal, crea uno de cada tipo de empleado utilizando los valores de entrada. Almacena los tres en un arreglo de referencias de Employee para demostrar el polimorfismo. Recorre el arreglo e imprime el resultado del ToString() de cada empleado seguido de su bonificación.

Recibirás seis entradas:

  • Nombre del empleado base
  • Salario del empleado base
  • Nombre del gerente
  • Salario del gerente
  • Tamaño del equipo del gerente
  • Nombre del desarrollador
  • Salario del desarrollador
  • Lenguaje de programación del desarrollador

Imprime la información y la bonificación de cada empleado en este formato:

{ToString result}
Bonus: ${CalculateBonus result}

Por ejemplo, si las entradas son John, 50000, Sarah, 80000, 5, Mike, 70000, y C#, la salida debería ser:

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

Observa cómo cada tipo de empleado calcula las bonificaciones de manera diferente, y aun así puedes procesarlos a todos a través de un único arreglo de Employee. ¡Este es el poder de combinar la herencia con el polimorfismo!

Pruébalo tú mismo

using System;
using Company;

class Program
{
    public static void Main(string[] args)
    {
        // Leer las entradas básicas del empleado
        string empName = Console.ReadLine();
        decimal empSalary = Convert.ToDecimal(Console.ReadLine());
        
        // Leer las entradas del gerente
        string mgrName = Console.ReadLine();
        decimal mgrSalary = Convert.ToDecimal(Console.ReadLine());
        int teamSize = Convert.ToInt32(Console.ReadLine());
        
        // Leer las entradas del desarrollador
        string devName = Console.ReadLine();
        decimal devSalary = Convert.ToDecimal(Console.ReadLine());
        string progLang = Console.ReadLine();
        
        // TODO: Crear un Employee, un Manager y un Developer
        
        // TODO: Almacenar los tres en un arreglo de Employee para demostrar el polimorfismo
        
        // TODO: Recorrer el arreglo e imprimir el ToString() y el bono de cada empleado
        // Formato:
        // {resultado de ToString}
        // Bono: ${resultado de CalculateBonus}
    }
}

Todas las lecciones de Programación Orientada a Objetos