el barista

software libre, programación, cine, libros… y café

  • lo que más interesa

  • a

  • lo que he escrito

la reutilización de código al descubierto

Publicado por elbarista en 6 Mayo 2007

(este artículo forma parte de una serie dedicada a la programación orientado a objetos con php5.)

una de las grandes ventajas que tiene la POO es la posibilidad de reutilizar código. imagina el siguiente ejemplo: nos encargan diseñar una clase Pedido. después de un tiempo nuestra clase Pedido ya está en producción y funciona correctamente. sin embargo, un día llega el cliente y nos pide que, además de los pedidos normales, también demos soporte a pedidos con algún tipo de descuento.


podemos hacer una de dos cosas: 1) modificar la clase Pedido que ya tenemos, corriendo el riesgo de introducir nuevos errores y “romper” el código de otros programadores que ya están usando nuestra clase; o 2) dejar la clase Pedido como está y crear una nueva clase, llamada PedidoConDescuento, que extienda la funcionalidad de Pedido.

resulta obvio que lo mejor es extender la clase Pedido mediante la herencia. gracias a la herencia, lo único que tendrá que hacer PedidoConDescuento es redefinir (en inglés, override) aquellos métodos que deban funcionar de manera distinta, y/o añadir nuevos métodos para dar soporte a los nuevos requerimientos. los pedidos creados a partir de la clase Pedido seguirán comportándose como antes, mientras que los pedidos creados a partir de la clase PedidoConDescuento dispondrán de la nueva funcionalidad.

otra forma de reutilizar código es llamando a un método de la clase “madre” para utilizar su valor. por ejemplo, PedidoConDescuento podría redefinir el método calcularTotal() de la clase Pedido, para luego llamar al método calcularTotal() de Pedido y aplicarle el descuento al valor obtenido. es lo que podríamos denominar reutilización directa de código.

en resumen, la reutilización de código no sólo nos permite crear programas menos propensos a errores, sino que es fundamental para obtener diseños flexibles y robustos ante posibles cambios de requerimientos.

Escribe un comentario

XHTML: Puedes usar estas etiquetas: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <pre> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>