Gestión De Empleados Y Salarios En Una Empresa En C#

En este ejercicio, crearemos una jerarquía de clases para gestionar a los empleados de una empresa. La clase principal, Empleado, almacenará información básica como nombre, salario y puesto. Contará con métodos para obtener y configurar estos atributos, así como con un método ShowData para mostrar los detalles de los empleados.

Crearemos una subclase llamada Gerente, que heredará de Empleado e incluirá un atributo adicional, bono, que representa el bono del gerente. El método ShowData de Gerente sobrescribirá el método de la clase base para incluir esta información adicional.

Una clase Empresa gestionará varios empleados mediante una lista. Contará con métodos para añadir empleados, eliminarlos y mostrar todos los detalles de los empleados.

El método Principal mostrará cómo crear una empresa, añadir empleados y un gerente, y mostrar sus detalles.



Grupo

Clases avanzadas en C#

Objectivo

1. Cree una clase "Empleado" con los siguientes atributos:

- nombre (cadena)
- salario (doble)
- puesto (cadena)

2. Incluya métodos getter y setter, y un método ShowData.

3. Cree una clase "Gerente" que extienda "Empleado" y añada:

- bono (doble)
- Anule el método ShowData para incluir el bono.

4. Cree una clase "Empresa" para gestionar empleados:

- Almacene a los empleados en una lista.
- Proporcione métodos para añadir, eliminar y mostrar empleados.

5. Implemente el método "Main" para probar la funcionalidad.

Cree una estructura de clase para gestionar empleados y una empresa, implementando la herencia y los principios de la orientación a objetos.

Ejemplo de ejercicio en C#

 Copiar código C#
using System;
using System.Collections.Generic;

// Base class Employee
class Employee
{
    // Attributes for the employee's name, salary, and position
    private string name;
    private double salary;
    private string position;

    // Constructor to initialize employee data
    public Employee(string name, double salary, string position)
    {
        this.name = name;
        this.salary = salary;
        this.position = position;
    }

    // Method to display employee details
    public virtual void ShowData()
    {
        Console.WriteLine($"Employee: {name}, Position: {position}, Salary: {salary} USD");
    }

    // Getters and setters
    public string GetName() => name;
    public double GetSalary() => salary;
    public string GetPosition() => position;

    public void SetSalary(double salary) => this.salary = salary;
}

// Subclass Manager, inherits from Employee
class Manager : Employee
{
    // Additional attribute for the manager's bonus
    private double bonus;

    // Constructor to initialize manager data
    public Manager(string name, double salary, string position, double bonus) 
        : base(name, salary, position)
    {
        this.bonus = bonus;
    }

    // Override ShowData method to include the bonus
    public override void ShowData()
    {
        Console.WriteLine($"Manager: {GetName()}, Position: {GetPosition()}, Salary: {GetSalary()} USD, Bonus: {bonus} USD");
    }

    // Getters and setters for the bonus
    public double GetBonus() => bonus;
    public void SetBonus(double bonus) => this.bonus = bonus;
}

// Company class to manage employees
class Company
{
    // List to store employees
    private List employees = new List();

    // Method to add an employee to the list
    public void AddEmployee(Employee employee)
    {
        employees.Add(employee);
    }

    // Method to display all employees
    public void ShowAllEmployees()
    {
        Console.WriteLine("\nCompany Employees:");
        foreach (var employee in employees)
        {
            employee.ShowData();
        }
    }
}

// Main program
class Program
{
    static void Main()
    {
        // Create a company
        Company company = new Company();

        // Add employees
        company.AddEmployee(new Employee("Alice Johnson", 50000, "Software Engineer"));
        company.AddEmployee(new Employee("Bob Smith", 45000, "Designer"));
        company.AddEmployee(new Manager("Charlie Brown", 70000, "Project Manager", 10000));

        // Display all employees
        company.ShowAllEmployees();
    }
}

 Output

Company Employees:
Employee: Alice Johnson, Position: Software Engineer, Salary: 50000 USD
Employee: Bob Smith, Position: Designer, Salary: 45000 USD
Manager: Charlie Brown, Position: Project Manager, Salary: 70000 USD, Bonus: 10000 USD

Comparte este ejercicio de C#

Practica más ejercicios C# de Clases avanzadas en C#

¡Explora nuestro conjunto de ejercicios de práctica de C#! Diseñados específicamente para principiantes, estos ejercicios te ayudarán a desarrollar una sólida comprensión de los fundamentos de C#. Desde variables y tipos de datos hasta estructuras de control y funciones simples, cada ejercicio está diseñado para desafiarte gradualmente a medida que adquieres confianza en la programación en C#..