Menu
Coddy logo textTech

Repaso - Roles de empleados

Parte de la sección Programación Orientada a Objetos del Journey de Lua de Coddy. Lección 42 de 70.

challenge icon

Desafío

Fácil

¡Construyamos un sistema de bonificaciones de nómina que demuestre cómo diferentes tipos de empleados pueden compartir la misma interfaz y, al mismo tiempo, calcular las bonificaciones de manera diferente!

Crearás una pequeña jerarquía de empleados distribuida en 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 (la bonificación predeterminada para los empleados regulares) y un método :getName() para obtener el nombre.
  • Manager.lua: Una clase hija que hereda de Employee. Los gerentes trabajan duro y reciben una recompensa: sobrescribe :calculateBonus() para que devuelva el 20 % de su salario en lugar del 10 % predeterminado.
  • Intern.lua: Otra clase hija que hereda de Employee. Los becarios reciben una bonificación fija de 50, independientemente de su salario: sobrescribe :calculateBonus() para que siempre devuelva 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, después recórrela e imprime el nombre de cada persona seguido de su bonificación calculada.

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 de tu colección (en el orden: Manager, Intern, Employee), imprime su nombre y su bonificación con 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 :calculateBonus() produce resultados diferentes según el tipo de cada empleado: ¡eso es el polimorfismo en acción! El Manager obtiene el 20 % de 5000, el Intern obtiene una cantidad fija de 50 y el Employee regular obtiene 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')

-- Lee las 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: Crea un Manager, un Intern y un Employee regular

-- TODO: Almacena los tres en una table (en orden: Manager, Intern, Employee)

-- TODO: Recorre la table e imprime el name y el bonus de cada persona
-- Formato: {name}: {bonus}

Todas las lecciones de Programación Orientada a Objetos

Practica por tu cuenta: Compilador de Lua online