lunes, 1 de febrero de 2016

Métodos abstractos

A diferencia de las propiedades, los métodos, pueden ser abstractos como sucede con las clases.
El Manual Oficial de PHP, se refiere a los métodos abstractos, describiéndolos de la siguiente forma:

[…] “Los métodos definidos como abstractos simplemente declaran la estructura del método, pero no pueden definir la implementación. Cuando se hereda de una clase abstracta, todos los métodos definidos como abstract en la definición de la clase parent deben ser redefinidos en la clase child; adicionalmente, estos métodos deben ser definidos con la misma visibilidad (o con una menos restrictiva). Por ejemplo, si el método abstracto está definido como protected, la implementación de la función puede ser redefinida como protected o public, pero nunca como private.” […]

Para entender mejor los métodos abstractos, podríamos decir que a grandes rasgos, los métodos abstractos son aquellos que se declaran inicialmente en una clase abstracta, sin especificar el algoritmo que implementarán, es decir, que solo son declarados pero no contienen un “código” que específique qué harán y cómo lo harán.
Tal vez, te preguntes ¿Cuál es la utilidad de definir métodos abstractos y clases abstractas? Para responder a esta pregunta, voy enfocarme en un caso de la vida real:

Ejemplo

Se trataba de hacer un sistema de gestión informática, para las farmacias de los Hospitales. Un punto fundamental, era pensar en los insumos farmacéuticos como “un todo abstracto”. ¿Por qué? Fundamentalmente, porque si bien existen insumos farmacéuticos de todo tipo y especie, cada uno de ellos, comparte características comunes, que por sí solas no pueden definirse con precisión. Por ejemplo, todos los insumos farmacéuticos requieren de un tipo de conservación especial. Algunos requieren refrigeración a determinada temperatura que solo puede ser satisfecha conservándolos en una
heladera; otros requieren conservarse en un ambiente seco; otros, no pueden tomar contacto con el exterior, a fin de conservar su capacidad estéril; etc. ¿Podía definirse con exactitud una clase Insumo? La respuesta a esa pregunta, es justamente su pregunta retórica ¿irías a la farmacia a pedirle al farmacéutico “deme un insumo de 500 mg”? Insumo, representa la entidad “abstracta” y para eso, sirven las clases abstractas. Con ellas declaramos aquellos “objetos” que no pueden ser definidos con
presición pero aseguramos allí, todas aquellas características que dichos objetos, guardarán entre sí. Declarar un método conservar_insumo() como abstracto, serviría para luego definir con exactitud, en una clase heredada, el algoritmo exacto que determinado insumo necesitaría para procesar su conservación. Es así entonces, que una clase InsumoRefrigerado heredaría de Insumo, y redefiniría el método conservar_insumo() indicando un algoritmo que solicitara la temperatura a la cual debía conservarse en heladera, etc.

No hay comentarios.:

Publicar un comentario