Delegació (programació)

De Viquipèdia
Dreceres ràpides: navegació, cerca


En programació orientada a objectes hi ha dues nocions de Delegació relacionades.

  • La més comuna es refereix a una característica dels llenguatges de programació per despatxar crides als mètodes, definida per Lieberman a la seva memòria del 1986[1]
  • En la seva accepció original, es refereix a un objecte que depèn d'un altre per oferir una determinada funcionalitat.

És interessant que malgrat que la delegació està força estesa, són pocs els llenguatges de programació que l'ofereixen com a alternativa al mecanisme d'herència estàtic. El llenguatge de programació Self incorpora aquesta noció amb els seus encaixos per a pares que són mudables i es fan servir en cerca de mètodes en auto-crides.

Com a característica del llenguatge[modifica | modifica el codi]

La delegació estableix una relació similar a l'herència però entre objectes, en comptes d'entre un tipus i la seva superclasse com és el cas de l'herència.

En el despatx de les crides a mètodes d'un objecte, com a l'herència, és sempre el mètode més específic de l'objecte el que es tria si els dos objectes en tenen amb el mateix nom, i només en cas de manca del mètode, se selecciona el de l'objecte delegat. Sempre és l'entitat originalment receptora de la requesta, el punt de partida de la recerca del mètode, malgrat que hagi passat el control a l'objecte delegat.

La delegació té l'avantatge de tenir lloc en temps d'execució, i afectar només un subconjunt de les entitats d'un tipus. L'Herència d'altra banda s'adreça als tipus i queda restringida al temps de compilació amb l'avantatge de la comprovació estàtica de tipus, cosa que la delegació no admet si no és amb genèrics.

La delegació es podria anomenar "Herència en temps d'execució per a objectes específics".

Pocs llenguatges de programació admeten la "Delegació". Entre les excepcions hi ha:

  • Javascript. Incorpora la delegació en el mecanisme dels Prototipus.
  • Self. Té la noció explícita d' encaixos per a pares, que poden ésser modificats en temps d'execució. En ser més d'un, admet per tant herència multiple. Això comporta un sistema acurat de cerca dels mètodes.
  • Lava de Kniesel utilitza un enllaç explícit de delegació que mai no pot ser Nul.
  • El sistema Snit d'objectes Tcl

Referències[modifica | modifica el codi]

Enllaços externs[modifica | modifica el codi]