Menu
Coddy logo textTech

Repaso - Roles de empleados

Parte de la sección Object Oriented Programming del Journey de Lua de Coddy — lección 42 de 70.

challenge icon

Desafío

Fácil

¡Vamos a construir un sistema de bonos de nómina que demuestre cómo diferentes tipos de empleados pueden compartir la misma interfaz mientras calculan sus bonos de manera diferente!

Crearás una pequeña jerarquía de empleados a través de cuatro archivos:

  • Employee.lua: Tu clase base que representa a un empleado genérico. El constructor :new(name, salary) debe almacenar tanto el nombre del empleado como su salario. Incluye un método :calculateBonus() que devuelva el 10% del salario (el bono por defecto para empleados regulares), y un método :getName() para recuperar el nombre.
  • Manager.lua: Una clase hija que hereda de Employee. Los gerentes trabajan duro y son recompensados: sobrescribe :calculateBonus() para devolver el 20% de su salario en lugar del 10% por defecto.
  • Intern.lua: Otra clase hija que hereda de Employee. Los pasantes reciben un bono fijo de 50 independientemente de su salario: sobrescribe :calculateBonus() para devolver siempre esta cantidad.
  • main.lua: ¡Une todo! Lee tres entradas para los nombres de los empleados y tres entradas para sus salarios. Crea un Manager, un Intern y un Employee regular. Almacena los tres en una tabla, luego recorre la tabla e imprime el nombre de cada persona seguido de su bono calculado.

Recibirás seis entradas:

  1. Nombre del Manager
  2. Salario del Manager
  3. Nombre del Intern
  4. Salario del Intern
  5. Nombre del empleado regular
  6. Salario del empleado regular

Para cada empleado en tu colección (en el orden: Manager, Intern, Employee), imprime su nombre y bono en este formato:

{name}: {bonus}

Por ejemplo, si las entradas son Alice, 5000, Bob, 2000, Carol y 3000, la salida debería ser:

Alice: 1000
Bob: 50
Carol: 300

Observa cómo la misma llamada a :calculateBonus() produce resultados diferentes según el tipo de cada empleado: ¡eso es el polimorfismo en acción! El Manager recibe el 20% de 5000, el Intern recibe un monto fijo de 50 y el Employee regular recibe el 10% de 3000.

Pruébalo tú mismo

-- main.lua: Reúne todo

local Employee = require('Employee')
local Manager = require('Manager')
local Intern = require('Intern')

-- Leer entradas
local managerName = io.read()
local managerSalary = tonumber(io.read())
local internName = io.read()
local internSalary = tonumber(io.read())
local employeeName = io.read()
local employeeSalary = tonumber(io.read())

-- TODO: Crear un Manager, un Intern y un Employee regular

-- TODO: Almacenar los tres en una tabla (en orden: Manager, Intern, Employee)

-- TODO: Recorrer la tabla e imprimir el nombre y el bono de cada persona
-- Formato: {name}: {bonus}

Todas las lecciones de Object Oriented Programming