Dedicado a mis proyectos en Gambas ,un lenguaje de programación parecido al Visual Basic + Java pero ampliamente mejorado y...¡¡para gnu/linux!!.La potencia del gnu/linux sumada a la facilidad del Basic



Consultas, Desarrollo de programas y petición de presupuestos:



jueves, 5 de diciembre de 2013

Patrón Delegation. Ejemplo: Empleado de Tienda



Patrón  Delegation
 Ejemplo: Empleado de Tienda


Se trata de una técnica en la que un objeto permite mostrar cierto método al exterior, pero internamente la implementación o las acciones desencadenadas por el llamado de este método se delega a otro objeto de una clase distinta pero asociado. La delegación es utilizada como un mecanismo para centralizar en torno a un solo objeto  los compartimentos (métodos) de varios objetos donde dichos comportamientos mantienen cierto nivel de relación.


Utilidad:

  • Cuando se quiere extender y reutilizar la funcionalidad de una clase sin utilizar la herencia.
  • Alternativa a la herencia múltiple, en lenguajes que no la soportan.

Ventajas:

  •  Cuando una clase que hereda de otra quiere ocultar algunos de los métodos heredados
  •  Compartir código que NO se puede heredar

Con herencia Múltiple y Delegación: simulándola con herencia simple y composición
Nota:
Diferencia entre Herencia y Composición: 

  • Herencia:  Debería modelar una relación es-un entre la clase derivada y la clase base.
  • Composición: La relación que modela es un tiene-un y, en general, la composición debe preferirse a la herencia.


Ejemplo:
Tenemos la clase EmpleadoTienda, que es a su vez Persona y Empleado. Podemos representarlo mediante herencia múltiple y también, usando el patrón delegation, con herencia simple :



En gambas3, se haría usando el patrón delegation.

Proyecto:


Clase Trabajador:
->

Clase Persona
->

Clase  EmpleadoDeTienda
Esta clase va a ser herencia de Persona y ademas está compuesta por una objeto de la clase Trabajador. En ella hemos definidos los métodos que llamarán a los métodos de la clase trabajador.

Programa Principal:
->



Pantallazo de la aplicación:



Enlace de descarga del ejemplo: enlace


Fuentes:
http://codejavu.blogspot.com.es/2013/06/ejemplo-patron-delegate.html
 http://siul02.si.ehu.es/~alfredo/iso/06Patrones.pdf
http://es.wikipedia.org/wiki/C%2B%2B#Herencia_simple
http://ingeniods.wordpress.com/2013/09/11/delegation-patron-de-diseno/