Advertisement
teslariu

oop python

Sep 21st, 2022
1,198
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.01 KB | None | 0 0
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. # Script que simula pagos a empleados
  4.  
  5.  
  6. # importación para manejuar clases abstractas
  7. from abc import ABC, abstractmethod
  8.  
  9.  
  10. class Empleado(ABC):
  11.     # clase abstracta
  12.     def __init__(self, id, nombre):
  13.         self.id = id
  14.         self.nombre = nombre
  15.    
  16.     @abstractmethod
  17.     def calcular_pago(self):
  18.         pass
  19.  
  20.  
  21. class SistemaDePago:
  22.     def calcular_pago(self, empleados):
  23.         print(f"""
  24.        Liquidación de sueldos
  25.        ======================
  26.        """)
  27.         for empleado in empleados:
  28.             print(f"Pago para: {empleado.id} - {empleado.nombre}")
  29.             print(f"- Chequeo de monto: {empleado.calcular_pago()}\n")
  30.  
  31.  
  32. class EmpleadoAsalariado(Empleado):
  33.     def __init__(self, id, nombre, salario_mensual):
  34.         super().__init__(id, nombre)
  35.         self.salario_mensual = salario_mensual
  36.        
  37.     def calcular_pago(self):
  38.         return self.salario_mensual
  39.        
  40.  
  41. class EmpleadoPorHoras(Empleado):
  42.     def __init__(self, id, nombre, horas_trabajadas, valor_hora):
  43.         super().__init__(id, nombre)
  44.         self.horas_trabajadas = horas_trabajadas
  45.         self.valor_hora = valor_hora
  46.        
  47.     def calcular_pago(self):
  48.         return self.horas_trabajadas * self.valor_hora
  49.  
  50.        
  51. class EmpleadoConComision(EmpleadoAsalariado):
  52.     def __init__(self, id, nombre, salario, comision):
  53.         super().__init__(id, nombre, salario)
  54.         self.comision = comision
  55.        
  56.     def calcular_pago(self):
  57.         monto_fijo = super().calcular_pago()
  58.         return monto_fijo + self.comision
  59.  
  60.        
  61. ############################
  62. empleado_abstracto = Empleado(0,"Abstracto")
  63. empleado1 = EmpleadoAsalariado(1,"Juan Alegre",1500)
  64. empleado2 = EmpleadoPorHoras(2,"Ana Garcia",60,15)
  65. empleado3 = EmpleadoConComision(3, "Luisa Gerez", 1200, 900)
  66.  
  67. empleados = [empleado1, empleado2, empleado3]
  68.  
  69. sistema_de_pago = SistemaDePago()
  70.  
  71. sistema_de_pago.calcular_pago(empleados)
  72.  
  73.  
  74.  
  75.  
  76.  
  77.  
  78.  
  79.  
  80.  
  81.  
  82.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement