Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revision | |
wiki:pdd_11 [2025/04/10 12:54] – admin | wiki:pdd_11 [2025/04/10 12:57] (current) – admin |
---|
} | } |
</code> | </code> |
| |
| En este ejemplo, ''calcSalarioLiquido'' es un método template para el cálculo del salario de los empleados. Establece que debemos calcular tres descuentos: para la seguridad social (AFP), para el plan de salud del empleado y otros descuentos. Después de esto, el salario neto es el salario del empleado menos esos tres descuentos. Sin embargo, en la clase Funcionario, aún no sabemos cómo calcular los descuentos, ya que varían según el tipo de empleado (público o CLT). Por lo tanto, se crean métodos abstractos para representar cada uno de esos pasos en la rutina de cálculo de salarios. Como son abstractos, la clase ''Funcionario'' también se declara como abstracta. Como el lector ya debe haber notado, las subclases de Funcionario —como ''FuncionarioPublico'' y ''FuncionarioCLT''— heredarán el método ''calcSalarioLiquido'', que no necesitará ser modificado. Sin embargo, será responsabilidad de las subclases implementar los tres pasos (métodos) abstractos: ''calcDescontosPrevidencia'', ''calcDescontosPlanoSaude'' y ''calcOutrosDescontos''. |
| |
| Los métodos template permiten que el código antiguo llame al código nuevo. En el ejemplo, la clase ''Funcionario'' probablemente fue implementada antes que ''FuncionarioPublico'' y ''FuncionarioCLT''. Por lo tanto, decimos que Funcionario es más antigua que sus subclases. A pesar de esto, Funcionario incluye un método que llamará código nuevo, implementado en las subclases. Este recurso de los sistemas orientados a objetos se llama inversión de control. Es fundamental, por ejemplo, para la implementación de marcos de trabajo (frameworks), es decir, aplicaciones semi-listas que, antes de ser utilizadas, deben ser personalizadas por sus clientes. Aunque no es el único instrumento disponible para este fin, los métodos template constituyen una alternativa interesante para que un cliente implemente el código faltante en un marco de trabajo. |
| |