Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revision | |
wiki:pac [2024/08/30 08:14] – admin | wiki:pac [2024/08/30 08:15] (current) – admin |
---|
</code> | </code> |
| |
Si mañana tuviéramos que crear una nueva subclase de Aluno, por ejemplo, ''AlumnoDoctorado'', el código de ''calcTotalBecas'' tendría que ser adaptado. Es decir, la función no está preparada para acomodar extensiones (es decir, no está abierta), ni es inmune a cambios en su código (es decir, tampoco está cerrada). | Si mañana tuviéramos que crear una nueva subclase de Alumno, por ejemplo, ''AlumnoDoctorado'', el código de ''calcTotalBecas'' tendría que ser adaptado. Es decir, la función no está preparada para acomodar extensiones (es decir, no está abierta), ni es inmune a cambios en su código (es decir, tampoco está cerrada). |
| |
El Principio Abierto/Cerrado requiere que el diseñador de una clase anticipe sus puntos de extensión. Por ello, no es posible que una clase acomode todos los posibles tipos de extensiones que puedan surgir. Solo aquellos para los que se ofrecen puntos de extensión, ya sea a través de herencia, funciones de orden superior o patrones de diseño. Por ejemplo, la implementación de la clase Collections (en el ejemplo 1) usa un algoritmo de ordenación que es una versión del MergeSort. Sin embargo, los clientes de la clase no pueden alterar ni personalizar este algoritmo, teniendo que conformarse con la implementación por defecto que se ofrece. Por lo tanto, bajo el criterio de personalización del algoritmo de ordenación, el método sort no cumple con el Principio Abierto/Cerrado. | El Principio Abierto/Cerrado requiere que el diseñador de una clase anticipe sus puntos de extensión. Por ello, no es posible que una clase acomode todos los posibles tipos de extensiones que puedan surgir. Solo aquellos para los que se ofrecen puntos de extensión, ya sea a través de herencia, funciones de orden superior o patrones de diseño. Por ejemplo, la implementación de la clase Collections (en el ejemplo 1) usa un algoritmo de ordenación que es una versión del MergeSort. Sin embargo, los clientes de la clase no pueden alterar ni personalizar este algoritmo, teniendo que conformarse con la implementación por defecto que se ofrece. Por lo tanto, bajo el criterio de personalización del algoritmo de ordenación, el método sort no cumple con el Principio Abierto/Cerrado. |