Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python
- # -*- coding: utf-8 -*-
- # Script que simula pagos a empleados
- # importación para manejuar clases abstractas
- from abc import ABC, abstractmethod
- class Empleado(ABC):
- # clase abstracta
- def __init__(self, id, nombre):
- self.id = id
- self.nombre = nombre
- @abstractmethod
- def calcular_pago(self):
- pass
- class SistemaDePago:
- def calcular_pago(self, empleados):
- print(f"""
- Liquidación de sueldos
- ======================
- """)
- for empleado in empleados:
- print(f"Pago para: {empleado.id} - {empleado.nombre}")
- print(f"- Chequeo de monto: {empleado.calcular_pago()}\n")
- class EmpleadoAsalariado(Empleado):
- def __init__(self, id, nombre, salario_mensual):
- super().__init__(id, nombre)
- self.salario_mensual = salario_mensual
- def calcular_pago(self):
- return self.salario_mensual
- class EmpleadoPorHoras(Empleado):
- def __init__(self, id, nombre, horas_trabajadas, valor_hora):
- super().__init__(id, nombre)
- self.horas_trabajadas = horas_trabajadas
- self.valor_hora = valor_hora
- def calcular_pago(self):
- return self.horas_trabajadas * self.valor_hora
- class EmpleadoConComision(EmpleadoAsalariado):
- def __init__(self, id, nombre, salario, comision):
- super().__init__(id, nombre, salario)
- self.comision = comision
- def calcular_pago(self):
- monto_fijo = super().calcular_pago()
- return monto_fijo + self.comision
- ############################
- empleado_abstracto = Empleado(0,"Abstracto")
- empleado1 = EmpleadoAsalariado(1,"Juan Alegre",1500)
- empleado2 = EmpleadoPorHoras(2,"Ana Garcia",60,15)
- empleado3 = EmpleadoConComision(3, "Luisa Gerez", 1200, 900)
- empleados = [empleado1, empleado2, empleado3]
- sistema_de_pago = SistemaDePago()
- sistema_de_pago.calcular_pago(empleados)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement